Il 0% ha trovato utile questo documento (0 voti)
14 visualizzazioni56 pagine

Modello Relazionale

Il documento descrive i modelli logici dei database, focalizzandosi sul modello relazionale proposto da E. F. Codd nel 1970, che utilizza tabelle per rappresentare relazioni tra dati. Viene evidenziata l'importanza dell'indipendenza dei dati e si discute il concetto di relazione matematica e la struttura rigida imposta dal modello relazionale. Infine, si menzionano le problematiche legate ai valori nulli e l'importanza di gestirli correttamente nei database.

Caricato da

antorebua05
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
14 visualizzazioni56 pagine

Modello Relazionale

Il documento descrive i modelli logici dei database, focalizzandosi sul modello relazionale proposto da E. F. Codd nel 1970, che utilizza tabelle per rappresentare relazioni tra dati. Viene evidenziata l'importanza dell'indipendenza dei dati e si discute il concetto di relazione matematica e la struttura rigida imposta dal modello relazionale. Infine, si menzionano le problematiche legate ai valori nulli e l'importanza di gestirli correttamente nei database.

Caricato da

antorebua05
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 56

Modello Relazionale

Modelli Logici

• Tre modelli logici tradizionali


• gerarchico, reticolare, relazionale
• Più recenti
• a oggetti (poco di uso), basato su XML, NoSQL
• Gerarchico e reticolare
• utilizzano riferimenti espliciti (puntatori) fra record
• Relazionale
• è basato su valori
• anche i riferimenti fra dati in strutture (relazioni) diverse
sono rappresentati per mezzo dei valori stessi
ff
Esempio di Modello Relazionale
Studenti
Matricola Cognome Nome Nascita
6554 Rossi Mario 05/12/78
8765 Neri Paolo 03/11/76
9283 Verdi Luisa 12/11/79
3456 Rossi Maria 01/02/79

Esami
Corsi
Studente Voto Corso
3456 30 4 Codice Titolo Docente
3456 24 2 1 Analisi Bruni
9283 28 1 2 Chimica Peri
6554 26 1 4 Chimica Fino
Modello Relazionale

• Proposto da E. F. Codd nel 1970 per


favorire l’indipendenza dei dati
• Disponibile in DBMS reali nel 1981
(non è facile implementare
l’indipendenza con e cienza e
a dabilità)
• Si basa sul concetto matematico di
relazione (con una variante) Edward Frank Codd
1923 - 2003
• Le relazioni hanno naturale Turing Award 1981
rappresentazione per mezzo di tabelle
ffi
ffi
Turing Award
• L'A.M. Turing Award (in italiano, premio
Turing) è un premio, assegnato annualmente
dalla Association for Computing Machinery
(ACM), a una personalità che eccelle per i
contributi di natura tecnica o erti alla comunità
informatica, in particolare per progressi che siano
duraturi e di elevata importanza tecnica
• Il premio viene spesso anche chiamato “premio
Nobel dell’informatica” ed è intitolato al Association for
matematico inglese Alan Mathison Turing Computing
Machinery
(1912-1954), in riconoscimento del suo
acm.org
contributo unico e originale alla nascita delle
attività di calcolo mediante dispositivi automatici
ff
Alcuni vincitori

Anno Vincitore Nazione Note

1971 John McCarthy USA Padre dell’AI


1972 Edsger Dijkstra NL Algoritmo del cammino minimo
1975 Donald Knuth USA Arte della programmazione
1977 John Backus USA FORTRAN
1981 Edgar Codd USA Database relazionali
1998 Jim Gray USA Database transazionali
2004 V. Cerf, R. Kahn USA TCP/IP
2014 M. Stonebaker USA Database moderni
2016 Tim Berners Lee UK World Wide Web
2018 Bengio, Hinton, Lecun CA Padrini dall’AI
Relazione “Studenti e Ca è Bevuti” ☕📚

• S = {Alice, Bob, Chiara, Davide}


