Salve,
sto imparando la teoria di basi di dati.
Però ho dei dubbi.
Per la mia convenzione, etichetterò la chiave primaria di ogni tabella con la simbologia "% %", e la
chiave esterna con " *".
1)
Ipotizziamo di avere creato lo schema logico che segue:
squadra(%nome%, anno_fondazione)
collaboratore_allenatore(%cod_fis%, nome, cognome, ruolo, cod_fis*)
allenatore(%cod_fis%, nome, cognome, età, nome*)
presidente(%cod_fis%, nome, cognome, età, nome*)
1a) La tabella "collaboratore_allenatore" contiene il campo "cod_fis*" che costituisce la chiave esterna di qualche altra tabella.
Come si fa a capire se questo campo "cod_fis*" si riferisce alla tabella "allenatore" o alla
tabella "presidente"?
1b) Dove va scritto il vincolo della chiave esterna?
1c) E' obbligatorio ridenominare "cod_fis" presente nella tabella "allenatore" per distinguerlo da
quello omonimo, presente nella tabella "presidente"?
Oppure ciò è lecito, a patto però di inserire in ogni query che coinvolge queste due tabelle,
il collegamento corretto fra la chiave primaria ed esterna?
1d) Ma non è conveniente assegnare le denominazioni diverse ai due campi "cod_fis" omonimi, così da evitare di ripetere ogni volta la ciorrispondenza fra la chiave esterna e la chiave primaria
all'interno di ogni query?
1e) Fra le due entità "squadra" e "presidente" esiste la corrispondenza 1:1.
Alla luce di ciò, è obbligatorio fondere le due tabelle, inserendo ogni campo della tabella "
presidente" dentro alla tabella "squadra"?
Quale delle tre forme normali impone questa fusione?
///////////////////
2)
Ipotizziamo di avere creato lo schema logico che segue:
giocatore(%id_G%, nome, cognome, ruolo, nome*)
squadra(%nome%, anno_fondazione)
allenatore(%nome%, %cognome%, età, nome*)
La tabella "giocatore" contiene la chiave esterna "nome*".
2a) C'è ambiguità nel capire se essa si riferisca al campo "nome" presente nella tabella
"allenatore" o nella tabella "squadra"?
Secondo me no: è evidente che esso si riferisce alla tabella "squadra".
Infatti, se ci si volesse riferire alla tabella "allenatore", allora si dovrebbe cambiare la
tabella "giocatore" in questa neo-forma:
giocatore(%id_G%, nome, cognome, ruolo, nome*, cognome*)
E' corretto ciò?
2b) Cioè è corretto affermare che, se la chiave interna di una tabella è composita, allora anche la
chiave esterna di essa (inserita in un'altra tabella) deve essere composita?
2c)
Ora si consideri invece il campo "nome*" presente nella tabella "allenatore".
C'è ambiguità nel capire se essa si riferisca al campo "nome" presente nella tabella
"giocatore" o nella tabella "squadra"?
Secondo me no: è evidente che esso si riferisce alla tabella "squadra".
Infatti il campo "nome" presente nella tabella "giocatore" non costituisce la chiave primaria, e
pertanto è impossibile che, in un'altra tabella, ci si riferisca a questo campo.
////////////////////////
grazie,