Modello Relazionale

Transcript

Modello Relazionale
Modello Relazionale
Il modello relazionale dei dati e stato introdotto da Codd
nel 1970 (E.F. Codd, \A relational model of data for large
shared data banks", Comm. of the ACM, 1970) ed e basato
sul concetto matematico di relazione.
Dominio : insieme di valori D = fv1; v2; : : : ; vkg
Tupla :
Dati n domini D1; D2; : : : ; Dn, non necessariamente
distinti una ennupla (tupla) ordinata e denita come
t = (v1; v2; : : : ; vn); vi 2 Di; 81 i n
Prodotto Cartesiano :
Il prodotto cartesiano di n domini D1; D2; : : : ; Dn, non
necessariamente distinti, indicato con D1 D2 : : : Dn,
e l'insieme di tutte le tuple t su D1; D2; : : : ; Dn.
Relazione :
Una relazione R su n domini D1; D2; : : : ; Dn, non necessariamente distinti, e un sottoinsieme del prodotto
cartesiano D1 D2 : : : Dn:
R D1 D2 : : : Dn
Il valore di n viene chiamato Grado della relazione
1
Il numero di tuple viene chiamata Cardinalita della
relazione
Esempi :
D1 = fv11; v12g
D1 D2
D2 = fv21; v22; v23g
=
f(v11; v21); (v11; v22); (v11; v23);
v12; v21); (v12; v22); (v12; v23)g
R1 = f(v11; v21); (v11; v22)g R2 = fg
R3 = f(v11; v21); (v11; v22); (v12; v21); (v12; v22)g
Rappresentazione di relazioni :
Una relazione viene rappresentata generalmente tramite
una tabella con un numero di righe pari alla cardinalita e
un numero di colonne pari al grado
R3
v11
v11
v12
v12
v21
v22
v21
v22
2
Schema ed Istanza
Attributo : Nome dato ad un dominio in una relazione
si ottiene l'indipendenza dall'ordinamento dei domini
si attribuisce signicato ai valori del dominio
Schema di relazione :
Uno schema di relazione e una coppia costituita dal nome
della relazione R e da un insieme di nomi degli attributi
X = (A1; A2; : : : ; An), indicato con R(X ).
Dato uno schema R(X ) si dice anche che lo schema della
relazione R e X .
} I nomi degli attributi Ai devono essere tutti diversi.
Istanza di relazione :
Una istanza di relazione o relazione su uno schema
R(A1; A2; : : : ; An) e un insieme r di tuple su
A ; A2; : : : ; An)
( 1
3
Schema di base di dati :
E un insieme di schemi di relazioni R
fR1(X1); R2(X2); : : : ; Rn(Xn)g
=
Tutti i nomi di relazione Ri devono essere dierenti.
Istanza di base di dati :
Dato uno schema di base di dati R =
fR1(X1); R2(X2); : : : ; Rn(Xn)g, una istanza su R e un
insieme di relazioni
r
=
fr1; r2; : : : ; rng; dove ri e una relazione su Ri;
81 i n
} Dierenza tra tabella (usata nei DMBS) e relazione
Righe duplicate vs tuple distinte
Notazione :
} Insieme di attributi : Un insieme di attributi Y dello
schema R(X ), cioe Y X , puo essere denotato anche
con R:Y
A denota fAg, XY denota fX g [ fY g,
} Tuple : Data una tupla t su R(X ), un attributo A 2 X
e un sottoinsieme Y X
t[A], oppure t:A, denota il valore di t su A
t[Y ], denota la sottotupla di t ottenuta considerando i
valori degli attributi in Y
4
Esempio
Schema di base di
dati :
DB UNIVERSITA = f
STUDENTE(MATR, NOME, CITT
A, ACORSO)
CORSO(CODICE, NOME, CODDOC)
DOCENTE(CODICE, CF, CITT
A)
FREQUENZA(MATR, CODCOR) g
Istanza di base di dati :
STUDENTE
CORSO
MATR
NOME
CITT
A
ACORSO
M1
M2
Marco Quaranta
Giacomo Tedesco
SA
PA
1
2
M3
M4
Maria Mei
Ugo Rossi
BO
MO
1
2
M5
M6
Sara Neri
Agata Verdi
MO
MI
2
1
CODICE
NOME
CODDOC
C1
C2
Fisica 1
Analisi Matematica 1
D1
D2
C3
C4
Fisica 2
Analisi Matematica 2
D1
D2
C5
Meccanica Razionale
D4
5
DOCENTE
FREQUENZA
CODICE
CF
CITT
A
D1
D2
CF1
CF2
MO
BO
D3
CF3
MO
D4
CF4
FI
MATR
CODCOR
M1
M1
C1
C3
M2
M2
C1
C2
M3
M3
C1
C2
M3
M3
C3
C4
6
Chiavi
} Informalmente, per chiave di una relazione si intende un
sottoinsieme dei suoi attributi che identica unicamente
ogni tupla della relazione stessa.
} Dato uno schema di relazione R(X ), un sottoinsieme di
attributi K X e detto chiave dello schema di relazione
R(X ) se e solo se per ogni relazione r su R(X ) valgono
le seguenti proprieta:
1. Univocita : 8t1; t2 2 r; K [t1] = K [t2] =) t1 t2
cioe, non esistono due tuple distinte di r con lo stesso
valore della chiave
2. Minimalita : 8Ai 2 K; K , Ai non verica la proprieta
1.
cioe, non esiste un sottoinsieme proprio di K con la
proprieta di univocita.
} Un insieme di attributi Y X che contiene in modo
stretto una chiave K , Y K , e detto superchiave dello
schema di relazione R(X ).
In altri termini, una superchiave soddisfa solo la proprieta
1. di Univocita.
7
} Per ogni schema di relazione R(X ), l'insieme X e una
superchiave in quanto una relazione, essendo un insieme,
contiene tuple distinte.
Quindi, ogni schema di relazione R(X ) ha almeno una
chiave.
} Uno schema R(X ) puo avere piu chiavi dette chiavi
candidate
Tra le chiavi candidate ne viene scelta una detta chiave
primaria
Le rimanenti chiavi vengono dette chiavi alternative
Notazione :
} La chiave primaria di uno schema R(X ) si indica sottolineando gli attributi che la compongono:
R(K1; K2; : : : ; Km; A2; : : : ; An)
} Una chiave alternativa di uno schema R(X ) e riportata di seguito allo schema, contraddistinta dalla parola
chiave AK:
R (X )
AK: K1; : : : Km
Esempio :
DOCENTE (CODICE, CF, CITT
A)
AK: CF
8
Valori nulli e Vincolo di Entity Integrity
Valori nulli :
Ogni dominio di relazione viene esteso con un particolare valore, detto valore nullo e denotato con null, che
rappresenta assenza di informazione. In questo modo e
possibile introdurre nelle relazioni anche tuple in cui il
valore di uno o piu attributi non e disponibile.
} Ad esempio, con riferimento allo schema di relazione
DOCENTE (CODICE, CF, NOME, CITTA DI NASCITA)
si possono elencare vari casi in cui si deve inserire nella
relazione DOCENTE una tupla il cui valore di un attributo
non e disponibile:
CITTA DI NASCITA del docente e sconosciuto
il CF non e previsto per docenti di determinati paesi
. . .
} Il gruppo di standardizzazione ANSI (American National Standard Institute) ha specicato 14 diverse
interpretazione per il valore null.
} Nei sistemi relazionali e possibile specicare se un
attributo puo o meno assumere il valore null.
Vincoli di Integrita :
I vincoli (o regole) di integrita stabiliscono condizioni di
correttezza delle informazioni nella base di dati.
} La stessa dichiarazione di chiave K di uno schema di
relazione R e una dichiarazione di vincolo di integrita
in quanto stabilisce l'univocita dei valori assunti dagli
attributi di K .
9
} In presenza di valori nulli, non sarebbe quindi possibile
controllare l'univocita dei valori assunti dagli attributi di
una chiave. Per questo motivo viene imposto il seguente
vincolo.
Vincolo di Entity Integrity :
Tale vincolo stabilisce che gli attributi che costituiscono
la chiave primaria di una relazione non possono assumere
valore nullo.
} Formalmente, un'istanza r di uno schema di relazione R con chiave primaria K1; K2; : : : ; Km,
R(K1; K2; : : : ; Km; A2; : : : ; An), soddisfa il vincolo di
Entity integrity se e solo se
8t 2 r; t[Ki] 6= null; 81 i m
10
Vincolo di Integrita Referenziale
} Nel Modello Relazionale, i riferimenti tra le tuple delle
relazioni vengono stabiliti tramite i valori assunti dagli
attributi nelle tuple.
Il vincolo di integrita referenziale assicura che quando in
una tupla si utilizza il valore di un attributo per riferirsi
ad un'altra tupla, quest'ultima sia una tupla esistente.
} Dato uno schema di base di dati R un vingolo di integrita
referenziale viene dichiarato specicando:
Foreign Key o Chiave Esterna :
insieme di attributi FK = fFK1; FK2; : : : ; FKng di
uno schema di relazione R1 2 R
Chiave della Relazione riferita :
schema di relazione R2 2 R, non necessariamente distinto da R1, con una chiave K = fK1; K2; : : : ; Kmg,
con m = n.
11
} Informalmente, un'istanza r = fr1; r2; : : :g su R soddisfa
il vincolo di integrita referenziale se i valori sulla foreign
key FK di ciascuna tupla di r1 sono valori della chiave K
di r2, o sono valori nulli.
} Formalmente, un'istanza r = fr1; r2; : : :g su R, soddisfa il
vincolo di integrita referenziale se e solo se 8t1 2 r1
t1[FKi] = null_9t2 2 r2 : t1[FKi] = t2[Ki]; 81 i n
Notazione :
R1(X )
FK: FK1; : : : FKn REFERENCES R2(K1; : : : Kn)
Se K1; : : : Kn e la chiave primaria di R2 puo essere
omessa:
FK: FK1; : : : FKn REFERENCES R2
Esempio :
CORSO (CODICE, NOME, CODDOC)
FK: CODDOC REFERENCES DOCENTE
12
Dipendenze Funzionali
} Dato uno schema di relazione R(X ), una dipendenza
funzionale su R e un vincolo di integrita espresso nella
forma Y ,! Z , dove Y e Z sono sottoinsiemi di X ; in
tal caso si dice che Y determina funzionalmente Z
} Un'istanza r di R soddisfa la dipendenza funzionale
Y ,! Z se in ogni tupla di r il valore di Y determina
univocamente il valore di Z .
} Formalmente, dato uno schema di relazione R(X ),
un'istanza r di R soddisfa il vincolo di dipendenza
funzionale Y ,! Z su R se e solo se
8t1; t2 2 r; t1[Y ] = t2[Y ] =) t1[Z ] = t2[Z ]
} E facile vericare che se Y Z allora Y ,! Z .
Queste dipendenze funzionali vengono dette banali.
} E facile vericare che una superchiave K di uno schema
R(X ) determina funzionalmente tutti gli attributi di X :
K X e
superchiave di
R(X )
sse
K ,! X
13
Istanza Legale di Base di Dati :
} Dato uno schema di basi di dati R
fR1(X1); R2(X2); : : : Rn(Xn)g, un'istanza r
fr1; r2; : : : rng su R tale che
=
=
ciascuna relazione ri soddisfa il vincolo di entity
integrity
r soddisfa tutti i vincoli di integrita referenziale imposti
su R
ciascuna relazione ri soddisfa tutte le dipendenze
funzionali su Ri
verra detta istanza legale della base di dati R.
14