Il modello relazionale (II)
Informazione incompleta e valori nulli
In una tupla di una relazione un attributo può non avere valore Per esempio: Mario Rossi non ha telefono in
Persone(Cognome,Nome,Indirizzo,Telefono)
Oppure il valore di un attributo potrebbe esistere ma essere sconosciuto a chi inserisce i dati nel DB Per esempio: Mario Rossi ha telefono, ma
non ne conosciamo il numero
Informazione incompleta e valori nulli
NULL: valore nullo Assegnato agli elementi di tuple inesistenti
o sconosciuti NULL è valore aggiuntivo rispetto al dominio
di un attributo
Informazione incompleta e valori nulli
In basi di dati, i due casi sopra trattati come assenza di informazioneIn assenza di informazione su un attributo bisogna usare NULL perché non si confonde con altri valori del dominio dell’attributo
Informazione incompleta e valori nulli
Per esempio: Numero di telefono sconosciuto potrebbe
essere rappresentato con 0 (numero che nessun telefono può avere). Però questa convenzione non è generale
Inoltre, per altri attributi, potrebbe non esistere valore di dominio che non si può assegnare mai: usare NULL
Informazione incompleta e valori nulli
Non tutti gli attributi di una relazione devono poter assumere valore nulloIn definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple
Matricola Cognome Nome DataNascita
276545 Rossi Maria NULL
NULL Neri Anna 23/04/1982
NULL Verdi Fabio 12/02/1982
587614 Rossi Luca 10/10/1981
937653 Bruni Mario 01/12/1981
Studenti
Informazione incompleta e valori nulli
Non tutti gli attributi di una relazione devono poter assumere valore nulloIn definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple
Matricola Cognome Nome DataNascita
276545 Rossi Maria NULL
NULL Neri Anna 23/04/1982
NULL Verdi Fabio 12/02/1982
587614 Rossi Luca 10/10/1981
937653 Bruni Mario 01/12/1981
Studenti
OK
Informazione incompleta e valori nulli
Non tutti gli attributi di una relazione devono poter assumere valore nulloIn definizione di relazione, si può specificare quali attributi non devono mai essere nulli nelle tuple
Matricola Cognome Nome DataNascita
276545 Rossi Maria NULL
NULL Neri Anna 23/04/1982
NULL Verdi Fabio 12/02/1982
587614 Rossi Luca 10/10/1981
937653 Bruni Mario 01/12/1981
Studenti
No: matricola usata per correlare relazione
Informazione incompleta e valori nulli
No: informazioneinutile
Codice Titolo Docente
01 Analisi Giani
03 Chimica NULL
NULL Chimica Belli
Studente Voto Corso
276545 28 01
NULL 27 NULL
200768 25 01
587614 24 NULL
Esami
Corsi
Informazione incompleta e valori nulli
No: informazioneinutile
Codice Titolo Docente
01 Analisi Giani
03 Chimica NULL
NULL Chimica Belli
Studente Voto Corso
276545 28 01
NULL 27 NULL
200768 25 01
587614 24 NULL
Esami
Corsi
Informazione incompleta e valori nulli
No: codice usatoPer correlare relazione
Codice Titolo Docente
01 Analisi Giani
03 Chimica NULL
NULL Chimica Belli
Studente Voto Corso
276545 28 01
NULL 27 NULL
200768 25 01
587614 24 NULL
Esami
Corsi
Informazione incompleta e valori nulli
Codice Titolo Docente
01 Analisi Giani
03 Chimica NULL
NULL Chimica Belli
Studente Voto Corso
276545 28 01
NULL 27 NULL
200768 25 01
587614 24 NULL
Esami
Corsi
OK
Instanze inconsistenti
Non tutte le tuple rappresentano informazione corretta per un’applicazione Valori nulli Valori fuori del dominio di un attributo
Per esempio: voto = 36 Tuple inconsistenti (valori di più attributi
non simultaneamente assegnabili) Per esempio: voto = 24, lode = Sì
…
Instanze inconsistenti
Non tutte le tuple rappresentano informazione corretta per un’applicazione … Tuple con valori uguali per attributi
identificanti Per esempio: tuple con la stessa matricola in
relazione Studenti Valori inesistenti in attributi usati per
corrispondenze tra relazioni Per esempio: studente in relazione Esami
Vincoli di integrità
Proprietà che devono essere soddisfatte dalle istanze corrette per un’applicazioneSono predicati che associano ad ogni istanza il valore vero o falso Vero: istanza corretta (ammissibile, lecita) Falso: istanza inconsistente
Vincoli di integrità
Definendo lo schema di un base di dati si associano vincoli di integrità che si riferiscono a tutte le istanze del base di datiQuesti vincoli permettono di considerare corrette le sole istanze che li verificano tutti
Vincoli di integrità
Vincoli intrarelazionali Vincolo di tupla
Vincolo di dominio Vincoli su assegnamento di valori ad attributi
diversi di una tupla Vincolo di chiave
Vincoli interrelazionali
Vincoli intrarelazionali
Vincoli interni a una relazione: Soddisfacimento definito rispetto ad una singola
relazione del base di dati
Vincolo di tupla: esprime condizioni sui valori di ciascuna tupla indipendentamente dalle altre tuple
Vincolo di dominio (vincolo su valori): restrizione su dominio di attributo
Vincoli su assegnamento di valori ad attributi diversi di una tupla
Vincoli di tupla
Esprimibili mediante espressioni booleane (AND, OR, NOT) i cui termini contengono: Uguaglianze, disuguaglianze, ordinamenti di
valori di attributo Espressione aritmetiche su valori di
attributop q p AND q
F F F
F T F
T F F
T T T
p q p OR q
F F F
F T T
T F T
T T T
p NOT p
F T
T F
Vincoli di tupla
Per esempio: Vincolo di dominio
(Voto 18) AND (Voto 30)
Vincolo su più attributi(NOT(Lode = “lode”)) OR (Voto = 30)
Pagamenti(Data, Importo, Ritenute, Netto)Netto = Importo - Ritenute
Vincoli di chiave
Chiave: insieme di attributi usato per identificare univocamente le tuple di una relazione Superchiave: un insieme K di attributi è
detto superchiave di una relazione r se r non contiene due tuple t1 e t2 con t1[K]=t2[K]
K è una chiave di r se è una superchiave minimale di r
Vincoli di chiave
{Matricola} è una chiave
Matricola Cognome Nome Nascita Corso
4328 Rossi Luigi 29/04/79 Informatica
6328 Rossi Dario 29/04/79 Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca 01/05/81 Economia
5536 Neri Luca 05/03/78 Economia
Table1
Vincoli di chiave
{Cognome, Nome, Nascita} è una chiave
Matricola Cognome Nome Nascita Corso
4328 Rossi Luigi 29/04/79 Informatica
6328 Rossi Dario 29/04/79 Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca 01/05/81 Economia
5536 Neri Luca 05/03/78 Economia
Table1
Vincoli di chiave
{Matricola, Corso} è una superchiave, ma non una chiave
Matricola Cognome Nome Nascita Corso
4328 Rossi Luigi 29/04/79 Informatica
6328 Rossi Dario 29/04/79 Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca 01/05/81 Economia
5536 Neri Luca 05/03/78 Economia
Table1
Vincoli di chiave
{Nome, Corso} non è una superchiave
Matricola Cognome Nome Nascita Corso
4328 Rossi Luigi 29/04/79 Informatica
6328 Rossi Dario 29/04/79 Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca 01/05/81 Economia
5536 Neri Luca 05/03/78 Economia
Table1
Vincoli di chiave
{Nome, Corso} è adesso una chiave È una chiave “per caso”
Matricola Cognome Nome Nascita Corso
6328 Rossi Dario 29/04/79 Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca 01/05/81 Economia
5536 Neri Luca 05/03/78 Informatica
Table2
Vincoli di chiave
Ogni relazione r(X) ha una chiave Essendo un insieme, r(X) è costituita da
tupla diverse tra loro X è sicuramente superchiave di r
Vincoli di chiave
Il fatto che ogni schema di relazione abbia almeno una chiave garantisce Identificabilità univoca dei dati Definizione di corrispondenze tra dati
contenuti in relazioni diverse
Per esempio: nel base di dati Università Studente corrisponde a Matricola della
relazione Studenti Corso corrisponde a Codice della relazione
Corsi
Chiave e valori nulli
Tupla 1: ha entrambe le chiave incomplete ({Matricola}, {Cognome, Nome, Nascita})
Matricola Cognome Nome Nascita Corso
NULL Rossi Dario NULL Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca NULL NULL
NULL Neri Luca 05/03/78 Economia
Chiave e valori nulli
Tuple 3 e 4: hanno una chiave completamente specificata, ma sono lo stesso individuo?
Matricola Cognome Nome Nascita Corso
NULL Rossi Dario NULL Informatica
4766 Rossi Luca 01/05/81 Fisica
4856 Neri Luca NULL NULL
NULL Neri Luca 05/03/78 Economia
Chiave e valori nulli
Chiave primaria: la chiave primaria non può avere valori nulli Identificata mediante sottolineatura
({Matricola}) Usata per stabilire corrispondenza tra
tabelle Se nessun attributo della relazione può
prendere il ruolo di chiave primaria se ne definisce uno aggiuntivo a tale scopo
Vincoli interrelazionali
Vincoli interrelazionali sono i vincoli che coinvolgono più relazioni del base di datiPer verificarli, considerare istanze di più relazioni
Vincoli interrelazionali
Vincoli di integrità referenziale (foreign keys, referential integrity constraints): Servono a garantire che i riferimenti tra
tabelle siano possibili Un vincolo di integrità referenziale fra
insieme di attributi X di una relazione R1 ed una relazione R2 è soddisfatto se i valori su X di ciascuna tupla dell’istanza di R1 compaiono come valori della chiave (primaria) dell’istanza di R2
Vincoli di integrità referenziale
Per esempio: le relazioniStudenti(Matricola,Cognome,Nome,DataNascit
a)Corsi(Codice,Titolo,Docente)Esami(Numero,Studente,Voto,Lode,Corso)
Un numero può comparire in attributo Studente di una tupla di relazione Esami solo se compare come valore di Matricola in istanza di relazione Studenti
Vincoli di integrità referenziale
Se chiave di R2 è composta da un solo attributo B, X è composto di un solo attributo A Vincolo di integrità referenziale tra A in R1 e
B in R2 è soddisfatto se, per ogni tupla t1 in R1 per cui t1[A] non è nullo, esiste una tupla t2 in R2 tale che t1[A] = t[B]
Vincoli di integrità referenziale
K A B …
R1 R2
Vincoli di integrità referenziale
Se chiave di R2 contiene più attributo bisogna stabilire corrispondenza tra attributi di R1 e R2 Chiave di R2: {B1,…,Bp} X={A1,…,Ap} Vincolo di integrità referenziale tra {A1,
…,Ap} in R1 e {B1,…,Bp} in R2 è soddisfatto se, per ogni tupla t1 in R1 per cui t1[{A1,…,Ap}] non contiene valori nulli, esiste una tupla t2 in R2 tale che t1[Ai] = t[Bi] per 1ip
Vincoli di integrità referenziale
K Ai Bi …
R1 R2
Vincoli di integrità referenziale
Codice Data Agente Art Prov Numero
987554 26/10/02
456 34 RM 2F7643
630876 15/10/93
456 53 FI 4E5432
Matricola CF Cognome Nome
567 RSSM… Rossi Mario
638 NREP… Neri Piero
Prov Numero Proprietario Indirizzo
RM 1A2396 Verdi Piero Via Tigli
MI 2F7643 Luci Gino Via Noci
FI 4E5432 Bini Luca Via Po
Infrazioni
Agenti
Auto
Vincoli di integrità referenziale
Codice Data Agente Art Prov Numero
987554 26/10/02
456 34 RM 2F7643
630876 15/10/93
456 53 FI 4E5432
Matricola CF Cognome Nome
567 RSSM… Rossi Mario
638 NREP… Neri Piero
Prov Numero Proprietario Indirizzo
RM 1A2396 Verdi Piero Via Tigli
MI 2F7643 Luci Gino Via Noci
FI 4E5432 Bini Luca Via Po
Infrazioni
Agenti
Auto
Vincoli di integrità referenziale
Codice Data Agente Art Prov Numero
987554 26/10/02
456 34 RM 2F7643
630876 15/10/93
456 53 FI 4E5432
Matricola CF Cognome Nome
567 RSSM… Rossi Mario
638 NREP… Neri Piero
Prov Numero Proprietario Indirizzo
RM 1A2396 Verdi Piero Via Tigli
MI 2F7643 Luci Gino Via Noci
FI 4E5432 Bini Luca Via Po
Infrazioni
Agenti
Auto
Vincoli di integrità referenziale
Ordinamento di attributi in vincoli referenziali è essenziale perché non sempre la corrispondenza tra tabelle si può stabilire per nome di attributoPer esempio: Incidenti(Codice,Prov1,Numero1,Prov2,Numero
2) Auto(Prov,Numero,Proprietario,Indirizzo) Prov1, Numero1 e Prov2, Numero2 sono diversi
dai nomi della chiave primaria di Auto
Vincoli di integrità referenziale
Non tutti i DBMS permettono di definire chiavi primarie Definire esplicitamente attributi coinvolti in
vincoli di integrità
Algebra e calcolo relazionale
Accesso ai dati di un DB
Aggiornamento di DB: funzione che, data istanza di DB, produce altra istanza di DB, sullo stesso schema Modifica, aggiunta, rimozione tuple
Interrogazione a DB: funzione che, dato un DB, produce una relazione su un dato schema (non necessariamente uno degli schemi definiti nel DB)
Accesso ai dati di un DB
Aggiornamento e interrogazione vengono effettuati usando specifici linguaggi Per esempio: algebra relazionale e
calcolo relazionale
Algebra relazionale
Linguaggio procedurale di accesso a DB Si specificano operazioni complesse
descrivendo procedimento da usare per ottenere soluzione
Interrogazioni: espressioni complesse
Algebra relazionale
Algebra relazionale: basata su insieme di operatori Definiti su relazioni Producono relazioni come risultati
Operatori Insiemistici: unione, intersezione, differenza Specifici: ridenominazione, selezione,
proiezione, join
Operatori insiemistici
Relazioni: insiemi di tuple omogenee, cioè definite sigli stessi attributiInsiemi: ha senso usare operatori insiemisticiInsiemi di tuple omogenee: usare operatori insiemistici solo su relazioni definite sugli stessi attributi Altrimenti, si ottengono insiemi di tuple
disomogenee, che non rappresentano relazioni
Unione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1r2: relazione su X che contiene tuple appartenenti a r1 oppure a r2 oppure a entrambe
Unione di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9297 Neri 56
9824 Verdi 38
Laureati Dirigenti
Laureati Dirigenti
Differenza di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1-r2: relazione su X che contiene tuple appartenenti a r1 ma non a r2
Differenza di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
Laureati Dirigenti
Laureati - Dirigenti
Intersezione di relazioni
Date due relazioni r1(X) e r2(X) definite sullo stesso insieme di attributi Xr1r2: relazione su X che contiene tuple appartenenti sia a r1 che a r2
Intersezione di relazioni
Matricola
Cognome
Età
9297 Neri 56
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7274 Rossi 37
7432 Neri 39
9824 Verdi 38
Matricola
Cognome
Età
7432 Neri 39
9824 Verdi 38
Laureati Dirigenti
Laureati Dirigenti