Sei sulla pagina 1di 13

I modelli logici dei dati

Tre modelli logici tradizionali


gerarchico
reticolare
Basi di dati relazionale
Pi recenti
a oggetti (poco diffuso)
Capitolo 2:
basato su XML ("complementare" a
IL MODELLO RELAZIONALE quello relazionale)

1/74 2/74

Modelli logici, caratteristiche Matricola Cognome Nome Data di nascita


studenti 6554 Rossi Mario 05/12/1978
8765 Neri Paolo 03/11/1976
Gerarchico e reticolare 9283 Verdi Luisa 12/11/1979
3456 Rossi Maria 01/02/1978
utilizzano riferimenti espliciti (puntatori) fra
record esami Studente Voto Corso
Relazionale " basato su valori" 3456 30 04
anche i riferimenti fra dati in strutture 3456 24 02
9283 28 01
(relazioni) diverse sono rappresentati per
6554 26 01
mezzo dei valori stessi
corsi Codice Titolo Docente
01 Analisi Mario
02 Chimica Bruni
04 Chimica Verdi

3/74 4/74

Il modello relazionale Relazione: tre accezioni

Proposto da E. F. Codd nel 1970 per relazione matematica: come nella teoria
favorire lindipendenza dei dati degli insiemi
Disponibile in DBMS reali nel 1981 (non relazione secondo il modello relazionale
facile implementare lindipendenza con dei dati
efficienza e affidabilit!) relazione (dallinglese relationship) che
Si basa sul concetto matematico di rappresenta una classe di fatti, nel modello
relazione Entity-Relationship; tradotto anche con
Le relazioni hanno naturale associazione o correlazione
rappresentazione per mezzo di tabelle
5/74 6/74
Relazione matematica, esempio Relazione matematica

D1={a,b} D1, , Dn (n insiemi anche non distinti)


D2={x,y,z} a x prodotto cartesiano D1Dn:
prodotto cartesiano D1 D2 a y linsieme di tutte le n-uple (d1, , dn) tali
a z che d1D1, , dn Dn
b x relazione matematica su D1, , Dn:
b y
b z un sottoinsieme di D1Dn.
D1, , Dn sono i domini della relazione
una relazione r D 1 D2 a x
a z
b y

7/74 8/74

Relazione matematica, propriet Relazione matematica, esempio

una relazione matematica un insieme di Partite string string int int


n-uple ordinate:
Juve Lazio 3 1
(d1, , dn) tali che d1D1, , dn Dn Lazio Milan 2 0
una relazione un insieme: Juve Roma 0 2
non c' ordinamento fra le n-uple Roma Milan 0 1
le n-uple sono distinte Ciascuno dei domini ha due ruoli diversi,
ciascuna n-upla ordinata: l i-esimo distinguibili attraverso la posizione:
valore proviene dall i-esimo dominio La struttura posizionale

9/74 10/74

Struttura non posizionale Struttura non posizionale, 2


Casa
Casa Fuori
FuoriRetiCasa RetiFuori
JuveJuve Lazio
Lazio 3 3 11
A ciascun dominio si associa un nome Lazio
Lazio Milan
Milan 2 2 00
Rom
unico nella tabella (attributo), che ne JuveJuve Roma 00 22
Roma
Roma Milana
Milan 00 11
descrive il "ruolo"
Casa Fuori RetiCasa RetiFuori
Juve Lazio 3 1
Lazio Milan 2 0
Juve Roma 0 2
Roma Milan 0 1

11/74 12/74
Tabelle e relazioni Il modello basato su valori

In una tabella che rappresenta una relazione


lordinamento tra le righe irrilevante I riferimenti fra dati in relazioni diverse sono
lordinamento tra le colonne irrilevante rappresentati per mezzo di valori dei
Una tabella rappresenta una relazione se domini che compaiono nelle ennuple
le righe sono diverse fra loro
le intestazioni delle colonne sono diverse tra
loro
i valori di ogni colonna sono fra loro omogenei

13/74 14/74

