320 likes | 540 Views
Informatica II – Basi di Dati (07/08) – Parte 2. Gianluca Torta Dipartimento di Informatica dell’Universit à di Torino torta@di.unito.it , 0116706782. Instanze inconsistenti. Non tutte le tuple rappresentano informazione corretta per un’applicazione Valori nulli
E N D
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino torta@di.unito.it, 0116706782
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’applicazione • Sono 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 dati • Questi 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 attributo
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 • 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
Vincoli di chiave • {Matricola} è una chiave Table1
Vincoli di chiave • {Cognome, Nome, Nascita} è una chiave Table1
Vincoli di chiave • {Matricola, Corso} è una superchiave, ma non una chiave Table1
Vincoli di chiave • {Nome, Corso} non è una superchiave Table1
Vincoli di chiave • {Nome, Corso} è adesso una chiave • È una chiave “per caso” Table2
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
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})
Chiave e valori nulli • Tuple 3 e 4: hanno una chiave completamente specificata, ma sono lo stesso individuo?
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 dati • Per 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 relazioni Studenti(Matricola,Cognome,Nome,DataNascita) 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] = t2[B]
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
Vincoli di integrità referenziale Infrazioni Agenti Auto
Vincoli di integrità referenziale Infrazioni Agenti Auto
Vincoli di integrità referenziale 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 attributo • Per esempio: • Incidenti(Codice,Prov1,Numero1,Prov2,Numero2) • 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à