Informatica Introduzione alle basi di dati Lezione 6 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
2 Vincoli interrelazionali Vincoli interrelazionali sono i vincoli che coinvolgono più relazioni del base di dati Per verificarli, considerare istanze di più relazioni
3 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
4 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
5 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]
6 Vincoli di integrità referenziale KA B… R1R2
7 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
8 Vincoli di integrità referenziale KAi Bi… R1R2
9 Vincoli di integrità referenziale CodiceDataAgenteArtProvNumero /10/ RM2F /10/ FI4E5432 MatricolaCFCognomeNome 567RSSM…RossiMario 638NREP…NeriPiero ProvNumeroProprietarioIndirizzo RM1A2396Verdi PieroVia Tigli MI2F7643Luci GinoVia Noci FI4E5432Bini LucaVia Po Infrazioni Agenti Auto
10 Vincoli di integrità referenziale CodiceDataAgenteArtProvNumero /10/ RM2F /10/ FI4E5432 MatricolaCFCognomeNome 567RSSM…RossiMario 638NREP…NeriPiero ProvNumeroProprietarioIndirizzo RM1A2396Verdi PieroVia Tigli MI2F7643Luci GinoVia Noci FI4E5432Bini LucaVia Po Infrazioni Agenti Auto
11 Vincoli di integrità referenziale CodiceDataAgenteArtProvNumero /10/ RM2F /10/ FI4E5432 MatricolaCFCognomeNome 567RSSM…RossiMario 638NREP…NeriPiero ProvNumeroProprietarioIndirizzo RM1A2396Verdi PieroVia Tigli MI2F7643Luci GinoVia Noci FI4E5432Bini LucaVia Po Infrazioni Agenti Auto
12 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
13 Vincoli di integrità referenziale Non tutti i DBMS permettono di definire chiavi primarie Definire esplicitamente attributi coinvolti in vincoli di integrità
14 Esercizi La tabella seguente soddisfa il vincolo (SeggiAperti>400) AND (SeggiAperti<600) ? RegioneSeggiAperti Piemonte567 Lombardia670 Puglia504 Sicilia594
15 Esercizi La tabella seguente soddisfa il vincolo (NOT(Lode = “lode”)) OR (Voto = 30) ? StudenteVotoLode No No No Sì No
16 Esercizi Quale sono le superchiave (o qual è la superchiave) della tabella seguente? StudenteVotoLode No No No Sì No
17 Esercizi Quale sono le chiave (o qual è la chiave) della tabella seguente? StudenteVotoLode No No No Sì No
18 Esercizi Esiste un vincolo di integrità referenziale dal attributo Studente al attributo Matricola? StudenteVotoLodeData No1/2/ No3/2/ No2/2/ Sì7/2/ No9/2/ No1/2/06 MatricolaNomeCognome MarioRossi FrancaVerde MartaBianco LiviaNero GianfrancoBianco