studenti
Matricola Cognome Nome Data di nascita Alternativa
6554 Rossi Mario 05/12/1978
8765 Neri Paolo 03/11/1976
9283 Verdi Luisa 12/11/1979 Altri modelli (sia quelli "storici", reticolare e
3456 Rossi Maria 01/02/1978
gerarchico, sia quello a oggetti) prevedono
esami Studente Voto Corso riferimenti espliciti, gestiti dal sistema
3456 30 04
3456 24 02
9283 28 01
6554 26 01

corsi Codice Titolo Docente


01 Analisi Mario
02 Chimica Bruni
04 Chimica Verdi

15/74 16/74

studenti
Matricola Cognome Nome Data di nascita Matricola Cognome Nome Data di nascita
studenti 6554 Rossi Mario 05/12/1978 6554 Rossi Mario 05/12/1978
8765 Neri Paolo 03/11/1976 8765 Neri Paolo 03/11/1976
9283 Verdi Luisa 12/11/1979 9283 Verdi Luisa 12/11/1979
3456 Rossi Maria 01/02/1978 3456 Rossi Maria 01/02/1978
esami Studente Voto Corso esami Studente Voto Corso
3456 30 04 30
3456 24 02 24
9283 28 01 28
6554 26 01 26
corsi Codice Titolo Docente corsi Codice Titolo Docente
01 Analisi Mario 01 Analisi Mario
02 Chimica Bruni 02 Chimica Bruni
04 Chimica Verdi 04 Chimica Verdi

17/74 18/74
Struttura basata su valori: Definizioni
vantaggi
indipendenza dalle strutture fisiche (si potrebbe Schema di relazione:
avere anche con puntatori di alto livello) che
possono cambiare dinamicamente
un nome R con un insieme di attributi
si rappresenta solo ci che rilevante dal punto A1, ..., An:
di vista dellapplicazione R(A1,..., An)
lutente finale vede gli stessi dati dei Schema di base di dati:
programmatori
insieme di schemi di relazione:
i dati sono portabili pi facilmente da un sistema
ad un altro R = {R1(X1), ..., Rk(Xk)}
i puntatori sono direzionali

19/74 20/74

Definizioni, 2 Definizioni, 3

Una ennupla su un insieme di attributi X (Istanza di) relazione su uno schema R(X):
una funzione che associa a ciascun insieme r di ennuple su X
attributo A in X un valore del dominio di A (Istanza di) base di dati su uno schema R=
t[A] denota il valore della ennupla t {R1(X1), ..., Rn(Xn)}:
sull'attributo A insieme di relazioni r = {r1,..., rn} (con ri
relazione su Ri)

21/74 22/74

Relazioni su singoli attributi Strutture nidificate

studenti Da Filippo Da Filippo


Via Roma 2, Roma Via Roma 2, Roma
Matricola Cognome Nome Data di nascita
6554 Rossi Mario 05/12/1978 Ricevuta Fiscale Ricevuta Fiscale
8765 Neri Paolo 03/11/1976 1235 del 12/10/2002 1240 del 13/10/2002
9283 Verdi Luisa 12/11/1979 3 Coperti 3,00 2 Coperti 2,00
3456 Rossi Maria 01/02/1978 2 Antipasti 6,20 2 Antipasti 7,00
3 Primi 12,00 2 Primi 8,00
2 Bistecche 18,00 2 Orate 20,00
studenti lavoratori Matricola
2 Caff 2,00
6554
3456
Totale 39,20 Totale 39,00

23/74 24/74
Strutture nidificate Strutture nidificate
Da Filippo Da Filippo Da Filippo Da Filippo
Via Roma 2, Roma Via Roma 2, Roma Via Roma 2, Roma Via Roma 2, Roma
Ricevuta Fiscale Ricevuta Fiscale Ricevuta Fiscale Ricevuta Fiscale
1235 del 12/10/2002 1240 del 13/10/2002 1235 del 12/10/2002 1240 del 13/10/2002
3 Coperti 3,00 2 Coperti 2,00 3 Coperti 3,00 2 Coperti 2,00
2 Antipasti 6,20 2 Antipasti 7,00 2 Antipasti 6,20 2 Antipasti 7,00
3 Primi 12,00 2 Primi 8,00 3 Primi 12,00 2 Primi 8,00
2 Bistecche 18,00 2 Orate 20,00 2 Bistecche 18,00 2 Orate 20,00
2 Caff 2,00 2 Caff 2,00

