Modello relazionale Il Modello Relazionale Il modello relazionale

  • Slides: 39
Download presentation
Modello relazionale Il Modello Relazionale • Il modello relazionale dei dati, proposto nel 1970

Modello relazionale 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 = (A 1: T 1, A 2: T 2, …, 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 (A 1: v 1, A: v 2, …, Ak: vk) dove i vi sono di tipo Ti

Modello relazionale Esempio: relazione Studenti Schema Relazione Studenti(Nome: string, Matricola: string, Provincia: string, Anno.

Modello relazionale Esempio: relazione Studenti Schema Relazione Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int) attributo Istanza di Studenti ennupla Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini PI 1980 175649 Valore di attributo Per semplicità una relazione si rappresenta come una tabella le cui colonne rappresentano gli attributi della relazione e le righe le ennuple della relazione.

Modello relazionale Chiavi • Chiave Un insieme di campi di una tabella è una

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 in Studenti(Matricola: Int, Nome: String, Indirizzo: String)

Modello relazionale Associazioni • Associazione tra ennuple – rappresentata attraverso i valori di un

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. Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Esami Materia Candidato Data Voto BD 171523 12/01/01 29

Modello relazionale Associazione: esempio Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int) Esami(Materia:

Modello relazionale Associazione: esempio Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int) Esami(Materia: string, Candidato*: string, Data: string, Voto: int) Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini PI 1980 175649 Esami Materia Data Voto Materia Candidato Data *171523 BD 12/01/01 Voto BD 167459 15/01/01 30 FP 179856 13/02/01 30 BD 175649 15/01/01 25 LMM 171523 11/02/01 18 28

Modello relazionale Schema grafico relazionale Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int)

Modello relazionale Schema grafico relazionale Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int) Esami(Materia: string, Candidato*: string, Data: string, Voto: int) Nome Matricola Materia Candidato* Studenti Esami Provincia Anno. Nascita Legenda: Data Voto A B In B c’è una chiave esterna per A

Modello relazionale Esempio: altre soluzioni 1/2 Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita:

Modello relazionale Esempio: altre soluzioni 1/2 Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int, Esame*: int) Esami(Codice : int, Materia: string, Data: string, Voto: int) Nome Matricola Esame* Provincia Anno. Nascita Materia Codice Studenti Esami Data Voto

Modello relazionale Esempio: altre soluzioni 2/2 Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita:

Modello relazionale Esempio: altre soluzioni 2/2 Studenti(Nome: string, Matricola: string, Provincia: string, Anno. Nascita: int) Esami(Codice : int, Materia: string, Data: string, Voto: int) Studenti. Esami(Esame*: int, Candidato*: string) Nome Matricola Materia Codice Studenti Esami Provincia Anno. Nascita Data Studenti. Esami Candidato* Esame* Voto

Conversione ER-relazionale Trasf. di schemi ER in relazionali • Il modello relazionale non si

Conversione ER-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: – – – Trasf. associazioni 1: 1 e 0:

Conversione ER-relazionale 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 Nome Materia Data Voto Matricola Esami Studenti Provincia Anno.

Conversione ER-relazionale Associazioni 0: n Nome Materia Data Voto Matricola Esami Studenti Provincia Anno. Nascita Materia Candidato* Nome Matricola Esami Data Voto Studenti Provincia Anno. Nascita Regola Chiave esterna aggiunta alla tabella con associazione univoca

Conversione ER-relazionale Associazioni 1: 1 Nome id. Facolta Indirizzo Nome id. Facolta Direttore* Indirizzo

Conversione ER-relazionale Associazioni 1: 1 Nome id. Facolta Indirizzo Nome id. Facolta Direttore* Indirizzo Diretta. Da Facolta Direttore. Di Professori Nome id. Professore Facolta Professori Provincia Anno. Nascita Regola Chiave esterna aggiunta a una qualsiasi delle due tabelle coinvolte (precedenza al vincolo di totalità)

Conversione ER-relazionale Associazioni unarie Nome compagno. Di id. Persona Provincia Anno. Nascita Nome id.

Conversione ER-relazionale Associazioni unarie Nome compagno. Di id. Persona Provincia Anno. Nascita Nome id. Persona Compagno* Provincia Anno. Nascita Persone Regola Si aggiunge una chiave esterna alla tabella stessa

Conversione ER-relazionale Associazioni n: n id. Conto Nome Persone CCorrenti id. Persona Saldo id.

Conversione ER-relazionale Associazioni n: n id. Conto Nome Persone CCorrenti id. Persona Saldo id. Persona* id. Conto* Nome id. Conto Persone id. Persona Persone-CC CCorrenti Saldo Regola Si aggiunge una terza tabella che contiene le chiavi esterne relative alle due tabelle coinvolte.

