Modello relazionale Il modello relazionale: strutture e vincoli.
Il Modello Relazionale Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi...
-
Upload
erminia-rossa -
Category
Documents
-
view
248 -
download
4
Transcript of Il Modello Relazionale Il modello relazionale dei dati, proposto nel 1970 ed adottato nei sistemi...
Il Modello Relazionale• Il modello relazionale dei dati, proposto nel 1970 ed adottato nei
sistemi commerciali a partire dal 1978, si è diffuso rapidamente tanto sui sistemi grandi quanto sugli elaboratori personali.
• Definizione: I meccanismi per definire database con il modello relazionale sono l’ennupla (o record) e la relazione (o tabella):
– una relazione R è definita da un insieme finito di coppie (campi) della forma T = (A1: T1, A2:T2,…, Ak:Tk) dove gli Ai
sono detti attributi e i Ti sono tipi elementari
– lo schema di una base di dati è un insieme di relazione Ri(Ti);
– un’istanza di una relazione R(T) è un insieme finito di ennuple di tipo T, cioe di oggetti della forma (A1:v1, A:v2, …,
Ak:vk) dove i vi sono di tipo Ti
Modello relazionale
Esempio: relazione StudentiSchema Relazione
Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int)
Istanza di Studenti
1980PI175649Bonini
1078LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
Per semplicità una relazione si rappresenta come una tabella le cui colonne rappresentano gli attributi della relazione e le righe le ennupledella relazione.
ennupla
attributo
Valoredi attributo
Modello relazionale
Chiavi• Chiave
Un insieme di campi di una tabella è una chiave se per ogni istanza di tale tabella non esistono due record che coincidano su tutti i valori di tali campi.
• Chiave primaria: una delle chiavi, in genere la più corta– Esempio:
(Matricola) e (Nome,Indirizzo) sono chiavi inStudenti(Matricola: Int, Nome: String, Indirizzo: String)
Modello relazionale
Associazioni• Associazione tra ennuple
– rappresentata attraverso i valori di un insieme di attributi (chiave esterna), che assume come valori quelli della chiave primaria di un’altra relazione.
• Es.
Nome Matricola Provincia AnnoNascita
Isaia 171523 PI 1980
Materia Candidato Data Voto
BD 171523 12/01/01 29
Studenti
Esami
Modello relazionale
Associazione: esempioStudenti(Nome: string, Matricola: string, Provincia: string,
AnnoNascita:int)Esami(Materia: string, Candidato*: string, Data: string, Voto: int)
Studenti
Esami
1980PI175649Bonini
1078LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
3013/02/01179856FP
1811/02/01171523LMM
2515/01/01175649BD
3015/01/01167459BD
2812/01/01171523BD
VotoDataCandidato*Materia
Studenti
Esami
Modello relazionale
Nome Matricola Provincia AnnoNascita
Materia Data Voto
Schema grafico relazionaleStudenti(Nome: string, Matricola: string, Provincia:
string, AnnoNascita:int)Esami(Materia: string, Candidato*: string, Data: string,
Voto: int)
EsamiStudenti
Nome
Matricola
Provincia
AnnoNascita
Materia
Candidato*
DataVoto
Legenda: A B In B c’è una chiave esterna per A
Modello relazionale
Esempio: altre soluzioni 1/2
Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int, Esame*:int)
Esami(Codice :int, Materia: string, Data: string, Voto: int)
EsamiStudenti
Nome
Matricola
Provincia
AnnoNascita
Materia
Codice
DataVoto
Esame*
Modello relazionale
Esempio: altre soluzioni 2/2
Studenti(Nome: string, Matricola: string, Provincia: string, AnnoNascita:int)
Esami(Codice :int, Materia: string, Data: string, Voto: int)
StudentiEsami(Esame*: int, Candidato*: string)
Esami
Materia
Codice
DataVoto
Studenti
Nome
Matricola
Provincia
AnnoNascita
StudentiEsami
Candidato* Esame*
Modello relazionale
Trasf. di schemi ER in relazionali
• Il modello relazionale non si presta alla modellazione concettuale per la sua povertà espressiva– Attributi con tipi elementari– Associazioni con chiavi esterne, (1:1) o
(0:n)?
• Quindi:– Si modella con diagrammi ER– Regole di trasformazione da ER a
formalismo grafico relazionale
Conversione ER-relazionale
Passi di trasformazione
Passi di trasformazione:– Trasf. associazioni 1:1 e 0:n– Trasf. associazioni n:n– Trasf. Gerarchie di inclusione– Identificazione chiavi primarie– Trasf. attributi multivalore– Appiattimento attributi composti
Scopo:– Rappresentare le stesse informazioni– Minimizzare la ridondanza– Schema comprensibile– Evitare sprechi di memoria
Conversione ER-relazionale
Associazioni 0:n
StudentiEsami
Esami Studenti
RegolaChiave esterna aggiunta alla tabella con associazione univoca
Conversione ER-relazionale
Materia
DataVoto
Nome
Matricola
Provincia
AnnoNascita
Nome
Matricola
Provincia
AnnoNascita
Materia
Candidato*
DataVoto
Associazioni 1:1
ProfessoriFacolta
ProfessoriFacolta
Conversione ER-relazionale
RegolaChiave esterna aggiunta a una qualsiasi delle due tabelle coinvolte (precedenza al vincolo di totalità)
DirettaDa DirettoreDiNome
idFacoltaIndirizzo
Nome
idProfessore
Provincia
AnnoNascita
NomeidFacoltaDirettore*
Indirizzo
Associazioni unarie
Persone
Persone
compagnoDi
Conversione ER-relazionale
Nome
idPersona
Provincia
AnnoNascita
NomeidPersona
Provincia
AnnoNascita
Compagno*
RegolaSi aggiunge una chiave esterna alla tabella stessa
Associazioni n:n
CCorrentiPersone
Persone Persone-CC CCorrenti
Conversione ER-relazionale
Nome
idPersona
idConto
Saldo
Nome
idPersona
idConto
Saldo
idPersona* idConto*
RegolaSi aggiunge una terza tabella che contiene le chiavi esterne relative alle due tabelle coinvolte.
Associazione con proprietà
UtentiLibri
Libri Utenti
Data
Conversione ER-relazionale
RegolaAttributi aggiunti alla tabella con chiave esterna, oppure ad una terza tabella con due chiavi esterne
Titolo
idLibro
AutoreprestatoA libriInPrestito
TitoloUtente*
Data
idLibro
Autore
Nome
idUtente
Nome
idUtente
Libri Utenti
Titolo
idLibro
AutoreNomeidUtentePrestiti
Libro* Data Utente*
Esempio di conversione
Autori-Libri
Autori
Prestiti
Utenti
Editori Libri
Editori
Autori Utenti
Libri Prestiti
Conversione ER-relazionale
Attributi multivalore
Persone LingueParlate
Persone LingueParlate Lingua
Persone LingueParlate Lingue
Conversione ER-relazionale
Persone LingueParlate Lingua
Le sottoclassi
Studenti
Persone [ nome: string età: int codice: int ]
[ corsoDiLaurea: string matricola: int ]
Diventa:
Studenti
Persone ( Nome: string età: int codice: int )
( codice*: int corsoDiLaurea: string matricola: int )
Persone( nome: string età: int codice: int corsoDiLaurea: optional string matricola: optional int )
Oppure:
Studenti
Persone
( Nome: string età: int codice: int )
( codice: int Nome: string età: int corsoDiLaurea: string matricola: int )
Oppure:
Conversione ER-relazionale
Le sottoclassi (cont.)Persone
FemmineMaschi
Persone
AttrP con chiave ChP
AttrFAttrM
AttrP con chiave ChPAttrM optionalAttrF optional
Persone
Maschi
Femmine
AttrM con chiave esterna ChP
AttrF con chiave esterna ChP
AttrP con chiave ChP
Maschi
Femmine
AttrP con chiave ChP
e AttrM
AttrP con chiave ChP
e AttrF
Conversione ER-relazionale
Criteri di scelta
• Numero di attributi delle sottoclassi
• Tipo di operazioni– Riguardano tutte le informazioni di
elementi di una sottoclasse?– Riguardano la visita di tutti gli elementi
della superclasse?
Conversione ER-relazionale
Linguaggi relazionali
Per il modello relazionale sono stati definiti due principali linguaggi che sono stati poi usati per definire e implementare il linguaggio SQL dei DBMS.
Algebra relazionaleinsieme di operatori su relazioni che danno come risultato relazioni. Non si usa come linguaggio di interrogazione dei DBMS ma come rappresentazione interna delle interrogazioni.
Calcolo relazionalelinguaggio dichiarativo di tipo logico dal quale è stato derivato l'SQL.
Linguaggi relazionali
Algebra relazionaleNotazione
R e S relazionit, s ennupleA,B,C attributiX,Y,Z insiemi di attributi
Operatori di base• Proiezione• Restrizione• Ridenominazione• Prodotto• Giunzione
Linguaggi relazionali
ProiezioneProiezione (): elimina gli attributi che non sono nella lista di proiezione
A1...An (R)
Qual è il tipo del risultato? Se R ha n elementi quanti ne ha il risultato?
Linguaggi relazionali
Esempi di proiezione
Nome, Matricola (Studenti)
1980PI175649Bonini
1078LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
Studenti
Nome Matricola
Isaia 171523
Rossi 167459
Bianchi 179856
Bonini 175649
Nome (Studenti)
Nome
Isaia
Rossi
Bianchi
Bonini
Linguaggi relazionali
RestrizioneRestrizione (selezione) (: seleziona le ennuple della
relazione che soddisfano la condizione.
Condizione (R)
Qual è il tipo del risultato?
Se R ha n elementi quanti ne ha il risultato?
Linguaggi relazionali
Esempio di restrizione
AnnoNascita<1979 (Studenti)
Linguaggi relazionali
1980PI175649Bonini
1078LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
Studenti
1078LI179856Bianchi
1975LU167459Rossi
AnnoNascitaProvinciaMatricolaNome
Es. di composizione di operatori
Il numero di matricola degli studenti nati prima del 1979
Matricola( AnnoNascita<1979 (Studenti) )
Linguaggi relazionali
1980PI175649Bonini
1078LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
Studenti
179856
167459
Matricola
Prodotto e ridenominazioneProdotto (): l'operatore ha due argomenti R e S con attributi distinti e
il risultato è una relazione con elementi ottenuti concatenando ogni
ennupla di R con tutte quelle di S.
a A
a1 A1
a2 A2
a A b Ba1 A1 b1 B1
a1 A1 b2 B2
a1 A1 b3 B3
a2 A2 b1 B1
a2 A2 b2 B2
a2 A2 b3 B3
b B
b1 B1
b2 B2
b3 B3
Ridenominazione (): cambia il nome di un attributo di una relazione
A B (R)
Linguaggi relazionali
GiunzioneGiunzione naturale ( )
R(ZX) e S(YX)
R S = { t | t[XY]R e t[ZX]S }
a A
a1 A1
a2 A2
a A Ba1 A1 B1
a1 A1 B3
a2 A2 B3
A B
A1 B1
A3 B2
A1 B3
A2 B3
Giunzione esplicitaR.A = S.B
R S
Linguaggi relazionali
Esempi di giunzione 1/4Trovare i nomi degli studenti che hanno passato un esame con voto inferiore a 28
Studenti
Esami
1980PI175649Bonini
1978LI179856Bianchi
1975LU167459Rossi
1980PI171523Isaia
AnnoNascitaProvinciaMatricolaNome
3013/02/01179856FP
1811/02/01171523LMM
2515/01/01175649BD
3015/01/01167459BD
2812/01/01171523BD
VotoDataCandidato*Materia
Linguaggi relazionali
Esempi di giunzione 2/4
Linguaggi relazionali
Matricola = Candidato Nome( Voto<28 (Studenti Esami))
2515/01/01175649BD1980PI175649Bonini
3013/02/01179856FP1978LI179856Bianchi
3015/01/01167459BD1975LU167459Rossi
1811/02/01171523LMM1980PI171523Isaia
2812/01/01171523BD1980PI171523Isaia
VotoDataCandidatoMateriaAnnoNascitaProvinciaMatricolaNome
Esempi di giunzione 3/4
Linguaggi relazionali
Matricola = Candidato Nome( Voto<28 (Studenti Esami))
2515/01/01175649BD1980PI175649Bonini
1811/02/01171523LMM1980PI171523Isaia
VotoDataCandidatoMateriaAnnoNascitaProvinciaMatricolaNome
Esempi di giunzione 4/4
Linguaggi relazionali
Matricola = Candidato Nome( Voto<28 (Studenti Esami))
Bonini
Isaia
Nome
Trasformazioni algebriche• Basate su regole di equivalenza fra espressione algebriche• Consentono di scegliere diversi ordini di join e di anticipare proiezioni e
restrizioni. • Consideriamo la relazione R(A, B, C, D):
C1 C2(E1 E2) C1 (E1) C2 (E2)
C1(C2(C3(R) C1 C2 C3(R)
A (AB (ABC (R))) A(R)
R (S T) (R S) T
(R S) (S R)
• Ottimizzazione algebrica: anticipazione delle proiezioni e delle restrizioni rispetto al prodotto per ridurre la dimensione dei risultati intermedi
Linguaggi relazionali
Alberi logici e trasformazioni algebricheConsideriamo le relazioni R(A, B, C, D) e S(E, F, G) e l'espressione:
A,F(A=100 and F > 5 and A = E (R x S))
R S
A=100 F > 5R S
A=100 F > 5
A,F
A = E
A,F
A = E
A E, F
Linguaggi relazionali
Extra su Algebra Relazionale
Algebra relazionale: (cont.)
Unione (): l'operatore ha due argomenti R e S dello stesso tipo e il risultato è una relazione ottenuta facendo l'unione delle ennuple di R con quelle di S.
R SDifferenza (-): l'operatore ha due argomenti R e S dello stesso tipo
e il risultato è una relazione contenente le ennuple di R non presenti in S.
R S = { t | tR e tS }
Qual è il tipo del risultato? Se R e S hanno n elementi quanti ne ha il risultato?
Se t1 è un'ennupla non in R , allora
R = (R {t1}) {t1})
Linguaggi relazionali
Algebra relazionale: (cont.)Semi-giunzione ( )
R(ZX) e S(YX)
R S = { t R | t[X] X(S) }
a A
a1 A1
a2 A2
A B
A1 B1
A3 B2
A1 B3
A2 B3a2 A4
A B
A1 B1
A1 B3
A2 B3
Linguaggi relazionali
Algebra relazionale: (cont.)Operatori derivati
Intersezione ()
R S = { t | t R e t S }Divisione ( \ )
R \ S = { t | {t} S R} vale che (R S)\S = R
a A
a1 A1
a2 A2
a A b Ba1 A1 b1 B1
a1 A1 b2 B2
a1 A1 b3 B3
a2 A2 b1 B1
a2 A2 b2 B2
a2 A2 b3 B3
b B
b1 B1
b2 B2
b3 B3
Linguaggi relazionali