Totale 39,20 Totale 39,00 Totale 39,20 Totale 39,00

25/74 26/74

Relazioni che rappresentano


Strutture nidificate strutture nidificate
Ricevute
Numero Data Qt Descrizione Importo Totale Ricevute Numero Data Totale
1235 12/10/2002 3 Coperti 3,00 39,20 1235 12/10/2002 39,20
2 Antipasti 6,20 1240 13/10/2002 39,00
3 Primi 12,00
Dettaglio Numero Qt Descrizione Importo
2 Bistecche 18,00
1235 3 Coperti 3,00
1240 13/10/2002 2 Coperti 2,00 39,00 1235 2 Antipasti 6,20
1235 3 Primi 12,00
1235 2 Bistecche 18,00
Ma i valori debbono essere semplici, non relazioni! 1240 2 Coperti 2,00

27/74 28/74

Rappresentazione alternativa per


Strutture nidificate, riflessione
strutture nidificate
Abbiamo rappresentato veramente tutti gli aspetti
delle ricevute? Ricevute Numero Data Totale
Dipende da che cosa ci interessa! 1235 12/10/2002 39,20
possono esistere linee ripetute in una ricevuta?
Al bar, servizio al tavolo, ad un gruppo: 1240 13/10/2002 39,00
Cliente 1: "Uno SPRITZ!" Dettaglio
Cameriere: "Se volete altri SPRITZ, Numero Riga Qt Descrizione Importo
ditelo, altrimenti non posso aggiungerli" 1235 1 3 Coperti 3,00
Cliente 2: Gheto sentio queo chel te ga 1235 2 2 Antipasti 6,20
dito? 1235 3 3 Primi 12,00
l'ordine delle righe rilevante?
Sono possibili rappresentazioni diverse 1235 4 2 Bistecche 18,00
1240 1 2 Coperti 2,00

29/74 30/74
Informazione incompleta Informazione incompleta:
motivazioni
ll modello relazionale impone ai dati una
struttura rigida: Nome SecondoNome Cognome
le informazioni sono rappresentate per Franklin Delano Roosevelt
mezzo di ennuple Winston Churchill
solo alcuni formati di ennuple sono Charles De Gaulle
Josip Stalin
ammessi: quelli che corrispondono agli
schemi di relazione
I dati disponibili possono non corrispondere
al formato previsto
31/74 32/74

Informazione incompleta
Informazione incompleta: soluzioni? nel modello relazionale
Non conviene (anche se spesso si fa) usare Tecnica rudimentale ma efficace:
valori del dominio (0, stringa nulla, 99, ...): valore nullo: denota lassenza di un valore del
potrebbero non esistere valori non utilizzati dominio (ma non un valore del dominio)
valori non utilizzati potrebbero diventare t[A], per ogni attributo A, un valore del dominio
significativi dom(A) oppure il valore nullo (che indichiamo qui
in fase di utilizzo (nei programmi) sarebbe con NULL )
necessario ogni volta tener conto del Si possono (e debbono) imporre restrizioni sulla
significato di questi valori presenza di valori nulli

33/74 34/74

Tipi di valore nullo Troppi valori nulli


studenti Matricola Cognome Nome Data di nascita
(Almeno) tre casi differenti 6554 Rossi Mario 05/12/1978
9283 Verdi Luisa 12/11/1979
valore sconosciuto NULL Rossi Maria 01/02/1978
valore inesistente esami Studente Voto Corso
valore senza informazione NULL 30 NULL

I DBMS non distinguono i tipi di valore nullo NULL 24 02