• insieme degli studenti universitari
• C = {1, 2, 3, 4}
• insieme delle quantità di ca è bevuti al giorno
• De niamo la relazione R che descrive quanti ca è beve ogni studente al
giorno:
R = { (Alice, 2), (Bob, 3), (Chiara, 1), (Davide, 4) }
• Interpretazione
• Alice beve 2 ca è al giorno.
• Bob beve 3 ca è al giorno.
• Chiara è più tranquilla e si accontenta di 1 ca è.
• Davide è in modalità super-sessione d’esami e ne beve 4! ☕☕☕☕🔥
fi
ff
ff
ff
ff
ff
ff
Esempio di Relazione Matematica

• Insieme
• D1 = {a, b}
• Insieme
• D2 = {x, y, z}
• Prodotto cartesiano
• D1 × D2 = {(a, x), (a, y), (a, z), (b, x), (b, y), (b, z)}
• Relazione
• R = {(a, x), (a, z), (b, y)} ⊆ D1 × D2
Esempio di Relazione Matematica
D2

D1

R = {(−1,1), (1,1), (3,9)} ⊆ D1 × D2


Relazione Matematica

• Siano dati n insiemi (anche non distinti) D1, D2, …, Dn


• De niamo il loro prodotto cartesiano D1 × D2 × … × Dn come
l’insieme di tutte le n-uple (d1, d2, …, dn) tali che
d1 ∈ D1, d2 ∈ D2, …, dn ∈ Dn
• Una relazione (matematica) è un sottoinsieme di
D1 × D2 × … × Dn
• Non c’è un ordinamento tra la n-uple, dette anche tuple
• Non esistono n-uple uguali
• Ogni n-upla è ordinata: l’i-esimo valore di proviene
dall’i-esimo insieme Di
• Gli insiemi D1, D2, …, Dn sono i domini della relazione
fi
Esempio di Relazione Matematica

• Partite ⊆ String × String × ℕ × ℕ

Juventus Lazio 3 1
Lazio Milan 2 0
Juventus Roma 0 2
Roma Milan 0 1

• Ciascuno dei domini “ripetuti” ha due ruoli diversi,


distinguibili attraverso la posizione
• La struttura è posizionale
Struttura Non Posizionale

• A ciascun dominio si associa un nome unico nella


tabella, detto attributo, che ne descrive il ruolo

Casa Fuori RetiCasa RetiFuori


Juventus Lazio 3 1
Lazio Milan 2 0
Juventus Roma 0 2
Roma Milan 0 1
Il Modello Relazionale è basato sui valori

• I riferimenti fra dati in relazioni diverse sono


rappresentati per mezzo di valori dei domini che
compaiono nelle n-uple
Il Modello Relazionale è basato sui valori
Studenti
Matricola Cognome Nome Nascita
6554 Rossi Mario 05/12/78
8765 Neri Paolo 03/11/76
9283 Verdi Luisa 12/11/79
3456 Rossi Maria 01/02/79

Esami
Corsi
Studente Voto Corso
3456 30 4 Codice Titolo Docente
3456 24 2 1 Analisi Bruni
9283 28 1 2 Chimica Peri
6554 26 1 4 Chimica Fino
De nizioni

• Schema di relazione:
• un simbolo R detto nome della relazione e un
insieme di (nomi di) attributi X = {A1, …, An},
solitamente indicato con R(X)
• A ciascun attributo è associato un dominio

• Schema di base di dati:


• un insieme di schemi di relazione con nomi diversi,
solitamente indicato come R = {R1(X1), …, Rm(Xm)}
fi
De nizioni

• Una n-upla o tupla su un insieme di attributi X è una


funzione che associa a ciascun attributo A ∈ X un
elemento, o valore, nel dominio di A
• Il simbolo t[A] denota il valore della n-upla t
sull’attributo A
• Il simbolo t[Y], con Y ⊆ X, denota il valore della n-upla
t sull’insieme di attributi Y
fi
De nizioni

• (Istanza di) relazione su uno schema R(X):


