|
Home -> Manuali e Tutorials -> Guida MySQL Database -> Relazioni
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
Modelli Relazionali
La rappresentazione dei dati nel modello logico relazionale è basata sul concetto di relazione; per comodità di rappresentazione, conviene rappresentare tale relazione sotto forma di tabella, che indicherà quindi un'associazione tra i dati. Nella definizione di una tabella va sempre fissata una chiave primaria, che in genere è messa sul campo ID. Le relazioni vengono poi assegnate stabilendo anche una chiave secondaria, che ha il ruolo di collegare una tabella ad un'altra.
Relazione 1:1
| Tabella "Nazioni" |
| ID |
Nome |
| 1 |
Austria |
| 2 |
Francia |
| 3 |
Italia |
|
| Tabella "Capitali" |
| ID |
Nome |
ID_Nazione |
| 1 |
Roma |
3 |
| 2 |
Vienna |
1 |
| 3 |
Parigi |
2 |
|
Ho messo così in relazione le capitali con le nazioni nella tabella "Capitali"; avrei potuto, in alternativa, anche inserire un campo ID_Capitale nella tabella "Nazioni". Questo tipo di relazione è detta 1:1 visto che ad ogni Nazione corrisponde una sola Capitale.
create table Nazioni (
ID int primary key auto_increment,
Nome varchar(30)
);
|
create table Capitali (
ID int primary key auto_increment,
Nome varchar(30),
ID_Nazione int
);
|
Relazione 1:n
| Tabella "Contatti" |
| ID |
Nome |
Cognome |
| 1 |
Andrea |
Susi |
| 2 |
Simone |
Rizzo |
| 3 |
Antonio |
De Paolis |
|
| Tabella "Telefoni" |
| ID |
Telefono |
ID_Persona |
| 1 |
06681164 |
1 |
| 2 |
08422021 |
3 |
| 3 |
339125887 |
1 |
| 4 |
3292788987 |
2 |
|
Per creare tale relazione, devo inserire nella tabella "Telefoni" il campo di relazione ID_Persona. Qui, a differenza della relazione 1:1, non potrei scrivere le relazioni in altro modo. E' detta 1:n visto che ad ogni Persona possono corrispondere più di un Telefono.
E' utile vedere ora come fare delle Query incrociate; ad esempio, quale è il numero di telefono di Antonio De Paolis??
select Telefono from Telefoni,Contatti where Contatti.ID=Telefoni.ID_Persona and Contatti.Nome='Antonio' and Contatti.Cognome='De Paolis'; |
Contatti.ID=Telefoni.ID_Persona rappresenta il criterio di correlazione tra le due tabelle richiamate dalla select. Contatti.ID serve per riferirsi al campo ID della Tabella "Contatti".
Relazione n:n
| Tabella "Prodotti" |
| ID |
Prodotto |
| 1 |
poltrona |
| 2 |
televisore |
| 3 |
letto singolo |
| 4 |
letto matrimoniale |
| 5 |
video-registratore |
|
| Tabella "Fornitori" |
| ID |
Ditta |
| 1 |
Foppa Pedretti |
| 2 |
Sony |
| 3 |
Philips |
| 4 |
Bassetti |
|
Per effettuare una relazione n:n, nel senso che ad ogni prodotto corrispondono n fornitori, e viceversa, si deve costruire una tebella di relazione contenente solo gli ID delle due tabelle:
| Tabella "Relazione" |
| ID_Prodotti |
ID_Ditta |
| 1 |
1 |
| 2 |
2 |
| 2 |
3 |
| 3 |
4 |
| 4 |
4 |
| 5 |
2 |
| 5 |
3 |
|
Torna su | Indice Guida | Pagina << 12 >>
|