1 / 32

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

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

amiel
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino torta@di.unito.it, 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’applicazione • Sono 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 dati • Questi 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 attributo

  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 Table1

  12. Vincoli di chiave • {Cognome, Nome, Nascita} è una chiave Table1

  13. Vincoli di chiave • {Matricola, Corso} è una superchiave, ma non una chiave Table1

  14. Vincoli di chiave • {Nome, Corso} non è una superchiave Table1

  15. Vincoli di chiave • {Nome, Corso} è adesso una chiave • È una chiave “per caso” 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})

  19. Chiave e valori nulli • Tuple 3 e 4: hanno una chiave completamente specificata, ma sono lo stesso individuo?

  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 dati • Per 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 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

  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 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 1ip

  27. Vincoli di integrità referenziale R1 R2

  28. Vincoli di integrità referenziale Infrazioni Agenti Auto

  29. Vincoli di integrità referenziale Infrazioni Agenti Auto

  30. Vincoli di integrità referenziale 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 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

  32. Vincoli di integrità referenziale • Non tutti i DBMS permettono di definire chiavi primarie • Definire esplicitamente attributi coinvolti in vincoli di integrità

More Related