Informatica II – Basi di Dati (07/08) – Parte 2

32
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino torta@ di.unito.it , 0116706782

description

Informatica II – Basi di Dati (07/08) – Parte 2. Gianluca Torta Dipartimento di Informatica dell’Universit à di Torino [email protected] , 0116706782. Instanze inconsistenti. Non tutte le tuple rappresentano informazione corretta per un’applicazione Valori nulli - PowerPoint PPT Presentation

Transcript of Informatica II – Basi di Dati (07/08) – Parte 2

Page 1: 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

Page 2: Informatica II – Basi di Dati (07/08) – Parte 2

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ì

Page 3: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 4: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 5: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 6: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 7: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 8: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 9: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 10: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 11: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 12: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 13: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 14: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 15: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 16: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 17: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 18: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 19: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 20: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 21: Informatica II – Basi di Dati (07/08) – Parte 2

21

Vincoli interrelazionali

Vincoli interrelazionali sono i vincoli che coinvolgono più relazioni del base di datiPer verificarli, considerare istanze di più relazioni

Page 22: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 23: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 24: Informatica II – Basi di Dati (07/08) – Parte 2

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]

Page 25: Informatica II – Basi di Dati (07/08) – Parte 2

25

Vincoli di integrità referenziale

K A B …

R1 R2

Page 26: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 27: Informatica II – Basi di Dati (07/08) – Parte 2

27

Vincoli di integrità referenziale

K Ai Bi …

R1 R2

Page 28: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 29: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 30: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 31: Informatica II – Basi di Dati (07/08) – Parte 2

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

Page 32: Informatica II – Basi di Dati (07/08) – Parte 2

32

Vincoli di integrità referenziale

Non tutti i DBMS permettono di definire chiavi primarie Definire esplicitamente attributi coinvolti in

vincoli di integrità