martedì 3 dicembre 2024
BASI DI DATI - MODELLO RELAZIONALE
Cos’è il modello relazionale?
Proposto da E. F. Codd nel 1970 per favorire l’indipendenza dei dati,
disponibile in DBMS reali a partire dagli anni ‘80
Si basa su due concetti: il concetto matematico di relazione, proprio
della teoria degli insiemi ed il concetto intuitivo di tabella, le relazioni
hanno naturale rappresentazione per mezzo di tabelle.
E’ importante che ci sia una separazione tra il livello logico e il livello
sico,in particolare deve essere possibile interagire con il livello logico
senza conoscere i dettagli del livello sico (indipendenza sica).
I modelli preesistenti il modello relazionale (gerarchico e reticolare) non
garantivano l’indipendenza dei dati, in quanto includevano riferimenti
alla struttura realizzativa (uso di puntatori).
Relazioni
- Caso R2. Siano D1 e D2 due insiemi, il prodotto cartesiano D1×D2 di
D1 e D2: è l’insieme di tutte le coppie ordinate (v1,v2), tali che v1 è un
elemento di D1 e v2 è un elemento di D2, viene indicato come: D1 ×
D2 ={ (v1,v2) | v1∈ D1, v2 ∈ D2}. Una relazione (matematica) su D1 e
D2 è un sottoinsieme di D1×D2.
- Caso Rn. D1,D2,…Dn (n insiemi anche non distinti), il prodotto
cartesiano D1×D2 × …×Dn di D1,D2,…Dn è l’insieme di tutte le n-ple
ordinate (v1,v2,…,vn), tali che vi è un elemento di Di (i=1,2,…,n); viene
indicato come D1 × D2 ×…× Dn ={ (v1,v2,…,vn) | v1∈D1, v2∈D2,…,vn
∈ Dn}. Una relazione (matematica) su D1, D2,…,Dn è un sottoinsieme
di D1 × D2 ×…× Dn
Le relazioni possono essere rappresentate facilmente sotto forma
tabellare; ogni colonna rappresenta uno degli n domini Di, ogni riga
rappresenta un elemento della relazione
Esempio: A = {1,2,4}, B={a,b}
A × B = { (1,a),(1,b),(2,a),(2,b),(4,a),(4,b)}. Una possibile relazione su A e
B è {(1,a),(2,a) (4,a)}
1
fi
fi
fi
1 A
1 B 1 A
2 A 2 A
2 B 4 A
4 A
4 B
Una relazione matematica è un insieme di n-uple ordinate (d1,…, dn) tali
che d1∈D1, …, dn ∈ Dn
una relazione è un insieme; quindi dove non c'è ordinamento fra le n-
uple; le n-uple sono distinte e ciascuna n-upla è ordinata, ovvero l’ i-
esimo valore proviene dall’ i-esimo dominio.
La proprietà delle relazioni di essere ordinate è una caratteristica non
soddisfacente quando vogliamo usare una relazione per rappresentare i
dati
È preferibile avere una notazione non posizionale, in cui ciascun dato
possa essere identi cato indipendentemente dalla propria posizione
nella n-pla; possiamo ottenere una notazione non posizionale
associando a ciascun dominio su cui è de nita la relazione, un nome
(attributo) che ne descrive il “ruolo
SQ.CASA SQ.OSPITE RETI CASA RETI OSPITE
Juventus Lazio 3 1
Lazio Milan 2 0
Juventus Roma 1 2
Roma Milan 0 1
De niamo una funzione Dom: X → D che associa ad ogni attributo A ∈ X
un dominio DOM(A) ∈ D
Una tupla su un insieme di attributi X è una funzione t che associa a
ciascun attributo A ∈ X un valore del dominio DOM(A) ∈ D.
t[A] denota il valore della tupla t sull’attributo A
Una relazione su X è un insieme di tuple su X
La di erenza tra questa de nizione di relazione e la precedente
(relazione matematica) sta nella di erenza tra ennupla e tupla:
- In una n-pla gli elementi sono individuati per posizione
- In una tupla gli elementi sono individuati per mezzo degli attributi
2
fi
ff
fi
fi
ff
fi
Grazie a questa notazione in una tabella che rappresenta una relazione
l’ordinamento tra le righe etra le colonne è irrilevante.
Una istanza di relazione su uno schema R(X) è un insieme r di tuple su
X
Una istanza di base di dati su uno schema R= {R1(X1), ..., Rn(Xn)}:
insieme di relazioni r = {r1,..., rn} (con ri istanza di relazione su Ri)
MATRICOLA COGNOME NOME DATA DI NASCITA
6554 Rossi Mario 5/12/1978
8765 Neri Paolo 3/11/1976
9283 Verdi Luisa 12/11/1979
3456 Rossi Maria 1/2/1978
Informazione Incompleta
ll modello relazionale impone ai dati una struttura rigida:le informazioni
sono rappresentate per mezzo di tuple, solo alcuni formati di tuple sono
ammessi: quelli che corrispondono agli schemi di relazione
Però i dati disponibili POSSONO NON corrispondere al formato previsto
NOME SECONDO NOME COGNOME
Franklin Dedelano Roosevelt
Charles Churchill
Josip De Gaulle
Non conviene (anche se spesso si fa) usare valori del dominio (0, stringa
nulla, “99”, ...): potrebbero non esistere valori “non utilizzati” che
potrebbero diventare signi cativi; proprio per questo motivo in fase di
utilizzo (nei programmi) sarebbe necessario ogni volta tener conto del
“signi cato” di questi valori.
Si adotta una tecnica rudimentale ma e cace: l‘utilizzo del valore
nullo: denota l’assenza di un valore del dominio (e non è un valore del
dominio)
t[A], per ogni attributo A, è un valore del dominio Dom(A) oppure il
valore nullo NULL
Si possono (e debbono) imporre restrizioni sulla presenza di valori nulli
3
fi
fi
ffi
Vincoli di integrità
Esistono istanze di basi di dati che, pur sintatticamente corrette, non
rappresentano informazioni possibili per l’applicazione di interesse.
I vincoli di integrità sono delle proprietà che devono essere soddisfatte
dalle istanze che rappresentano informazioni corrette per l’applicazione
Un vincolo è una funzione booleana (un predicato): associa ad ogni
istanza il valore vero o falso.
Esistono diversi tipi di vincoli:
- Vincoli intrarelazionali, sono de niti su una singola relazione.
Possiamo ulteriormente distinguere: vincoli di tupla (valutabili su
ciascuna tupla) e vincoli su valori/dominio (valutabili su un singolo
valore)
- Vincoli interrelazionali: sono de niti su più relazioni
Esempio di vincoli di integrità
STUDENTE VOTO LODE CORSO
276545 32 No 1
276545 30 Si 2
787643 27 Si 3
739430 24 No 4
MATRICOLA COGNOME NOME
Vincolo di dominio:
(Voto ≥ 18) AND (Voto ≤ 30) 276545 Rossi Mario
787643 Neri Piero
Vincolo di tupla:
739430 Bianchi Luca
(Voto = 30) OR NOT (Lode=“Sì”)
Una chiave è un insieme di attributi che identi cano le tuple di una
relazione.
Un insieme K di attributi è superchiave per un‘istanza di relazione r se
r NON contiene due tuple distinte t1 e t2 con t1[K] = t2[K]
Un insieme K è chiave per r se è una superchiave minimale per r
(cioè non contiene un’altra superchiave)
4
fi
fi
fi
Nell’esempio precedente Matricola è chiave, è superchiave, contiene un
solo attributo, dunque è superchiave minimale
TEOREMA ESISTENZA DELLA CHIAVE: Una relazione non può
contenere tuple distinte ma uguali.
Ogni relazione ha come superchiave l’insieme degli attributi su cui è
de nita e quindi ha (almeno) una chiave.
La presenza di un vincolo di chiave garantisce l’esistenza di un insieme
di attributi (quelli che formano la chiave) che consentono di identi care
univocamente le tuple della relazione.
La presenza delle chiavi garantisce quindi l’accessibilità a ciascun dato
della base di dati
Le chiavi permettono di correlare i dati in relazioni diverse: il modello
relazionale è basato su valori.
In presenza di valori nulli, i valori della chiave non permettono:
di identi care le tuple e di realizzare facilmente i riferimenti ad altre
relazioni
Integrità referenziale
Informazioni in relazioni diverse sono correlate attraverso valori comuni
In particolare, valori delle chiavi (primarie), le correlazioni debbono
essere “coerenti”.
Un vincolo di integrità referenziale (“foreign key”) fra gli attributi X di
una relazione R1 e un’altra relazione R2 impone ai valori su X in R1
di comparire come valori della chiave primaria di R2
INFRAZIONI
CODICE DATA VIGILE PROV NUMERO
34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295 TO E39548
64521 5/4/96 3295 PR 839548
73321 5/2/98 9345 PR 839548
AUTO
PROV NUMERO COGNOME NOME
MI 39548K Rossi Mario
TO E39548 Rossi Mario
PR 839548 Neri Luca
5
fi
fi
fi
I vincoli di Integrità referenziale giocano un ruolo fondamentale nel
concetto di “modello basato su valori.”
In presenza di valori nulli i vincoli possono essere resi meno restrittivi
Attenendosi rigorosamente alla de nizione un attributo sottoposto a
vincolo di integrità referenziale non dovrebbe poter assumere valori nulli
In alcuni casi è però ragionevole ammettere la presenza di valori nulli
anche in corrispondenza di attributi sottoposti a vincolo di integrità
referenziale
I DBMS o rono la possibilità di speci care delle azioni compensative
che devono essere intraprese quando si veri ca una violazione di un
vincolo di integrità referenziale a seguito di una modi ca/cancellazione
Supponiamo di cancellare Neri Luca dalla tabella AUTO dell’ex prec.,
allora di conseguenza verranno cancellate le righe riguardanti Neri Luca
nella tabella INFRAZIONI
6
ff
fi
fi
fi
fi