Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    dubbio creazione tabelle mysql con foreign key

    ciao a tutti avevo un piccolo dubbio.
    devo creare delle tabelle con un campo che č foreign key rispetto a un'altra tabella, piccolo esempio:

    Codice PHP:
    # --------------------------------------------------------
    #
    # Table structure for table 'users'
    #
    CREATE TABLE users (
       
    user_id mediumint(8NOT NULL auto_increment,
       
    username varchar(50NOT NULL,
       
    user_password varchar(32NOT NULL,
       
    PRIMARY KEY (user_id)
    TYPE=INNODB;


    # --------------------------------------------------------
    #
    # Table structure for table 'news'
    #
    CREATE TABLE news (
       
    news_id mediumint(8UNSIGNED NOT NULL auto_increment,
       
    news_time INT(11) DEFAULT '0' NOT NULL,
       
    news_userid varchar(50),
       
    news_type varchar(20NOT NULL,
       
    news_subject char(60),
       
    news_text text,
       
    PRIMARY KEY (news_id),
       
    FOREIGN KEY (news_useridREFERENCES users(user_id)
    TYPE=INNODB;



    # --------------------------------------------------------
    #
    # Table structure for table 'articoli'
    #
    CREATE TABLE articoli (
       
    articolo_id mediumint(8UNSIGNED NOT NULL auto_increment,
       
    articolo_time INT(11) DEFAULT '0' NOT NULL,
       
    articolo_userid varchar(50),
       
    news_type varchar(20NOT NULL,
       
    articolo_subject char(60),
       
    articolo_text text,
       
    PRIMARY KEY (articolo_id),
       
    FOREIGN KEY (articolo_useridREFERENCES users(user_id)
    TYPE=INNODB
    Il funzionamento č banale: la tabella utenti contiene tutti gli utenti e gli articoli hanno un "riferimento" all'utente che l'ha scritto.
    Ho letto in vari tutorial, che per usare foreign key bisogna usare tabelle di tipo innodb, ma scuriosando in altre tabelle (p.e. del forum phpbb) vedo che non sono usati reference key.
    domanda: il database di per sč č molto piccolo: nell'odinde di qualche decina di utenti e del centinaio di news/articoli quindi non ci sarebbero grossi problemi prestazionali a fare join di tabelle, ma mi chiedo: č davvero necessario usare foreign key?
    Altra cosa sono le date, inizialemente avevo messo il campo che deve contenere la data come DATE_FORMAT, ma sempre "scopiazzando" da phpbb ho visto che le date sono memorizzate come interi INT(11) e sinceramente non ne capisco l'utilitą immediata.

    Ringrazio a chi sappia chiarire i miei dubbi
    bhq.it: un ennesimo inutile forum.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    442
    le tabelle e le chiavi vanno bene e questa č una query che ti mostra per ogni utente i suoi articoli

    $sql = "SELECT u.users,
    GROUP_CONCAT(CONCAT_WS('',p.articolo_time ,p.news_type,z.articolo_subject,x.articolo_text) ORDER BY b.articolo_userid SEPARATOR '
    ') articoli
    FROM articoli p
    LEFT JOIN users u ON a.articolo_userid = c.user_id
    GROUP BY a.articolo_userid
    ORDER BY c.users";


    poi adesso ti spigo perchč probabilmente č piu sicuro un campo numerico che un date_format

    un campo date format lo puoi trovare o cosi 5/8/07 o cosi 5-8-07
    raggionando sul primo caso tra i numeri ci sono slash che hacker o malintenzionati potrebbero togliere o aggiungere; invece se numerico č piu controllato nel senso che probabilmente nel sito ti viene richiesto separatamente di inserire o scegliere girno mese anno
    quindi prima dell'inserimento in db si controlla che sia numerico ed č piu manegevole se devi passare o solo il giorno o solo il mese o solo l'anno ad altre pagine nel senso che con il date_format avresti bisogno di fare qualche explode od altro per tirar fuori il numero desiderato.
    saluti luigi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.