Informatica II – Basi di Dati (07/08) – Parte 2
description
Transcript of Informatica II – Basi di Dati (07/08) – Parte 2
Informatica II – Basi di Dati (07/08) – Parte 2
Gianluca TortaDipartimento di Informaticadell’Università di [email protected], 0116706782
2
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ì
…
3
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
4
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
5
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
6
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
7
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
8
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
9
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
10
Vincoli di chiave
Superchiave/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
Ogni chiave è una superchiave
11
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
12
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
13
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
14
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
15
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
16
Vincoli di chiave
Ogni relazione r, con la schema r(X), ha una chiave Essendo un insieme, r è costituita da tupla
diverse tra loro X è sicuramente superchiave di r
X potrebbe essere una chiave di r Se X non sia una chiave di r, esiste un
sottoinsieme Y di X tale che Y è una chiave
17
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
18
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
19
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
20
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
21
Vincoli interrelazionali
Vincoli interrelazionali sono i vincoli che coinvolgono più relazioni del base di datiPer verificarli, considerare istanze di più relazioni
22
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
23
Vincoli di integrità referenziale
Per esempio: le relazioniStudenti(Matricola,Cognome,Nome,DataNasci
ta)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
24
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] = t2[B]
25
Vincoli di integrità referenziale
K A B …
R1 R2
26
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] = t2[Bi] per 1ip
27
Vincoli di integrità referenziale
K Ai Bi …
R1 R2
28
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
29
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
30
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
31
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
32
Vincoli di integrità referenziale
Non tutti i DBMS permettono di definire chiavi primarie Definire esplicitamente attributi coinvolti in
vincoli di integrità