9283 28 01
corsi Codice Titolo Docente
01 Analisi Mario
02 NULL NULL
04 Chimica Verdi
35/74 36/74
Vincoli di integrit Una base di dati "scorretta"

Esami Studente Voto Lode Corso


Esistono istanze di basi di dati che, pur 276545 32 01
sintatticamente corrette, non 276545 30 e lode 02
rappresentano informazioni possibili per l 787643 27 e lode 03
739430 24 04
applicazione di interesse
Studenti Matricola Cognome Nome
276545 Rossi Mario
787643 Neri Piero
787643 Bianchi Luca

37/74 38/74

Vincolo di integrit Vincoli di integrit, perch?

Propriet che deve essere soddisfatta dalle descrizione pi accurata della realt
istanze che rappresentano informazioni contributo alla qualit dei dati
corrette per lapplicazione
utili nella progettazione (vedremo)
Un vincolo una funzione booleana (un
usati dai DBMS nella esecuzione delle
predicato):
interrogazioni
associa ad ogni istanza il valore vero o
falso

39/74 40/74

Vincoli di integrit, nota Tipi di vincoli

alcuni tipi di vincoli (ma non tutti) sono vincoli intrarelazionali


"supportati" dai DBMS: vincoli su valori (o di dominio)
possiamo quindi specificare vincoli di tali vincoli di ennupla
tipi nella nostra base di dati e il DBMS vincoli interrelazionali
ne impedisce la violazione
per i vincoli "non supportati", la
responsabilit della verifica dell'utente o
del programmatore

41/74 42/74
Vincoli di ennupla
Esami Studente Voto Lode Corso
276545 32 01
Esprimono condizioni sui valori di ciascuna
276545 30 e lode 02 ennupla, indipendentemente dalle altre
787643 27 e lode 03 ennuple
739430 24 04 Caso particolare:
Studenti Matricola Cognome Nome Vincoli di dominio: coinvolgono un solo
276545 Rossi Mario attributo
787643 Neri Piero
787643 Bianchi Luca

43/74 44/74

Sintassi ed esempi Se ... allora


Una possibile sintassi:
"Se piove prendo l'ombrello"
espressione booleana di atomi che
Se non piove posso prenderlo o non
confrontano valori di attributo o espressioni
prenderlo!
aritmetiche su di essi

NOT piove OR prendo l'ombrello


(Voto 18) AND (Voto 30)

(Voto = 30) OR NOT (Lode = "e lode")

45/74 46/74

Vincoli di ennupla, altro


esempio Vincoli di ennupla, violazione

Stipendi Impiegato Lordo Ritenute Netto Stipendi Impiegato Lordo Ritenute Netto
Rossi 55.000 12.500 42.500 Rossi 55.000 12.500 42.500
Neri 45.000 10.000 35.000 Neri 45.000 10.000 35.000
Bruni 47.000 11.000 36.000 Bruni 50.000 11.000 36.000

Lordo = (Ritenute + Netto) Lordo = (Ritenute + Netto)

Esempio

47/74 48/74
Identificazione delle ennuple Chiave

Matricola Cognome Nome Corso Nascita insieme di attributi che identificano le


27655 Rossi Mario Ing Inf 5/12/78 ennuple di una relazione
78763 Rossi Mario Ing Inf 3/11/76
65432 Neri Piero Ing Mecc 10/7/79 Formalmente:
87654 Neri Mario Ing Inf 3/11/76 un insieme K di attributi superchiave per r
67653 Rossi Piero Ing Mecc 5/12/78 se r non contiene due ennuple distinte t1 e
non ci sono due ennuple con lo stesso valore t2 con t1[K] = t2[K]
sullattributo Matricola K chiave per r se una superchiave
non ci sono due ennuple uguali su tutti e tre gli minimale per r
attributi Cognome, Nome e Data di Nascita (cio non contiene unaltra superchiave)

49/74 50/74

Una chiave Un'altra chiave

