[Basi di dati] Chiavi primarie ed esterne
Vorrei chiedervi in questo schema:
Quali sono le chiavi primarie e le chiavi esterne?
Io penso che le chiavi primarie siano:
Nella relazione Conferenza: Nome, Anno. In Organizzatori dovrebbero essere tutte e tre. In Partecipante: CF, Conferenza ed Anno. Dove CF è il codice fiscale.
Per le chiavi esterne? Io ho pensato che ci siano solo l' attributo Conferenza sia in Organizzatori che in Partecipante che sia chiave esterna, in quanto permette di identificare il nome nella relazione Conferenza.
Potreste correggere gli errori?
Conferenza(Nome, Anno, Luogo, QuotaDiIscrizione)
Organizzatori(CF, Conferenza, Anno)
Partecipante(CF, TitoloTalk, Conferenza, Anno)
Quali sono le chiavi primarie e le chiavi esterne?
Io penso che le chiavi primarie siano:
Nella relazione Conferenza: Nome, Anno. In Organizzatori dovrebbero essere tutte e tre. In Partecipante: CF, Conferenza ed Anno. Dove CF è il codice fiscale.
Per le chiavi esterne? Io ho pensato che ci siano solo l' attributo Conferenza sia in Organizzatori che in Partecipante che sia chiave esterna, in quanto permette di identificare il nome nella relazione Conferenza.
Potreste correggere gli errori?
Risposte
In generale tutto dipende dale condizioni che esistono nella realtà da "modellare".
Possono essere utili queste domande ad esempio:
1) per ogni conferenza possono esserci più organizzatori o uno solo?
2) possono esistere due conferenze con lo stesso nome?
La chiave primaria ha come scopo quello di identificare in modo univoco ogni istanza di un
entità (oppure in modo univoco ogni record se parliamo di tabelle/relazioni).
DI conseguenza ad esempio se la risposta alla domanda (2) è affermativa(a patto che succeda in anni diversi)
allora Nome e Anno formano la chiave primaria. Ma non è l'unica scelta possibile, infatti puoi decidere di aggiungere
un attributo "id" e scegliere questo come chiave primaria.
Per le chiavi esterne, queste si presentano quando tra due entità c'è un' associazione uno a molti.
Per esempio se ogni conferenza può essere organizzata da una sola persona e ogni persona può
organizzare più conferenze. Perciò la chiave esterna "organizzatore" va nella relazione/entità
Conferenza per specificare da chi è stata organizzata.
Non so a che livello sei comunque se c'è qualcosa poco chiara chiedi pure
Possono essere utili queste domande ad esempio:
1) per ogni conferenza possono esserci più organizzatori o uno solo?
2) possono esistere due conferenze con lo stesso nome?
La chiave primaria ha come scopo quello di identificare in modo univoco ogni istanza di un
entità (oppure in modo univoco ogni record se parliamo di tabelle/relazioni).
DI conseguenza ad esempio se la risposta alla domanda (2) è affermativa(a patto che succeda in anni diversi)
allora Nome e Anno formano la chiave primaria. Ma non è l'unica scelta possibile, infatti puoi decidere di aggiungere
un attributo "id" e scegliere questo come chiave primaria.
Per le chiavi esterne, queste si presentano quando tra due entità c'è un' associazione uno a molti.
Per esempio se ogni conferenza può essere organizzata da una sola persona e ogni persona può
organizzare più conferenze. Perciò la chiave esterna "organizzatore" va nella relazione/entità
Conferenza per specificare da chi è stata organizzata.
Non so a che livello sei comunque se c'è qualcosa poco chiara chiedi pure

Mh....si diciamo che penso di avere capito come funziona, però ho sempre dei dubbi quando svolgo un esercizio.
Diciamo....in un compito in cui è richiesto di identificare chiavi primarie ed esterne tu quanti errori trovi nel mio svolgimento?
Io pensavo che come chiave esterna ci fosse sia in Organizzatori che un Partecipante l' attributo Conferenza perchè da entrambe le relazioni con quell' attributo posso sapere il nome di una Conferenza....
Diciamo....in un compito in cui è richiesto di identificare chiavi primarie ed esterne tu quanti errori trovi nel mio svolgimento?
Io pensavo che come chiave esterna ci fosse sia in Organizzatori che un Partecipante l' attributo Conferenza perchè da entrambe le relazioni con quell' attributo posso sapere il nome di una Conferenza....
Per le tabelle "Organizzatori" e "Partecipanti" posso dirti che è sufficiente prendere CF come chiave primaria, dato che non esistono due persone con lo stesso codice fiscale 
Per le chiavi esterne invece, per come hai strutturato le tabelle significherebbe che a ognuno può partecipare a una sola
conferenza (associazione uno a molti) e ognuno può organizzare una sola conferenza.
EDIT: di solito comunque la traccia dell' esercizio fornisce indicazioni sui legami tra le varie entità
e quindi sulla base di queste si stabilisce se tra ogni coppia di entità c'è un' associazione 1 a molti
(chiamata anche 1 a N) oppure molti a molti (chiamata anche N a N)

Per le chiavi esterne invece, per come hai strutturato le tabelle significherebbe che a ognuno può partecipare a una sola
conferenza (associazione uno a molti) e ognuno può organizzare una sola conferenza.
EDIT: di solito comunque la traccia dell' esercizio fornisce indicazioni sui legami tra le varie entità
e quindi sulla base di queste si stabilisce se tra ogni coppia di entità c'è un' associazione 1 a molti
(chiamata anche 1 a N) oppure molti a molti (chiamata anche N a N)