Conversione ER-relazionale Associazione con proprietà Data Titolo id. Libro Libri Autore Titolo Utente* Autore

Conversione ER-relazionale Associazione con proprietà Data Titolo id. Libro Libri Autore Titolo Utente* Autore Data id. Libro Utenti prestato. A Libri Titolo Autore Nome id. Utente libri. In. Prestito Nome Utenti id. Utente Libro* Data Utente* Libri Prestiti Utenti id. Libro Regola Attributi aggiunti alla tabella con chiave esterna, oppure ad una terza tabella con due chiavi esterne Nome id. Utente

Conversione ER-relazionale Esempio di conversione Editori Libri Prestiti Autori Utenti Libri Prestiti Autori-Libri Autori

Conversione ER-relazionale Esempio di conversione Editori Libri Prestiti Autori Utenti Libri Prestiti Autori-Libri Autori Utenti

Conversione ER-relazionale Attributi multivalore Persone Lingue. Parlate Lingua Lingue. Parlate Persone Lingue. Parlate Lingue

Conversione ER-relazionale Attributi multivalore Persone Lingue. Parlate Lingua Lingue. Parlate Persone Lingue. Parlate Lingue

Conversione ER-relazionale Le sottoclassi Persone Studenti [ nome: string Diventa: età: int codice: int

Conversione ER-relazionale Le sottoclassi Persone Studenti [ nome: string Diventa: età: int codice: int ] [ corso. Di. Laurea: string matricola: int ] Oppure: Persone Studenti Oppure: ( nome: string età: int codice: int corso. Di. Laurea: optional string matricola: optional int ) Persone Studenti ( Nome: string età: int codice: int ) ( codice*: int corso. Di. Laurea: string matricola: int ) ( Nome: string età: int codice: int ) ( codice: int Nome: string età: int corso. Di. Laurea: string matricola: int )

Conversione ER-relazionale Le sottoclassi (cont. ) Persone Attr. M optional Attr. F optional Maschi

Conversione ER-relazionale Le sottoclassi (cont. ) Persone Attr. M optional Attr. F optional Maschi Persone Attr. M con chiave esterna Ch. P Maschi Attr. P con chiave Ch. P Persone Attr. F con chiave esterna Ch. P Femmine Attr. P con chiave Ch. P Femmine Attr. F Attr. P con chiave Ch. P Maschi Attr. P con chiave Ch. P e Attr. M Femmine Attr. P con chiave Ch. P e Attr. F

Conversione ER-relazionale Criteri di scelta • Numero di attributi delle sottoclassi • Tipo di

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?

Linguaggi relazionali Per il modello relazionale sono stati definiti due principali linguaggi che sono

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 relazionale insieme 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 relazionale linguaggio dichiarativo di tipo logico dal quale è stato derivato l'SQL.

Linguaggi relazionali Algebra relazionale Notazione Re. S relazioni t, s ennuple A, B, C

Linguaggi relazionali Algebra relazionale Notazione Re. S relazioni t, s ennuple A, B, C attributi X, Y, Z insiemi di attributi Operatori di base • Proiezione • Restrizione • Ridenominazione • Prodotto • Giunzione

Linguaggi relazionali Proiezione ( ): elimina gli attributi che non sono nella lista di

Linguaggi relazionali Proiezione ( ): elimina gli attributi che non sono nella lista di proiezione A 1. . . An (R) Qual è il tipo del risultato? Se R ha n elementi quanti ne ha il risultato?

Linguaggi relazionali Esempi di proiezione Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI

Linguaggi relazionali Esempi di proiezione Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini PI 1980 175649 Nome, Matricola (Studenti) Nome (Studenti) Nome Matricola Nome Isaia 171523 Isaia Rossi 167459 Rossi Bianchi 179856 Bianchi Bonini 175649 Bonini

Linguaggi relazionali Restrizione (selezione) ( ): seleziona le ennuple della relazione che soddisfano la

Linguaggi relazionali Restrizione (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 Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI

Linguaggi relazionali Esempio di restrizione Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini 175649 PI 1980 Anno. Nascita<1979 (Studenti) Nome Matricola Provincia Anno. Nascita Rossi 167459 LU 1975 LI 1078 Bianchi 179856

Linguaggi relazionali Es. di composizione di operatori Studenti Nome Matricola Provincia Anno. Nascita Isaia

Linguaggi relazionali Es. di composizione di operatori Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1078 Bonini 175649 PI 1980 Il numero di matricola degli studenti nati prima del 1979 Matricola( Anno. Nascita<1979 (Studenti) ) Matricola 167459 179856

Linguaggi relazionali Prodotto e ridenominazione Prodotto ( ): l'operatore ha due argomenti R e

Linguaggi relazionali Prodotto e ridenominazione Prodotto ( ): 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 a 1 A 1 a 2 A 2 b B b 1 B 1 b 2 B 2 b 3 B 3 a A b B a 1 a 1 a 2 a 2 A 1 A 1 A 2 A 2 b 1 b 2 b 3 B 1 B 2 B 3 Ridenominazione ( ): cambia il nome di un attributo di una relazione A B (R)

Linguaggi relazionali Giunzione naturale ( ) R(ZX) e S(YX) R S = { t

Linguaggi relazionali Giunzione naturale ( ) R(ZX) e S(YX) R S = { t | t[XY] R e t[ZX] S } A B a A A 1 B 1 a 1 A 3 B 2 a 2 A 1 B 3 A 2 B 3 Giunzione esplicita R a a 1 a 2 S R. A = S. B A A 1 A 2 B B 1 B 3

Linguaggi relazionali Esempi di giunzione 1/4 Trovare i nomi degli studenti che hanno passato

Linguaggi relazionali Esempi di giunzione 1/4 Trovare i nomi degli studenti che hanno passato un esame con voto inferiore a 28 Studenti Nome Matricola Provincia Anno. Nascita Isaia 171523 PI 1980 Rossi 167459 LU 1975 Bianchi 179856 LI 1978 Bonini PI 1980 175649 Esami Materia Candidato Data *171523 BD 12/01/01 Voto BD 167459 15/01/01 30 FP 179856 13/02/01 30 BD 175649 15/01/01 25 LMM 171523 11/02/01 18 28

Linguaggi relazionali Esempi di giunzione 2/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome

Linguaggi relazionali Esempi di giunzione 2/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome Matricola Provincia Anno. Nascita Materia Candidato Data Voto Isaia 171523 PI 1980 BD 171523 12/01/01 28 Isaia 171523 PI 1980 LMM 171523 11/02/01 18 Rossi 167459 LU 1975 BD 167459 15/01/01 30 Bianchi 179856 LI 1978 FP 179856 13/02/01 30 Bonini 175649 PI 1980 BD 175649 15/01/01 25

Linguaggi relazionali Esempi di giunzione 3/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome

Linguaggi relazionali Esempi di giunzione 3/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome Matricola Provincia Anno. Nascita Materia Candidato Data Voto Isaia 171523 PI 1980 LMM 171523 11/02/01 18 Bonini 175649 PI 1980 BD 175649 15/01/01 25

Linguaggi relazionali Esempi di giunzione 4/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome

Linguaggi relazionali Esempi di giunzione 4/4 Nome( Voto<28 (Studenti Esami)) Matricola = Candidato Nome Isaia Bonini

Linguaggi relazionali Trasformazioni algebriche • Basate su regole di equivalenza fra espressione algebriche •

Linguaggi relazionali 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): A ( ABC (R))) A(R) C 1( C 2( C 3(R) C 1 C 2 C 3(R) C 1 C 2(E 1 E 2) C 1 (E 1) C 2 (E 2) 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 algebriche Consideriamo le relazioni R(A, B, C, D)

Linguaggi relazionali Alberi logici e trasformazioni algebriche Consideriamo 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)) A, F A=E A=100 F>5 A=E R A E, F A=100 F>5 S R S

Extra su Algebra Relazionale

Extra su Algebra Relazionale

Linguaggi relazionali Algebra relazionale: (cont. ) Unione ( ): l'operatore ha due argomenti R

Linguaggi relazionali 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 S Differenza (-): 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 | t R e t S } Qual è il tipo del risultato? Se R e S hanno n elementi quanti ne ha il risultato? Se t 1 è un'ennupla non in R , allora R = (R {t 1}) - {t 1})

Linguaggi relazionali Algebra relazionale: (cont. ) Semi-giunzione ( ) R(ZX) e S(YX) R A

Linguaggi relazionali Algebra relazionale: (cont. ) Semi-giunzione ( ) R(ZX) e S(YX) R A B A 1 B 1 A 3 B 2 A 1 B 3 A 2 B 3 S = { t R | t[X] X(S) } a A A B a 1 A 1 B 1 a 2 A 1 B 3 a 2 A 4 A 2 B 3

Linguaggi relazionali Algebra relazionale: (cont. ) Operatori derivati Intersezione ( ) R S =

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 b B a 1 a 1 a 2 a 2 A 1 A 1 A 2 A 2 b 1 b 2 b 3 B 1 B 2 B 3 b B b 1 B 1 b 2 B 2 b 3 B 3 a A a 1 A 1 a 2 A 2