Matricola Cognome Nome Corso Nascita Matricola Cognome Nome Corso Nascita
27655 Rossi Mario Ing Inf 5/12/78 27655 Rossi
Rossi Mario
Mario Ing Inf 5/12/78
5/12/78
78763 Rossi Mario Ing Inf 3/11/76 78763 Rossi
Rossi Mario
Mario Ing Inf 3/11/76
3/11/76
65432 Neri Piero Ing Mecc 10/7/79 65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf 3/11/76 87654 Neri Mario
Mario Ing Inf 3/11/76
3/11/76
67653 Rossi Piero Ing Mecc 5/12/78 67653 Rossi
Rossi Piero Ing Mecc 5/12/78
5/12/78
Matricola una chiave: Cognome, Nome, Nascita unaltra chiave:
superchiave superchiave
contiene un solo attributo e quindi minimale
minimale

51/74 52/74

Un'altra chiave?? Vincoli, schemi e istanze


Matricola
Matricola Cognome
Cognome Nome
Nome Corso Nascita
27655 Rossi Mario Ing Inf 5/12/78 i vincoli corrispondono a propriet del mondo
78763 Rossi Mario Ing Civile 3/11/76 reale modellato dalla base di dati
65432 Neri Piero Ing Mecc 10/7/79 interessano a livello di schema (con riferimento
87654 Neri Mario Ing Inf 3/11/76 cio a tutte le istanze)
67653 Rossi Piero Ing Mecc 5/12/78 ad uno schema associamo un insieme di vincoli e
Non ci sono ennuple uguali su Cognome e consideriamo corrette (valide, ammissibili) le
Corso: istanze che soddisfano tutti i vincoli
Cognome e Corso formano una chiave un'istanza pu soddisfare altri vincoli (per caso)
Ma sempre vero?

53/74 54/74
Matricola Cognome Nome Corso Nascita
Studenti
27655 Rossi Mario Ing Inf 5/12/78
Matricola Cognome Nome Corso Nascita 78763 Rossi Mario Ing Civile 3/11/76
65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf 3/11/76
67653 Rossi Piero Ing Mecc 5/12/78
chiavi:
Matricola
Cognome, Nome, Nascita corretta: soddisfa i vincoli
Ne soddisfa anche altri ("per caso"):
Cognome, Corso chiave

55/74 56/74

Esistenza delle chiavi Importanza delle chiavi

Una relazione non pu contenere ennuple Lesistenza delle chiavi garantisce l


distinte ma uguali accessibilit a ciascun dato della base di
Ogni relazione ha come superchiave l dati
insieme degli attributi su cui definita Le chiavi permettono di correlare i dati in
e quindi ha (almeno) una chiave relazioni diverse:
Il modello relazionale basato su valori

Esempio

57/74 58/74

Chiavi e valori nulli


Matricol Cognome Nome Corso Nascita
a
NULL NULL Mario Ing Inf 5/12/78
In presenza di valori nulli, i valori della 78763 Rossi Mario Ing Civile 3/11/76
chiave non permettono
65432 Neri Piero Ing Mecc 10/7/79
di identificare le ennuple
87654
87654 Neri
Neri Mario
Mario Ing
Ing Inf
Inf NULL
NULL
di realizzare facilmente i riferimenti da
altre relazioni NULL
NULL Neri
Neri Mario
Mario NULL
NULL 5/12/78
5/12/78

La presenza di valori nulli nelle chiavi deve


essere limitata

59/74 60/74
Chiave primaria Integrit referenziale
Chiave su cui non sono ammessi nulli
informazioni in relazioni diverse sono
Notazione: sottolineatura
correlate attraverso valori comuni
Matricola Cognome Nome Corso Nascita
in particolare, valori delle chiavi (primarie)
86765 NULL Mario Ing Inf 5/12/78 le correlazioni debbono essere "coerenti"
78763 Rossi Mario Ing Civile 3/11/76
65432 Neri Piero Ing Mecc 10/7/79
87654 Neri Mario Ing Inf NULL
43289 Neri Mario NULL 5/12/78
Esempio
61/74 62/74