• insieme r di n-uple su X
• (Istanza di) base di dati: su uno schema
R = {R1(X1), …, Rm(Xm)}:
• insieme di relazioni r = {r1, …, rm} dove ogni ri è una
relazione sullo schema Ri(Xi)
fi
Esempio 1
Studenti
Matricola Cognome Nome Nascita
6554 Rossi Mario 05/12/78
8765 Neri Paolo 03/11/76
9283 Verdi Luisa 12/11/79
3456 Rossi Maria 01/02/79

Esami
Corsi
Studente Voto Corso
3456 30 4 Codice Titolo Docente
3456 24 2 1 Analisi Bruni
9283 28 1 2 Chimica Peri
6554 26 1 4 Chimica Fino
Esempio 1

• X1 = {Matricola, Cognome, Nome, Nascita}


• X2 = {Studente, Voto, Corso}
• X3 = {Codice, Titolo, Docente}
• R1 = Studenti
• R2 = Esami
• R3 = Corsi
R = {R1(X1), R2(X2), R3(X3)} =
{Studenti(Matricola, Cognome, Nome, Nascita),
= Esami(Studente, Voto, Corso),
Corsi(Codice, Docente, Titolo}
Esempio 2

• Relazione su singolo attributo:


Studenti
Matricola Cognome Nome Nascita
6554 Rossi Mario 05/12/78
8765 Neri Paolo 03/11/76
9283 Verdi Luisa 12/11/79
3456 Rossi Maria 01/02/79
Studenti Lavoratori
Matricola
6554
3456
Esempio 3

• Strutture nidi cate:

Da Filippo Da Filippo
Via Roma 2, Roma Via Roma 2, Roma
Ricevuta Fiscale Ricevuta Fiscale
1235 del 12/10/2017 1240 del 13/10/2017
3 Coperti 3,00 2 Coperti 2,00
2 Antipasti 6,20 2 Antipasti 7,00
3 Primi 12,00 2 Primi 8,00
2 Bistecche 18,00 2 Orate 20,00
2 Caffè 2,00

Totale 39,20 Totale 39,00


fi
Esempio 3

• Strutture nidi cate:


Ricevute

Numero Data Qtà Descrizione Importo Totale

3 Coperti 3,00
2 Antipasti 6,20
1235 12/10/2017 39,20
3 Primi 12,00
2 Bistecche 18,00
2 Coperti 2,00
1247 13/10/2017 39,00
… … …

• Ma i valori devono essere semplici, non relazioni!


fi
Esempio 3
Ricevute
Numero Data Totale
1235 12/10/2017 39,20
1247 13/10/2017 39,00

Dettaglio
Numero Qtà Descrizione Importo
1235 3 Coperti 3,00
1235 2 Antipasti 6,20
1235 3 Primi 12,00
1235 2 Bistecche 18,00
1247 2 Coperti 2,00
1247 … … …
Esempio 3

• Abbiamo rappresentato davvero tutti gli aspetti delle


ricevute?
• Dipende da cosa ci interessa!
• Possono esistere linee ripetute in una ricevuta?
• Se aggiungiamo altri piatti già presi, sì!
• L’ordine delle linee è rilevante?
• Prima gli antipasti, poi i primi, i secondi, …
• Sono possibili rappresentazioni diverse!
Esempio 3
Ricevute
Numero Data Totale
1235 12/10/2017 39,20
1247 13/10/2017 39,00
Dettaglio
Numero Riga Qtà Descrizione Importo
1235 1 3 Coperti 3,00
1235 2 2 Antipasti 6,20
1235 3 3 Primi 12,00
1235 4 2 Bistecche 18,00
1247 1 2 Coperti 2,00
1247 … … … …
Informazione Incompleta

• Il modello relazionale impone ai dati una struttura


rigida
• Le informazioni sono rappresentate da n-uple il cui
formato deve corrispondere esattamente agli schemi
di relazione
• Ma i dati disponibili possono non corrispondere al
formato previsto
Informazione Incompleta

Persone

Nome Secondo Nome Cognome

Franklin Delano Roosevelt


Winston Churchill
Charles De Gaulle
Josip Stalin
Informazione Incompleta

• Non conviene usare valori “particolari” del dominio (0, stringa


nulla, “99”, ...):
• potrebbero non esistere valori “non utilizzati”
• valori “non utilizzati” potrebbero diventare signi cativi
• in fase di utilizzo (nei programmi) sarebbe necessario ogni volta
tener conto del “signi cato” di questi valori
• Si usa un valore distinto aggiunto a tutti i domini
• valore nullo: denota l’assenza di un valore del dominio
• se i valori dell‘attributo A appartengono al dominio DA, t[A] è un
valore del dominio oppure il valore nullo NULL
• Si possono (e debbono) imporre restrizioni sulla presenza di valori
nulli in una relazione
fi
fi
Tipi di valore nullo

• Almeno tre casi di erenti:


• valore sconosciuto
• valore inesistente
• valore senza informazione
• I DBMS non distinguono i tipi di valore nullo!
ff
Troppi valori nulli
Studenti
Matricola Cognome Nome Nascita
6554 Rossi Mario 05/12/78
8765 Neri Paolo 03/11/76
9283 Verdi Luisa 12/11/79
NULL Rossi Maria 01/02/79

Esami
Corsi
Studente Voto Corso
NULL 30 NULL Codice Titolo Docente
NULL 24 2 1 Analisi Bruni
9283 28 1 2 NULL NULL
6554 26 1 4 Chimica Fino
Basi di dati “scorrette”

• Esistono istanze di basi di dati che, pur


sintatticamente corrette, non rappresentano
informazioni possibili per l’applicazione di interesse
Esami Studenti
Studente Voto Lode Corso Matricola Cognome Nome
276545 32 1
276545 Rossi Mario
276545 30 e lode 2
787643 27 e lode 3 787643 Neri Paolo

739430 24 4 787643 Verdi Luisa


Vincoli di Integrità

• Si devono associare alla base di dati delle proprietà


che, se soddisfatte, esprimono la sua “correttezza”
rispetto all’applicazione
• Queste proprietà si chiamano vincoli di integrità
• permettono una descrizione più accurata della realtà
• danno un contributo alla “qualità dei dati”
• sono utili nella progettazione
• sono usati dai DBMS nella esecuzione delle
interrogazioni
Vincoli di Integrità

• I vincoli corrispondono a proprietà del mondo reale


modellato dalla base di dati e interessano tutte le
istanze
• I vincoli sono associati allo schema e si considerano
corrette le sue istanze che soddisfano tutti i vincoli
Vincoli di Integrità

• Un vincolo di integrità è una funzione Booleana


(predicato) che associa, a ogni istanza della base dati,
il valore vero o falso
• Se il predicato associa vero allora la proprietà è
soddisfatta
• Esistono due tipi di vincoli di integrità:
• intra-relazionali
• inter-relazionali
Vincoli Intra-relazionali

• Il suo soddisfacimento è de nito rispetto a una singola


relazione della base di dati
• Esempio:
• Vincolo di n-upla: può essere valutato su ciascuna
n-upla indipendentemente dalle altre
• (Voto = 30) OR NOT (Lode = “e lode”)
• Vincolo di dominio: vincolo di n-upla che coinvolge
un solo attributo
• (Voto ≥ 18) AND (Voto ≤ 30)
fi
Vincoli Inter-relazionali

• Il suo soddisfacimento è de nito rispetto a più


relazioni della base di dati
• Esempio:
• “Un numero di matricola può comparire nella
relazione Esami solo se compare nella relazione
Studenti”
fi
Identi cazione delle n-uple
Matricola Cognome Nome Corso Nascita
27655 Rossi Mario Ing. Inf. 05/12/78
78763 Rossi Mario Ing. Inf. 03/11/76
65432 Neri Piero Ing. Mecc. 12/11/79
87654 Neri Mario Ing. Inf. 03/11/76
67653 Rossi Piero Ing. Mecc. 05/12/78

• Non ci sono due n-uple con lo stesso valore


sull’attributo Matricola
• Non ci sono due ennuple uguali su tutti e tre gli
attributi Cognome, Nome e Nascita
fi
Chiave

• Insieme di attributi che identi cano univocamente le


n-uple
• Formalmente:
• Un insieme K di attributi è una superchiave per una
relazione r se r non contiene due n-uple distinte t1 e
t2 con t1[K] = t2[K]
• K è una chiave per r se è una superchiave minimale
di r (cioè non contiene un’altra superchiave)
fi
Esempio
Matricola Cognome Nome Corso Nascita
27655 Rossi Mario Ing. Inf. 05/12/78
78763 Rossi Mario Ing. Inf. 03/11/76
65432 Neri Piero Ing. Mecc. 12/11/79
87654 Neri Mario Ing. Inf. 03/11/76
67653 Rossi Piero Ing. Mecc. 05/12/78

• Matricola è una chiave:


• è una superchiave
• contiene un solo attributo, e quindi è minimale
Esempio
Matricola Cognome Nome Corso Nascita
27655 Rossi Mario Ing. Inf. 05/12/78
78763 Rossi Mario Ing. Inf. 03/11/76
65432 Neri Piero Ing. Mecc. 12/11/79
87654 Neri Mario Ing. Inf. 03/11/76
67653 Rossi Piero Ing. Mecc. 05/12/78

• Cognome, Nome, Nascita è un’altra chiave:


• è una superchiave
• è minimale
• Cognome e Nome non distinguono le n-uple 1 e 2
• Cognome e Nascita non distinguono le n-uple 1 e 5
• Nome e Nascita non distinguono le n-uple 2 e 4
Esistenza delle chiavi

• Una relazione contiene n-uple tutte diverse tra loro


• Ricordiamoci che è un insieme
• Ogni relazione ha come superchiave l’insieme degli
attributi su cui è de nita
• Quindi ha (almeno) una chiave
fi
Importanza delle chiavi

• L’esistenza delle chiavi garantisce l’accessibilità a


ciascun dato della base di dati
• Le chiavi permettono di correlare i dati in relazioni
diverse
• Le chiavi de nite su schemi di relazioni sono un tipo
di vincolo di integrità, detto vincolo di chiave
fi
Chiave Primaria

• Come ci comportiamo se una relazione ha più di una


chiave?
• Scegliamo noi una delle chiavi e la dichiariamo chiave
primaria (primary key)
• Le altre chiavi sono chiamate chiavi candidate
• Ogni relazione ha una chiave primaria
• Gli attributi di una chiave primaria sono solitamente
“sottolineati”
Chiavi e valori nulli
• In presenza di valori nulli, i valori della chiave non
permettono
• di identi care le n-uple
• di realizzare facilmente i riferimenti da altre relazioni
Matricola Cognome Nome Corso Nascita
NULL NULL Mario Ing. Inf. 05/12/78
78763 Rossi Mario Ing. Inf. 03/11/76
65432 Neri Piero Ing. Mecc. 12/11/79
87654 Neri Mario Ing. Inf. NULL
NULL Rossi Piero NULL 05/12/78
• La presenza di valori nulli nelle chiavi deve essere
limitata
fi
Dipendenze Funzionali

• I vincoli di chiave sono particolari tipi di vincoli, che fanno


parte di una categoria più vasta: le dipendenze
funzionali
• Formalmente:
• Dati due insiemi di attributi X e Y sulla relazione R, si
dice che X determina Y, e si scrive X → Y, se e solo se:
• date due n-uple distinte t1 e t2, se t1[X] = t2[X] allora
t1[Y] = t2[Y]
• Le dipendenze funzionali possono essere usate per
garantire opportune proprietà di una base di dati
Integrità Referenziale

• Informazioni in relazioni diverse posso essere correlate


attraverso valori comuni
• In particolare, i valori delle chiavi
• Data una relazione, un insieme di attributi della
relazione che corrispondono a una chiave primaria di
un’altra relazione è chiamato chiave esterna (foreign
key)
• Simili a un “puntatore logico”
Esempio
Infrazioni

Codice Data Vigile Prov Numero


34321 1/2/15 3987 MI 39548K
53524 4/3/15 3295 TO E39548
64521 5/4/16 3295 PR 839548
73321 5/2/18 9345 PR 839548
Vigili

Matricola Cognome Nome


3987 Rossi Luca
3295 Neri Piero
9345 Neri Mario
7543 Mori Gino
Vincolo Integrità Referenziale

• Un vincolo di integrità referenziale fra gli


attributi X di una relazione R1 (chiave esterna di R1) e
un’altra relazione R2 impone ai valori su X in R1 di
comparire come valori della chiave primaria di R2
• NOTA BENE: in questo caso l’ordine degli attributi tra
cui è stabilito il vincolo è signi cativo
fi
Integrità Referenziale e Valori Nulli

• In presenza di valori nulli i vincoli possono essere resi


meno restrittivi
• Il vincolo non è fra ogni valore degli attributi X di una
relazione R1 e la chiave primaria della relazione R2, ma tra
i valori di X diversi da NULL e la chiave primaria di R2
Impiegati
Progetti
Matricola Cognome Progetto
Codice Inizio Durata Costo
34321 Rossi IDEA
IDEA 2000 36 200
53524 Neri XYZ
XYZ 2001 24 120
64521 Verdi NULL
BOH 2001 24 150
73032 Bianchi IDEA
Operazioni di Aggiornamento

• Operazioni di inserimento:
• violazione dei vincoli intra-relazionali
• violazione dell’integrità referenziale
• Operazioni di cancellazione:
• violazione dell’integrità referenziale
• Operazioni di modi ca:
• modi ca = cancellazione + inserimento
fi
fi
Reazione alla Violazione di Vincoli

• Cosa succede quando si tenta di compiere


un’operazione che viola un vincolo, ad esempio si
cerca di inserire nella base di dati un valore non
consentito per quell‘attributo
• Sono possibili meccanismi per il supporto alla
gestione delle violazioni ("azioni compensative“)
Azioni Compensative

• Esempio:
• Viene eliminata una n-upla, causando una violazione
• Comportamento “standard”:
• Ri uto dell’operazione
• Azioni compensative:
• Eliminazione in cascata
• Introduzione di valori nulli
fi
Esempio
Impiegati
Progetti
Matricola Cognome Progetto
Codice Inizio Durata Costo
34321 Rossi IDEA
IDEA 2000 36 200
53524 Neri XYZ
XYZ 2001 24 120
64521 Verdi NULL
BOH 2001 24 150
73032 Bianchi IDEA

Impiegati
Progetti
Matricola Cognome Progetto
Codice Inizio Durata Costo
34321 Rossi IDEA
IDEA 2000 36 200
53524 Neri XYZ
NULL
XYZ 2001 24 120
64521 Verdi NULL
BOH 2001 24 150
73032 Bianchi IDEA
Esercizio

• Date le seguenti tabelle:

• AUTORE(Nome, Cognome, DataNascita, Nazionalità)


• LIBRO(Titolo, NomeAutore, CognomeAutore, Lingua)

• Esiste un vincolo di integrità referenziale tra di esse?


Esercizio

• Supponendo di avere speci cato una politica di


eliminazione in cascata sulle modi che e cancellazioni,
spiegare qual è l’e etto dell’esecuzione dei seguenti
aggiornamenti:
• Cancella da AUTORE tutte le righe dove Cognome =
‘Rossi’
• Modi ca LIBRO scrivendo NomeAutore = ‘Umberto’
in tutte le righe dove CognomeAutore = ‘Eco’
fi
ff
fi
fi
Soluzione

• Il primo aggiornamento cancella dalla tabella AUTORE


tutte le tuple con Cognome = ‘Rossi’
• A causa della politica a cascata, anche tutte le n-uple
di LIBRO con CognomeAutore = ‘Rossi’ vengono
eliminate.
• Il secondo aggiornamento causa una violazione, a meno
che la tabella AUTORE contenga già la n-upla
“Umberto Eco”

Potrebbero piacerti anche