Quote:
Originariamente inviato da D4rkAng3l
booo io questa sintassi l'ho trovata su un libro chiamato MySql Tutorial edito da Pearson Education Italia.
La cosa della chiave esterna che fà parte della chiave primaria di un'altra tabella invece l'ho trovata sull'Atzeni della McGrowHill e invece credo sia giusta.
Immagina di avere due tabelle: STUDENTE ed UNIVERSITA'.
La prima rappresenta tutti gli studenti e la seconda le università e magari sono fatte così:
STUDENTE(matricola, nome, cognome, dataDiNascita, nomeUniversità)
UNIVERSITA'(nome, città, indirizzo)
Ora se la chiave di STUDENTE fosse solo la matricola si potrebbe avere l'indesiderabile situazione che:
0123, Mario, Rossi, 12/07/1982, Sapienza
0123, Luca Bianchi 21/01/1984, Tor Vergata
in pratica se è solo il campo matricola ad idenditifarmi le righe sono fregato perchè potrei avere due studenti di università diverse che hanno lo stesso numero di matricola.
Se invece faccio essere la chiave esterna nomeUniversità pescato dalla tabella UNIVERSITA' parte della chiave della tabella STUDENTE allora ogni riga di studente sarà identificata sia dalla matricola, sia dal nome dell'università e la situazione:
0123, Mario, Rossi, 12/07/1982, Sapienza
0123, Luca Bianchi 21/01/1984, Tor Vergata
è perfattamente risolta in quanto i due studenti vengono identificati rispettivamente da 0123 Sapienza e 0123 Tor Vergata. Di questo ne son praticamente certo :-)
Ciao
Andrea
|
attenzione!
l'atzeni l'ho usato e non credo abbia scritto una idiozia del genere... riporta il pezzo per favore, così vediamo di capirci...
quello postato da te è UN esempio particolare, ma la teoria non impone assolutamente che la chiave esterna faccia parte della chiave primaria della relazione referente (ovviamente deve invece costituire chiave per la relazione riferita). PUO' farne parte è ben diverso da DEVE farne parte.
quanto alla sitassi... se l'hai letta su un testo intitolato MySql blabla non è il testo migliore per cercare info sullo standard sql: mysql è semplicemente un dbms e in quanto tale utilizza UNA implementazione dello standard sql