View Single Post
Old 14-01-2008, 12:07   #10
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da D4rkAng3l Guarda i messaggi
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

Ultima modifica di mad_hhatter : 14-01-2008 alle 12:10.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso