Homepage -> Guida MySQL

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