Infrazioni Infrazioni
Codice Data Vigile Prov Numero Codice Data Vigile Prov Numero
34321 1/2/95 3987
3987 MI 39548K 34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295
3295
3295 TO E39548 53524 4/3/95 3295 TO E39548
64521 5/4/96 3295
3295 PR 839548 64521 5/4/96 3295 PR 839548
73321 5/2/98 9345
9345 PR 839548 73321 5/2/98 9345 PR 839548
Vigili Matricola Cognome Nome
3987
3987 Rossi Luca Auto Prov Numero Cognome Nome
3295
3295 Neri Piero MI 39548K Rossi Mario
9345
9345 Neri Mario TO E39548 Rossi Mario
7543 Mori Gino PR 839548 Neri Luca
63/74 64/74

Vincolo di integrit referenziale


vincoli di integrit referenziale fra:
Un vincolo di integrit referenziale lattributo Vigile della relazione
(foreign key) fra gli attributi X di una INFRAZIONI e la relazione VIGILI
relazione R1 e unaltra relazione R2 gli attributi Prov e Numero di
impone ai valori su X in R1 di comparire INFRAZIONI e la relazione AUTO
come valori della chiave primaria di R2

65/74 66/74
Violazione di vincolo di integrit Vincoli di integrit referenziale:
referenziale commenti
Infrazioni Giocano un ruolo fondamentale nel
Codice Data Vigile Prov Numero
concetto di modello basato su valori
34321 1/2/95 3987 MI 39548K
53524 4/3/95 3295 TO E39548 In presenza di valori nulli i vincoli
64521 5/4/96 3295 PR 839548 possono essere resi meno restrittivi
73321 5/2/98 9345 PR 839548 Sono possibili meccanismi per il supporto
Auto Prov Numero Cognome Nome alla loro gestione ("azioni" compensative
MI E39548 Rossi Mario a seguito di violazioni)
TO F34268 Rossi Mario Attenzione ai vincoli su pi attributi
PR 839548 Neri Luca
67/74 68/74

Integrit referenziale e valori nulli Azioni compensative


Impiegati
Matricola Cognome Progetto Esempio:
34321 Rossi IDEA
Viene eliminata una ennupla causando
53524 Neri XYZ
64521 Verdi NULL
una violazione
73032 Bianchi IDEA Comportamento standard:
Progetti Codice Inizio Durata Costo Rifiuto dell'operazione
IDEA 01/2000 36 200 Azioni compensative:
XYZ 07/2001 24 120 Eliminazione in cascata
BOH 09/2001 24 150 Introduzione di valori nulli

69/74 70/74

Eliminazione in cascata Introduzione di valori nulli


Impiegati Impiegati Matricola Cognome Progetto
Matricola Cognome Progetto
34321 Rossi IDEA 34321 Rossi IDEA
53524
53524 Neri
Neri XYZ
XYZ 53524 Neri XYZ
NULL
64521 Verdi NULL 64521 Verdi NULL
73032 Bianchi IDEA 73032 Bianchi IDEA

Progetti Codice Inizio Durata Costo Progetti Codice Inizio Durata Costo
IDEA 01/2000 36 200 IDEA 01/2000 36 200
XYZ 07/2001 24 120 XYZ 07/2001 24 120
BOH 09/2001 24 150 BOH 09/2001 24 150

71/74 72/74
Vincoli multipli su pi attributi Vincoli multipli su pi attributi, 2

Incidenti
vincoli di integrit referenziale fra:
Codice Data ProvA NumeroA ProvB NumeroB
gli attributi ProvA e NumeroA di
34321 1/2/95 TO E39548 MI 39548K
INCIDENTI e la relazione AUTO
64521 5/4/96 PR 839548 TO E39548
gli attributi ProvB e NumeroB di
Auto Prov Numero Cognome Nome INCIDENTI e la relazione AUTO
MI 39548K Rossi Mario
TO E39548 Rossi Mario L'ordine degli attributi significativo
PR 839548 Neri Luca

73/74 74/74