Università degli Studi di Torino Facoltà di Economia · yè progettato per consentire una...
-
Upload
hoangduong -
Category
Documents
-
view
215 -
download
0
Transcript of Università degli Studi di Torino Facoltà di Economia · yè progettato per consentire una...
© Diego Magro
1
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Università degli Studi di TorinoFacoltà di Economia
Corso di
Information and Communication Technology II
-- a.a. 2006-2007 --
Diego Magro
© Diego Magro
2
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modulo 2: Introduzione alle basi di dati
Testi consigliati:
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati – modelli e linguaggi di interrogazione, McGraw-Hill 2002
oppureoppure
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati (seconda edizione)
McGraw-Hill 1999
© Diego Magro
3
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Generalità, modelli dei dati, linguaggi
© Diego Magro
4
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Introduzione
• Molte organizzazioni umane necessitano di quantità considerevoli di “dati” e “informazioni”
• Difficile definire formalmente i concetti di “dato” e di “informazione”• Informalmente (in questo contesto): l’ “informazione” è parte di
conoscenza su porzioni di realtà; i “dati” sono elementi di informazione. Per fornire informazione, i dati devono essere opportunamente correlati e interpretati
• Es. “Mario Rossi” e “23445” sono due dati. Se non sappiamo come interpretarli, essi non ci danno informazione. Se sappiamo che sono la risposta alla richiesta di avere il nome e il numero interno del responsabile vendite dell’azienda ACME, allora siamo in grado diinterpretarli correttamente e abbiamo l’informazione cercata
© Diego Magro
5
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Introduzione
• Nelle organizzazioni, informazione è organizzata nei “sistemi informativi” (es: i sistemi informativi aziendali)
• La porzione automatizzata di un sistema informativo è detta “sistema informatico” (N.B.: “sistema informativo” e “sistema informatico” sono concetti distinti)
• “Base di dati”: in generale, collezione di dati utilizzati per rappresentare le informazioni gestite da un sistema informativo
• Faremo riferimento ad un’accezione più ristretta di base di dati, riferendoci ad una collezione di dati facente parte del sistema informatico e gestita da particolari sistemi software (detti Database Management Systems o DBMS – Sistemi per la gestione delle basi di dati)
• N.B. “sistema informatico” e “sistemi per la gestione delle basi di dati” sono concetti distinti
© Diego Magro
6
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
“Quante storie!”
• “Perché tutta quest’enfasi su ’ste basi di dati? Non si potrebbememorizzare i dati su semplici file e fine del discorso?”
• Innanzi tutto parte dell’enfasi sui dati deriva sia dalla notevole importanza che questi rivestono in molte organizzazioni umane sia dalla loro “quantità”
• …e poi…è proprio così: i dati sono effettivamente memorizzati su file, ma i sistemi di gestione di basi di dati consentono di evitare l’accesso diretto ai file e offrono una visione dei dati più “ad alto livello”, oltre ad altre funzionalità
© Diego Magro
7
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Non sono storie!
• Un DBMS consente e facilita la gestione di basi di datigrandi (considerevole quantità di dati memorizzati in memoria secondaria)condivise (accesso ai dati da parte di più utenti e più applicazioni)persistenti (dati esistono indipendentemente dalle esecuzioni delle procedure che li usano)
• Un DBMS, inoltregarantisce affidabilità (conservazione intatta della base di dati anche in caso di malfunzionamenti software o hardware)garantisce privatezza (offre meccanismi per stabilire le azioni consentite a ciascun utente)è progettato per consentire una gestione efficiente delle basi di dati (cioè uso di quantità accettabili di risorse spazio [di memoria principale e secondaria] e tempo)è volto all’efficacia, cioè mira a rendere produttive le attività dei propri utenti
© Diego Magro
8
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modelli dei dati
• Modello dei dati: insieme di concetti utilizzati per descrivere la struttura e l’organizzazione dei dati
• Vari modelli:Modelli logici (basati su strutture come alberi, grafi, relazioni, oggetti; sono disponibili su DBMS commerciali)
gerarchico (anni Sessanta)reticolare o CODASYL (inizio anni Settanta)relazionale (definito inizi anni Settanta, affermatosi anni Ottanta, è attualmente il più diffuso)ad oggetti (evoluzione del modello relazionale, sviluppato anni Ottanta)
Modelli concettuali (descrivono i dati indipendentemente dalla scelta del modello logico; non sono disponibili su DBMS commerciali)
Entity-Relationship (E-R, Entità-Relazioni)…
© Diego Magro
9
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Livelli di astrazione
• I DBMS si articolano in tre livelli: interno, logico, esterno• Schema interno (o fisico): descrive le strutture fisiche di memorizzazione dei
dati (tipi di file, indici per l’accesso ai file, ecc.)• Schema logico: descrive la base di dati per mezzo del modello logico
adottato dal DBMS (es. per mezzo del modello relazionale)• Schema esterno: descrive una porzione della base di dati di interesse per un
utente o un gruppo di utenti. Ad uno stesso schema logico possono essere associati più schemi esterni. Lo schema esterno può coincidere con quello logico. Gli accessi alla base di dati avvengono solo attraverso il livello esterno
Nei moderni sistemi, questo livello non è esplicitamente presente, ma è realizzato attraverso il meccanismo delle viste (o views) + quello delle autorizzazioni di accesso. Le viste consentono di definire rappresentazioni diverse per gli stessi dati; le autorizzazioni di accesso consentono di specificare politiche per l’accesso ai dati. Es. Si può stabilire che un certo (tipo di) utente può leggere, ma non modificare, solo una specifica parte dei dati
© Diego Magro
10
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Indipendenza dei dati
• Indipendenza dei dati è la principale proprietà dei DBMS• Indipendenza fisica: interazione con il DBMS può prescindere dalla
struttura fisica dei dati ( è possibile cambiare la struttura dei file che memorizzano alcuni dati, senza dover cambiare la descrizione dei dati ad alto livello, senza dover modificare i programmi che utilizzano i dati)
• Indipendenza logica: l’interazione con il livello esterno può prescindere dal livello logico sottostante ( possibile modificare il modello logico senza modificare quello esterno e viceversa)
© Diego Magro
11
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Linguaggi per le basi di dati
• Due categorie di linguaggi1. Data Definition Language (DDL) o linguaggi per la
definizione dei dati: consentono di definire gli schemischemi(cioè le strutture) logico, esterno e fisico dei dati più le autorizzazioni di accesso
2. Data Manipulation Language (DML) o linguaggi per la manipolazione dei dati: consentono l’introduzione, la modifica o la lettura dei dati veri e propri (interagiscono con le istanzeistanze delle basi di dati)
© Diego Magro
12
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Utenti di un DBMS
Diverse tipologie di utenti:• Database Administrator (DBA) o amministratore della base di dati:
responsabile progettazione, controllo e amministrazione della base di dati
• Progettisti e programmatori di applicazioni: definiscono e realizzano i programmi che accedono alla base di dati
• Utenti finali: utilizzano programmi che realizzano attività frequenti e predefinite
• Utenti “casuali”: sono in grado di impiegare linguaggi per l’accesso alla base di dati e compiere operazioni non predefinite (di qui il termine “casuali”)
© Diego Magro
13
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Il modello relazionale:
relazioni e tabelle, schemi e istanze, vincoli di integrità
© Diego Magro
14
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Il modello relazionale
• Proposto da Codd nel 1970 (E.F. Codd, A relational model for large shared data banks, Communications of the ACM, Vol. 13, n. 6, pp. 377-387, 1970)
• Si proponeva di superare le limitazioni dei modelli esistenti, soprattutto per quanto riguardava l’effettiva realizzazione dell’indipendenza dei dati
• Si afferma solo negli anni Ottanta• E’ attualmente il più diffuso• Si fonda sul concetto matematico di relazione (che, leggermente
modificato, diviene tabella)•• La corrispondenza tra i dati è realizzata attraverso i dati stesLa corrispondenza tra i dati è realizzata attraverso i dati stessisi
(meccanismo basato su valori)…sarà più chiaro in seguito
© Diego Magro
15
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Qualche concetto matematico (ma proprio pochi!)
• Per capire il modello relazionale abbiamo bisogno di conoscere il significato del concetto matematico di relazionerelazione
• Per definire il concetto di relazione, abbiamo bisogno di conoscere i concetti di: elemento, (mult)insieme, appartenenza, sottoinsieme, coppia (n-upla) ordinata e prodotto cartesiano
• elemento: nessuna definizione: assumiamo di sapere cosa sia un “elemento”
• insieme: nessuna definizione formale: un insieme è una collezione di elementi in cui non vi sono elementi ripetuti
• multinsieme: è una collezione di elementi in cui possono esservi elementi ripetuti (N.B.: “possono” non significa “devono”!)Quindi: ogni insieme è un multinsieme, ma non è vero il viceversa.
© Diego Magro
16
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Es.: {a,b,c,d} è un (mult)insieme i cui elementi sono a, b, c, d. {a,b,b,c,d,d,d} è un multinsieme, ma non un insieme (infatti gli elementi b e d sono ripetuti)N.B. Negli insiemi (e nei multinsiemi), non conta l’ordine in cui compaiono gli elementi: Es: {a,b,c}, {a,c,b}, {b,a,c}, {b,c,a}, {c,a,b}, {c,b,a} sono lo stesso insiemeL’insieme che non contiene elementi è detto “insieme vuoto” ed èindicato con la lettera “∅∅∅∅ (phi maiuscolo)” dell’alfabeto greco: ∅∅∅∅ = { }
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
17
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Appartenenza: siano x un elemento e A un (mult)insieme; si dice che “xappartiene ad A” (e si scrive “x ∈∈∈∈ A”) se e solo se x compare in A.Al contrario, si dice che “x non appartiene ad A” (e si scrive “x ∉∉∉∉ A”) se e solo se x non compare in A. Es. Se A = {giallo, blu, verde}, allora blu ∈∈∈∈ A, mentre rosso ∉∉∉∉ A
• Sottoinsieme: Siano A e B due insiemi; si dice che “A è sottoinsieme di B” oche “A è incluso in B” (e si scrive “A ⊆⊆⊆⊆ B”) se e solo se ogni elemento di A è elemento di B (cioè per ogni elemento x, se x ∈∈∈∈ A, allora x ∈∈∈∈ B). Al contrario, si dice che “A non è un sottoinsieme di B” o che “A non è incluso in B” (e si scrive “A ⊆⊆⊆⊆ B”) se e solo se esiste almeno un elemento di A che non è elemento di B (cioè esiste almeno un elemento x tale che x ∈∈∈∈ A e x ∉∉∉∉ B)Es. {a,b,c} ⊆⊆⊆⊆ {a,b,c,d,e} e {a,b,c,f} ⊆⊆⊆⊆ {a,b,c,d,e}Si noti che per ogni insieme A, l’insieme vuoto e A stesso sono sottoinsiemi(banali) di A: ∅∅∅∅ ⊆⊆⊆⊆ A e A ⊆⊆⊆⊆ A. Ogni sottoinsieme non banale di A è detto sottoinsieme proprio di A
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
18
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Coppia (n-upla) ordinata: informalmente, una coppia ordinata è un multinsieme di due elementi, in cui conta l’ordine (cioè c’è un primo elemento e un secondo elemento): es. (a,b) è una coppia ordinata, in cui a è il primo elemento e b è il secondo. Si noti che (a,b) e (b,a) sono due coppie ordinate distinte e che l’elemento può essere ripetuto, cioè (a,a) è una coppia ordinata
Generalizzando: una n-upla ordinata è un multinsieme di n elementi in cui conta l’ordine, es: (a,b,b,d,e,h,f,f) è una n-pla ordinata di otto elementi
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
19
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Prodotto cartesiano: siano A e B due insiemi (non necessariamente distinti); si dice “prodotto cartesiano di A e B” (e si scrive “A××××B”) l’insieme di tutte e sole le coppie ordinate (x,y) di elementi, in cui x ∈∈∈∈ A e y ∈∈∈∈ B. Es. A={a,b,c}, B={1,2}, A××××B={(a,1), (a,2), (b,1), (b,2), (c,1), (c,2)},B××××A={(1,a), (2,a), (1,b), (2,b), (1,c), (2,c)},A××××A={(a,a), (a,b), (a,c), (b,a), (b,b), (b,c), (c,a), (c,b), (c,c)}B××××B={(1,1), (1,2), (2,1), (2,2)}
Generalizzando: siano A1, A2, …, An n insiemi (non necessariamente tutti distinti); si dice “prodotto cartesiano di A1, A2, … e An ” (e si scrive “A1 ×××× A2 ××××… ×××× An”) l’insieme di tutte e sole le n-uple ordinate (x1,x2,…,xn) di elementi in cui x1 ∈∈∈∈ A1, x2 ∈∈∈∈ A2, …, xn ∈∈∈∈ An
Es.: A={a,b}, B={1,2}, C={+,*}, A××××B××××C = {(a,1,+),(a,1,*),(a,2,+),(a,2,*),(b,1,+),(b,1,*),(b,2,+),(b,2,*)}
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
20
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
…e finalmente:• Relazione: siano A e B due insiemi (non necessariamente distinti); si
dice “relazione sugli insiemi A e B” un qualunque sottoinsieme del prodotto cartesiano A××××BEs. A={a,b,c}, B={1,2}, A××××B={(a,1), (a,2), (b,1), (b,2), (c,1), (c,2)};R1 = {(a,1),(b,2),(c,1)} e R2 = {(b,2), (c,1)} sono due possibili relazioni su A e B (si noti che R1 ⊆⊆⊆⊆ A××××B e R2 ⊆⊆⊆⊆ A××××B).Ovviamente, ∅∅∅∅ e A××××B sono anch’esse due relazioni su A e B (infatti, ∅∅∅∅⊆⊆⊆⊆ A××××B e A××××B ⊆⊆⊆⊆ A××××B)
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
21
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Generalizzando: siano A1, A2, …, An n insiemi (non necessariamente tutti distinti); si dice “relazione sugli insiemi A1, A2, … e An” un qualunque sottoinsieme del prodotto cartesiano A1 ×××× A2 ×××× … ×××× An
Es.: Es.: A={a,b}, B={1,2}, C={+,*}, A××××B××××C = {(a,1,+),(a,1,*),(a,2,+),(a,2,*),(b,1,+),(b,1,*),(b,2,+),(b,2,*)}S1 = {(a,1,+),(a,2,*), (b,2,*)} e S2 = {(b,2,*)} sono due esempi di relazioni sugli insiemi A1, A2, …, An
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
22
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
“??????” … “cosa c’entra ’sta roba con le relazioni, quelle “vere”?”• Il significato matematico di “relazione” sembra aver poco a che
vedere con il significato di “relazione” nel linguaggio comune…• …se anche fosse così, non dovremmo stupirci: accade talvolta che il
significato matematico di un termine sia molto distante, o addirittura completamente slegato, dal significato del medesimo termine nel linguaggio comune…
• …ma in questo caso non è così: il concetto matematico di relazione formalizza ciò che molte “relazioni” (nel senso del linguaggio comune) hanno in comune
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
23
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Es.: Consideriamo queste 4 “relazioni”:1. la relazione che lega un numero naturale al suo quadrato: 0 0,
1 1, 2 4, 3 9,…2. la relazione fra ogni capitale europea e la sua temperatura massima
in un certo giorno: Roma 32, Parigi 31, Londra 28,…3. la relazione di innamoramento fra studenti in gita scolastica: Marco
ama Paola, Paola ama Marco, Luigi ama Elisa, Elisa ama Roberto, …4. la relazione fra i due giocatori e l’arbitro nelle partite di un torneo
aziendale di tennis: partita tra Rossi e Bianchi arbitrata da Verdi, partita tra Sirani e Verdi arbitrata da Bianchi, …
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
24
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Cos’hanno in comune queste “relazioni”? Apparentemente niente, ma se astraiamo dalle differenze, ciò che resta sono solo degli insiemi e delle n-uple!
1. La relazione di quadrato mette in relazione numeri naturali con numeri naturali: {(0,0), (1,1), (2,4), (3,9),…} ⊆⊆⊆⊆ N ×××× N (N denota l’insieme dei numeri naturali)
2. La relazione capitali-temperature: {(Roma, 32), (Parigi, 31), (Londra, 28),…} ⊆⊆⊆⊆ CE ×××× TEMP (dove CE denota l’insieme delle capitali europee e TEMP l’insieme delle possibili temperature)
3. La relazione di innamoramento:{(Marco, Paola), (Paola, Marco), (Luigi, Elisa), (Elisa, Roberto), …} ⊆⊆⊆⊆StudGita ×××× StudGita (dove StudGita denota l’insieme degli studenti in gita scolastica)
4. La relazione “match di tennis”:{(Rossi, Bianchi, Verdi), (Sirani, Verdi, Bianchi),…} ⊆⊆⊆⊆DIP ×××× DIP ×××× DIP (dove DIP denota l’insieme dei dipendenti della data azienda)
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
25
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
…a questo punto sono stati introdotti tutti in concetti matematici necessari alla presentazione iniziale del modello relazionale…
…poiché l’algebra relazionale e l’SQL (che vedremo in seguito) fanno uso di altri 3 operatori insiemistici (oltre al prodotto cartesiano), introduciamo anch’essi:
• Siano A e B due insiemi; si dice “unione di A e B” (e si scrive “A∪∪∪∪B”) l’insieme degli elementi che appartengono ad A oppure a BEs.: A = {1,2,3}, B = {a,b}, C = {1,2,3,4}, D = {3,4,5,6}; A∪∪∪∪B = B∪∪∪∪A = {1,2,3,a,b}, C∪∪∪∪D = D∪∪∪∪C = {1,2,3,4,5,6}, A∪∪∪∪C = C∪∪∪∪A = {1,2,3,4}, A∪∅∪∅∪∅∪∅ = ∅∪∅∪∅∪∅∪A = A;La definizione si generalizza facilmente a più di due insiemi:A∪∪∪∪B∪∪∪∪C∪∪∪∪D = {1,2,3,a,b,4,5,6}
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
26
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Siano A e B due insiemi; si dice intersezione di A e B (e si scrive “A∩∩∩∩B”) l’insieme degli elementi che appartengono ad A e contemporaneamente appartengono a BEs.: A={1,2,3}, B={a,b}, C={1,2,3,4}, D={3,4,5,6}; A∩∩∩∩B = B∩∩∩∩A = ∅∅∅∅; C∩∩∩∩D = D∩∩∩∩C = {3,4}, A∩∩∩∩C = C∩∩∩∩A = {1,2,3}, A∩∅∩∅∩∅∩∅ = ∅∩∅∩∅∩∅∩A = ∅∅∅∅;La definizione si generalizza facilmente a più di due insiemi:A∩∩∩∩C∩∩∩∩D = {3}, A∩∩∩∩B∩∩∩∩C∩∩∩∩D = ∅∅∅∅
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
27
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Siano A e B due insiemi; si dice differenza fra A e B (e si scrive “A-B”) l’insieme degli elementi che appartengono ad A e contemporaneamente non appartengono a BEs.: A={1,2,3}, B={a,b}, C={1,2,3,4}, D={3,4,5,6}; A-B = {1,2,3}, B-A = {a,b}, A-C = ∅∅∅∅, C-A = {4}, A-D = {1,2}, D-A = {4,5,6}, C-D = {1,2}, D-C = {5,6}, A-∅∅∅∅ = A = {1,2,3}, ∅∅∅∅-A = ∅∅∅∅
Qualche concetto matematico (ma proprio pochi!)
© Diego Magro
28
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Il modello relazionale: relazioni e tabelle
•• Una base di dati relazionale è un insieme di relazioniUna base di dati relazionale è un insieme di relazioni• Nel modello relazionale le relazioni sono rappresentate da tabelletabelle. In questo
contesto, i termini “relazione” e “tabella” vengono usati come sinonimi• Dalla relazione alla tabella:
le relazioni con un numero finito di elementi (come lo sono tutte quelle che costituiscono una base di dati) possono essere rappresentate in forma tabellare, es:
la relazione “capitali-temperature”:
28Londra
…
31Parigi
32Roma
© Diego Magro
29
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
la relazione “di innamoramento”:
la relazione “match di tennis”:
Il modello relazionale: relazioni e tabelle
ElisaLuigi
RobertoElisa
…
MarcoPaola
PaolaMarco
BianchiVerdiSirani
…
VerdiBianchiRossi
© Diego Magro
30
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
ogni n-upla della relazione è contenuta esattamente in una riga della tabella e ogni elemento della n-upla è contenuto esattamente in una casella della tabella
2 INCONVENIENTI:si noti che la rappresentazione tabellare appena introdotta, non è molto leggibile; consideriamo, ad esempio, le ultime due tabelle: nella tabella che rappresenta la relazione “di innamoramento” non è immediatamente chiaro chi ama chi; analogamente, nella tabella che rappresenta la relazione “match di tennis” non è immediatamente chiaro chi sono i giocatori e chi l’arbitro
Il modello relazionale: relazioni e tabelle
© Diego Magro
31
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
ancora più importante: secondo la definizione matematica del concetto di relazione, ogni n-upla di una relazione è ordinata, quindi cambiare l’ordine degli elementi all’interno di una n-upla cambia il significato della n-upla!
Ad esempio, nella relazione “di innamoramento”, la n-upla (Luigi, Elisa) dice che Luigi ama Elisa; se ne invertissimo gli elementi otterremmo la n-upla (Elisa, Luigi), il cui significato è diverso!
Analogamente: (Sirani, Verdi, Bianchi) rappresenta una partita di tennis fra Sirani e Verdi, arbitrata da Bianchi, mentre (Bianchi, Verdi, Sirani) rappresenta una partita fra Bianchi e Verdi arbitrata da Sirani
E’ scomodo dover porre attenzione all’ordine in cui gli elementi compaiono all’interno delle n-uple!
Il modello relazionale: relazioni e tabelle
© Diego Magro
32
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Per ovviare ai due inconvenienti riportati sopra, nel modello relazionale le colonne delle tabelle hanno sempre un titolo! …e, N.B., in una stessa tabella, non possono esservi due colonne con lo stesso titolo!Es.:
Il modello relazionale: relazioni e tabelle
Temperatura
Citta
28Londra
…
31Parigi
32Roma
Amato/aAmante
ElisaLuigi
RobertoElisa
…
MarcoPaola
PaolaMarco
ArbitroGiocat2Giocat1
BianchiVerdiSirani
…
VerdiBianchiRossi
CAPITALI_TEMPERATURE INNAMORAMENTO
MATCH_DI_TENNIS
© Diego Magro
33
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
In questo modo:la leggibilità miglioral’ordine delle colonne non conta più, es. le due tabelle seguenti hanno lo stesso significato:
Il modello relazionale: relazioni e tabelle
Amato/aAmante
ElisaLuigi
RobertoElisa
…
MarcoPaola
PaolaMarco
AmanteAmato/a
LuigiElisa
ElisaRoberto
…
PaolaMarco
MarcoPaola
© Diego Magro
34
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Se le colonne non hanno titolo, invece, la modifica dell’ordine delle colonne produce un cambiamento nel significato delle tabelle, es.:
Da questo momento, quando si parla di modello relazionale, i termini “relazione” e “tabella” sono usati come sinonimi
Il modello relazionale: relazioni e tabelle
ElisaLuigi
RobertoElisa
…
MarcoPaola
PaolaMarco
LuigiElisa
ElisaRoberto
…
PaolaMarco
MarcoPaola
© Diego Magro
35
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Un po’ di terminologia e di notazione…• Le righe di una tabella (che finora abbiamo chiamato n-uple) vengono
chiamate tuple (deriva dall’inglese)• I titoli delle colonne si chiamano attributiattributi• Gli elementi delle tuple si chiamano valorivalori• Se t è una tupla di una tabella T e A è un attributo di T, t[A] denota il
valore assunto dalla tupla t sull’attributo AEs.: t=(Sirani, Verdi, Bianchi) è una tupla della tabella “MATCH_DI_TENNIS”; t[Giocat1] = Sirani, t[Giocat2] = Verdi,t[Arbitro] = Bianchi
• Se t è una tupla di una tabella T e X è un insieme di attributi di T, t[X] denota la tupla costituita dai valori di t sugli attributi in XEs.: t = (Sirani, Verdi, Bianchi) , t[Giocat1,Giocat2] = (Sirani,Verdi)
Il modello relazionale: terminologia e notazioni
© Diego Magro
36
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Uno schema di relazioneschema di relazione è costituito da un simbolo R (detto nome della relazione) e da un insieme di (nomi di) attributi X = {A1, A2,…, An} ed è indicato con R(X); inoltre, ad ogni attributo è associato l’insieme dei possibili valori, detto dominio dell’attributo
Es.: MATCH_DI_TENNIS(Giocat1,Giocat2,Arbitro) è lo schema della relazione di nome “MATCH_DI_TENNIS”, i cui attributi sono Giocat1,Giocat2 e Arbitro.Quali sono i domini degli attributi?
Il modello relazionale: terminologia e notazioni
© Diego Magro
37
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Quando la relazione MATCH_DI_TENNIS è stata introdotta, si è detto che essa era una relazione fra i dipendenti di una data azienda, cioè un sottoinsieme di DIP ×××× DIP ×××× DIP. Tuttavia, siccome non è possibile introdurre le persone in carne ed ossa nei computer, per rappresentarla in un calcolatore possiamo usare i nomidelle persone, quindi, in realtà essa è un sottoinsieme di Stringa ×××× Stringa ×××× Stringa (Stringa è l’insieme di tutte le sequenze finite di simboli alfanumerici), cioè è una relazione fra nomi.In altre parole, l’insieme Stringa è il dominio degli attibuti Giocat1, Giocat2 e Arbitro
Il modello relazionale: terminologia e notazioni
© Diego Magro
38
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
CAPITALI_TEMPERATURE(Citta, Temperatura) eINNAMORAMENTO(Amante,Amato/a) sono altri 2 esempi di schemi di relazioni
Stringa è il dominio di Citta, Amante, Amato/a;
Intero (cioè l’insieme dei numeri interi) è il dominio di Temperatura
Il modello relazionale: terminologia e notazioni
© Diego Magro
39
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Uno schema di base di datischema di base di dati è un insieme di schemi di relazione con nomi diversi: RR={R1(X), R2(X), … , Rm(X) }
• Una istanza di relazioneistanza di relazione (o semplicemente relazionerelazione) su uno schema R(X) è un insieme r di tuple su X
• Una istanza di base di datiistanza di base di dati (o semplicemente base di dati) su uno schema RR={R1(X), R2(X), … , Rm(X) } è un insieme di relazioni r r = {r1, r2,…,rm}, dove r1 è una relazione sullo schema R1(X), r2 è una relazione sullo schema R2(X), … , rm è una relazione sullo schema Rm(X)
Il modello relazionale: terminologia e notazioni
© Diego Magro
40
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)Schema di base di dati:OSPEDALEOSPEDALE = {REPARTO(Nome(Stringa), Primario(Intero)) MEDICO(Id(Intero), Nome(Stringa), Cognome(Stringa), Reparto(Stringa))SPECIALITA(Nome(Stringa))SPECIALIZZAZIONE(Medico(Intero), Specialita(Stringa))PATOLOGIA(Nome(Stringa), Descrizione(*)(Stringa))PATOLOGIA_SPECIALITA(Patologia(Stringa), Specialita(Stringa))PAZIENTE(Id(Intero), Nome(Stringa), Cognome(Stringa), DataNascita(Data),
Reparto(Stringa))AFFEZIONE(Paziente(Intero), Patologia(Stringa))}(*)Possibile valore nullo
Schemi di
relazione
© Diego Magro
41
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Istanza di base di dati:ospedale ={reparto
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena9OrtologiaBianchiElena10
RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeId
medico
Istanze di relazione
© Diego Magro
42
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
RefisticaFeniatria
Zelaredia
SubalogiaRiologiaAlbologiaNusologiaOrtologia
Nomespecialita specializzazione
Ortologia6Nusologia5Zelaredia5Zelaredia4Riologia4Albologia3Refistica2Nusologia2Feniatria1Ortologia1SpecialitaMedico
Ortologia10Ortologia9Riologia8Albologia7
…continua
© Diego Magro
43
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
malattia degenerativa dell’apparato esopileo
Morbo_di_ Herf
NULLGoriteNULLNuvasiteNULLEndobialiteNULLMurgillo
affezione del balitoBalitosiNULLTufosidolore acuto a livello del micoMicalgiadegenerazione del mitroMitrosiinfiammazione dell’apparato piaricoPiarite
DescrizioneNome
patologia
© Diego Magro
44
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
patologia_specialita
RefisticaGorite
NusologiaMorbo_di_ Herf
FeniatriaBalitosiRiologiaTufosiZelarediaMicalgiaAlbologiaMicalgiaNusologiaMitrosiSubalogiaPiariteOrtologiaPiariteSpecialitaPatologia
FeniatriaMurgilloOrtologiaMurgilloOrtologiaEndobialiteZelarediaEndobialiteAlbologiaNuvasiteRiologiaNuvasiteOrtologiaNuvasiteRiologiaGorite
…continua
© Diego Magro
45
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
paziente
Ortologia04/02/1920AlbitiAndrea10Riologia03/04/1990TinosaSara9Albologia11/09/1950BianchiCarlo8Albologia10/09/1970BianchiCarlo7Nusologia12/09/1938TinosaErmete6Riologia15/02/1972MinoriKatia5Albologia20/07/1967BucciMilena4Nusologia24/11/1980VerdiElisa3Ortologia15/03/1982RossiMario2Ortologia25/10/1957RossiMario1
RepartoData-Nascita
CognomeNomeId
© Diego Magro
46
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Modello relazionale: esempio(N.B.: l’esempio ha solo scopo didattico; non proviene da caso reale; nomi di specialità mediche, di patologie e di reparti sono inventati…quelli di medici e pazienti…anche!)
Micalgia7
Morbo_di_ Herf
6Micalgia5Endobialite5Nuvasite4Piarite3Mitrosi3Murgillo2Gorite1Balitosi1PatologiaPaziente
affezione
Murgillo10Endobialite10Gorite9Nuvasite8
…continua
}
© Diego Magro
47
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Valori nulliPATOLOGIA(Nome(Stringa), Descrizione(*)(Stringa))
malattia degenerativa dell’apparato esopileo
Morbo_di_ Herf
NULLGoriteNULLNuvasiteNULLEndobialiteNULLMurgillo
affezione del balitoBalitosiNULLTufosidolore acuto a livello del micoMicalgiadegenerazione del mitroMitrosiinfiammazione dell’apparato piaricoPiarite
DescrizioneNome
patologia•Talvolta per alcune tuple non è possibile specificare il valore di ogni attributo (per una certa tupla potremmo sapere che il valore di un suo attributo non esiste; oppure che esiste, ma non conoscerlo o non ritenerlo essenziale; oppure potremmo non sapere nemmeno se esiste)
• DBMS relazionali usano un particolare valore, detto valore nullo(NULL), per esprimere la mancanza di valori per attributi nelle tuple
• N.B.N.B. Lo schema di relazione specifica, per ogni attributo, se esso può assumere valore nullo
© Diego Magro
48
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Espressioni booleane(poca roba) : definizione
• Per capire il significato di certi vincoli di integrità e di certe operazioni sulle basi di dati (vedi il seguito), abbiamo bisogno di conoscere qualcosa sulle espressioni booleane
• Supponiamo che p, q, r, … denotino ciascuna una qualche affermazione (di cui si possa dire se è vera o falsa), come ad es. “la neve è bianca” (vera), “5<4” (falsa), …
• p, q, r, … sono ciascuna un’espressione booleana, ma con l’uso di connettivi logici e delle parentesi “(”e “)” è possibile costruire espressioni booleane più complesse
• Consideriamo solo i seguenti connettivi: ¬¬¬¬ (“not”), ∧∧∧∧ (“and”) e ∨∨∨∨ (“or”)• ((¬¬¬¬p)∧∧∧∧q) ∧∧∧∧(s ∨∨∨∨ r) è un esempio di espressione booleana “complessa”
© Diego Magro
49
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Più precisamente:1. p, q, r, … sono ciascuna un’espressione booleana (detta
espressione booleana “atomica”)2. Se E1 ed E2 sono espressioni booleane, allora (¬¬¬¬E1), (E1 ∧∧∧∧ E2) ed(E1 ∨∨∨∨ E2) sono espressioni booleane3. Nient’altro è un’espressione booleana
Es. siccome p e q sono espressioni booleane, allora anche (p∨∨∨∨q) è un’espressione booleana, quindi, essendo r un’espressione booleana, anche (¬¬¬¬r) lo è, quindi anche ((p∨∨∨∨q)∧∧∧∧(¬¬¬¬r)) è un’espressione booleana.
Attenzione! Per costruire espressioni booleane dobbiamo rispettare la definizione riportata sopra, ad es. ((¬¬¬¬p) ∨∨∨∨ ∧∧∧∧q), ∧∧∧∧(s ∨∨∨∨ r), (s¬¬¬¬r), (p( non sono espressioni booleane perché non rispettano la definizione
Espressioni booleane(poca roba) : definizione
© Diego Magro
50
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• E’ possibile semplificare la scrittura delle espressioni booleane eliminando alcune parentesi, ad esempio:
((p∧q)∧r) può essere riscritta come p∧q∧r;((p∧q)∧(r∧s)) può essere riscritta come p∧q∧r∧s((p∨q)∨r) può essere riscritta come p∨q∨r;
((p∨q)∨(r∨s)) può essere riscritta come p∨q∨r∨s
• N.B. Si può dimostrare che una qualunque espressione del tipo ((E1 ∧∧∧∧ E2) ∧∧∧∧ E3) è equivalente a (E1 ∧∧∧∧ (E2 ∧∧∧∧ E3)); quindi, ad esempio, a partire p∧∧∧∧q∧∧∧∧r possiamo ricostruire sia la formula ((p∧∧∧∧q)∧∧∧∧r) che la formula (p∧∧∧∧(q∧∧∧∧r)).Analogamente ((E1 ∨∨∨∨ E2) ∨∨∨∨ E3) è equivalente a (E1 ∨∨∨∨ (E2 ∨∨∨∨ E3)); ad esempio, a partire p∨∨∨∨q∨∨∨∨r possiamo ricostruire sia la formula ((p∨∨∨∨q)∨∨∨∨r) che la formula (p∨∨∨∨(q∨∨∨∨r)).
Espressioni booleane(poca roba) : eliminazione di parentesi superflue
© Diego Magro
51
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Inoltre, è possibile eliminare ulteriori parentesi stabilendo convenzionalmente il seguente ordine di precedenza fra i connettivi logici: ¬¬¬¬ precede ∧∧∧∧ che precede ∨∨∨∨
• Per ricostruire la formula originaria a partire da una semplificata per mezzo di questa convenzione è sufficiente considerare prima il ¬¬¬¬ e racchiuderlo fra parentesi con la più corta formula a lui adiacente che lo segue; in seconda battuta, si racchiude ogni ∧∧∧∧ fra parentesi con le due più corte formule adiacenti (quella che lo precede e quella che lo segue); infine, si racchiude ogni ∨∨∨∨ fra parentesi con le due più corte formule adiacenti (quella che lo precede e quella che lo segue)
• Es. ¬¬¬¬p∨∨∨∨q∧∧∧∧r (consideriamo ¬¬¬¬) (¬¬¬¬p)∨∨∨∨q∧∧∧∧r(consideriamo ∧∧∧∧) (¬¬¬¬p)∨∨∨∨(q∧∧∧∧r) (consideriamo ∨∨∨∨) ((¬¬¬¬p)∨∨∨∨(q∧∧∧∧r));
• Es. ¬¬¬¬p∨∨∨∨q∧¬∧¬∧¬∧¬(r ∨∨∨∨s ∧¬∧¬∧¬∧¬t) (¬¬¬¬p)∨∨∨∨q∧∧∧∧(¬¬¬¬(r ∨∨∨∨s ∧∧∧∧(¬¬¬¬t))) (¬¬¬¬p)∨∨∨∨(q∧∧∧∧(¬¬¬¬( r ∨∨∨∨(s ∧∧∧∧(¬¬¬¬t)) ))) ((¬¬¬¬p)∨∨∨∨(q∧∧∧∧(¬¬¬¬(r ∨∨∨∨(s ∧∧∧∧(¬¬¬¬t)))))) [si noti che
nell’ultimo passaggio sarebbe stato inutile aggiungere una seconda coppia di parentesi per racchiudere la sotto-espressione evidenziata]
Espressioni booleane(poca roba) : eliminazione di parentesi superflue
© Diego Magro
52
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Es. si noti che in a ∧∧∧∧ (b ∨∨∨∨ c) non è corretto eliminare le parentesi; infatti a ∧∧∧∧ (b ∨∨∨∨ c) corrisponde alla formula (a ∧∧∧∧ (b ∨∨∨∨ c)); se eliminassimo le parentesi otterremmo a ∧∧∧∧ b ∨∨∨∨ c che corrisponde alla formula ((a ∧∧∧∧ b) ∨∨∨∨ c) che non è equivalente a (a ∧∧∧∧ (b ∨∨∨∨ c));
• Es. a ∧∧∧∧ b ∧∧∧∧ ¬¬¬¬ (b ∨∨∨∨ c) (consideriamo ¬¬¬¬) a ∧∧∧∧ b ∧∧∧∧ (¬¬¬¬ (b ∨∨∨∨ c)) (consideriamo ∧∧∧∧) ((a ∧∧∧∧ b) ∧∧∧∧ (¬¬¬¬ (b ∨∨∨∨ c))) (consideriamo ∨∨∨∨) ((a ∧∧∧∧ b) ∧∧∧∧ (¬¬¬¬ (b ∨∨∨∨ c))) (nell’ultimo passaggio non
cambia nulla perché sarebbe stato inutile racchiudere b ∨∨∨∨ c in una seconda coppia di parentesi)
• N.B. Le precedenti regole consentono di eliminare alcune parentesi, ma non tutte!
• N.B. Non sempre è opportuno eliminare una coppia di parentesi ogni volta che è possibile farlo, ad esempio, a∨∨∨∨(¬¬¬¬b∧∧∧∧c)∨∨∨∨d è più leggibile di a∨¬∨¬∨¬∨¬b∧∧∧∧c∨∨∨∨d
Espressioni booleane(poca roba) : eliminazione di parentesi superflue
© Diego Magro
53
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Delle espressioni booleane ci interessa dire se sono vere o false: per le espressioni booleane semplici (p, q, r, …) sappiamo dire immediatamente se esse sono vere (V) o false (F), es.: “la neve è bianca” V, “4 è pari” V, “4>5” F, “il cane è un suino” F
Espressioni booleane(poca roba) : valori di verità
© Diego Magro
54
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Per gli altri casi, dobbiamo definire il significato dei connettivi logici: lo facciamo attraverso le tabelle di verità
Espressioni booleane(poca roba) : valori di verità
FV
VF
(¬¬¬¬E)E¬¬¬¬ (not): (¬¬¬¬E) è vera se e solo se E è falsa
Es.:
• “la neve è bianca” V, quindi ¬“la neve è bianca” F;
• “4>5” F, quindi ¬“4>5” V
© Diego Magro
55
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Espressioni booleane(poca roba) : valori di verità
VVV
FFV
FVF
FFF
(E1 ∧∧∧∧ E2)E2E1
∧∧∧∧ (and): (E1 ∧∧∧∧ E2) è vera se e solo se E1 ed E2 sono entrambe vere
Es.:
• “la neve è bianca” V , “4 è pari” V, quindi “la neve è bianca”∧“4 è pari” V;
• “la neve è bianca” V, “il cane è un suino” F, quindi “la neve è bianca” ∧“il cane è un suino” F
• “4>5” F, “il cane è un suino” F, quindi “4>5”∧“il cane è un suino” F
GeneralizzandoGeneralizzando: (E1 ∧∧∧∧ E2 ∧∧∧∧ … ∧∧∧∧ En)
è vera se e solo se sono tutte vere
E1, E2, …, En.
© Diego Magro
56
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Espressioni booleane(poca roba) : valori di verità
VVV
VFV
VVF
FFF
(E1 ∨∨∨∨ E2)E2E1
∨∨∨∨ (or): (E1 ∨∨∨∨ E2) è vera se e solo se almeno una fra E1 ed E2 è vera
Es.:
• “la neve è bianca” V , “4 è pari” V, quindi “la neve è bianca”∨“4 èpari” V;
• “la neve è bianca” V, “il cane è un suino” F, quindi “la neve è bianca”∨“il cane è un suino” V
• “4>5” F, “il cane è un suino” F, quindi “4>5”∨“il cane è un suino” F
GeneralizzandoGeneralizzando: (E1 ∨∨∨∨ E2 ∨∨∨∨ … ∨∨∨∨ En)
è vera se e solo almeno una fra
E1, E2, …, En è vera.
© Diego Magro
57
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità
• Dato uno schema di basi di dati, in generale non è vero che qualunque insieme di tuple sullo schema rappresenti dati significativi
impedire l’introduzione di dati non significativiDBMS consentono di esprimere proprietà che i dati non possono
violare (il DBMS si fa carico di impedire qualunque situazione che violi anche solo una di queste proprietà)
• Tali proprietà sono dette VINCOLI DI INTEGRITA’VINCOLI DI INTEGRITA’ (molto importanti!!!)
© Diego Magro
58
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (I)
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena10AlbologiaMiffioSebastianoNULL
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Valore nullo su “identificatore”:
l’ultima tupla descrive un
medico senza fornirne il numero
che lo identifica all’interno
dell’ospedale
© Diego Magro
59
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (II)
NULLRossiMario11OrtologiaRossiMarioNULL
OrtologiaBianchiElena10OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Tuple indistinguibili:
le ultime due tuple di “medico”
non sono distinguibili
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
© Diego Magro
60
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (III)
OrtologiaBianchiElena10NULLNULLNULL11
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Tuple prive di contenuto informativo:
l’ultima tupla “medico” non fornisce
alcuna informazione utile sul
medico che essa dovrebbe
descrivere (a parte il fatto che esiste
e che ha identificatore 11)
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
© Diego Magro
61
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (IV)
OrtologiaBianchiElena10NusologiaBergamiSonia- 1
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Valori indesiderati: anche se –1
appartiene al dominio dell’attributo
Id di “medico”, non vorremmo avere
numeri negativi fra gli identificatori
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
© Diego Magro
62
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (V)
OrtologiaBianchiElena10NusologiaMoriniNadia1
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Identificatore ripetuto: il campo
identificatore dell’ultima tupla
di “medico” è uguale a quello della
prima: vorremmo avere
“identificatori” tutti distinti
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
© Diego Magro
63
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità: esempi di situazioni indesiderate (VI)
OrtologiaBianchiElena10RuffologiaFuriniElisabetta11
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Riferimenti ad elementi inesistenti:
l’ultima tupla di “medico” descrive
un medico che appartiene al reparto
di Ruffologia, il quale non compare fra
i reparti dell’ospedale
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
© Diego Magro
64
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Due classi di vincoli di integrità:
1. Vincoli intrarelazionali: il loro soddisfacimento è definito rispetto a singole relazioni della base di dati
2. Vincoli interrelazionali: coinvolgono più relazioni
Vincoli di integrità
© Diego Magro
65
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli “NOT NULL”
Come visto nei primi tre esempi di “situazioni indesiderate”, per alcuni attributi può essere inopportuno consentire valori nulli
la definizione di uno schema di relazione può vincolare alcuni attributi ad essere non nulli
Nel nostro esempio dell’ospedale, è stato imposto il vincolo che tutti gli attributi di ogni relazione abbiano valore non nullo, ad eccezione dell’attributo “Descrizione” nello schema di relazione PATOLOGIA(Nome(Stringa), Descrizione(*)(Stringa)) (gli attributi che possono assumere valore nullo sono asteriscati), considerato non essenziale
le prime 3 situazioni indesiderate sono impedite (il DBMS garantisce soddisfacimento dei vincoli NOT NULL e impedisce introduzione delle tuple con campi NULL degli esempi (I), (II) e (III))
Vincoli di integrità intrarelazionali: vincoli di tupla
© Diego Magro
66
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Altro esempio: restrizione dominio attributi
DBMS consentono di esprimere vincoli che restringono domini di attributi. Es., “medico.Id > 0” impone che l’identificatore di un medico sia un numero positivo.
situazione indesiderata (IV) è impedita (DBMS rifiuta introduzione di tuple con Id non positivo nella relazione “medico”)
• Possibili anche vincoli che coinvolgono più di un attributo
Vincoli di integrità intrarelazionali: vincoli di tupla
© Diego Magro
67
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Il concetto di chiavechiave è un concetto chiave nel modello relazionale!
La “situazione indesiderata (V)” evidenzia la necessità che il (valore del) campo “Id” in “medico” identifichi ciascun medico non devono esserci due medici (due tuple) con lo stesso valore per “Id”
Una chiave di una relazione è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione
Vincoli di integrità intrarelazionali: chiavi
© Diego Magro
68
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Più precisamente:sia K un insieme di attributi di uno schema di relazione R:• si dice che K è superchiavesuperchiave di R se e solo se nella base di dati sono ammesse solo istanze di relazioni su R in cui non vi sono due tuple t1 e t2 distinte che hanno gli stessi valori sugli attributi in K, cioè se t1 ≠≠≠≠ t2allora t1[K] ≠≠≠≠ t2[K] (in altre parole, se t1[K] = t2[K] allora t1 e t2 sono la stessa tupla)
• K è chiavechiave di R se e solo se è superchiave minimale di R (cioè non esiste alcun’altra superchiave K’ che sia sottoinsieme proprio di K)
Vincoli di integrità intrarelazionali: chiavi
© Diego Magro
69
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
OrtologiaBianchiElena10NusologiaMoriniNadia1
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeId
medico
Per evitare la ripetizione di valori
dell’attributo “Id” (“situazione
indesiderata (V)”), specifichiamo
nella definizione dello schema
di relazione MEDICO che
“Id” è chiave in “medico”
non possono esservi due tuple
distinte t1 e t2 tali che t1[Id] = t2[Id]
il DBMS rifiuta l’inserimento
dell’ultima tupla (assumendo che
la prima sia già presente)
NO!
© Diego Magro
70
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
OrtologiaBianchiElena10OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeId
medico
N.B.:
• se Id è chiave, (Id, Nome, Cognome) è ovviamente superchiave, ma non chiave, in quanto contiene la chiave (cioè Id)
• (Nome, Cognome) non è superchiave (quindi neanche chiave), in quanto possono esservi medici diversi con lo stesso nome e lo stesso cognome (ad. esempio, vi sono due “Carlo Rossi” e due “Elena Bianchi”)
© Diego Magro
71
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavipaziente
Ortologia04/02/1920AlbitiAndrea10Riologia03/04/1990TinosaSara9Albologia11/09/1950BianchiCarlo8Albologia10/09/1970BianchiCarlo7Nusologia12/09/1938TinosaErmete6Riologia15/02/1972MinoriKatia5Albologia20/07/1967BucciMilena4Nusologia24/11/1980VerdiElisa3Ortologia15/03/1982RossiMario2Ortologia25/10/1957RossiMario1
RepartoData-Nascita
CognomeNomeId Anche nella definizione dello schema PAZIENTE è opportuno imporre che “Id” sia chiave
Supponiamo di aver imposto analogo vincolo anche su (Nome, Cognome, Data-Nascita) [nella realtà non è plausibile, lo facciamo a scopo didattico] in una in una relazione purelazione puòòesservi piesservi piùù di una di una chiavechiave
© Diego Magro
72
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavispecializzazione
Ortologia6Nusologia5Zelaredia5Zelaredia4Riologia4Albologia3Refistica2Nusologia2Feniatria1Ortologia1SpecialitaMedico
Ortologia10Ortologia9Riologia8Albologia7
…continua
E’ possibile definire una chiave?
“Medico” non è una buona chiave: uno stesso medico può avere più specializzazioni (es.: il medico “1” ha due specializzazioni); “Specialità” non è una buona chiave: medici diversi possono essere specializzati nella stessa disciplina (es.: i medici “1” e “6” sono specializzati in “Ortologia”)
Allora scegliamo come chiave tutti gli attributi della relazione: (Medico, Specialita)
© Diego Magro
73
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
Udite, udite!Una relazione ha sempre almeno una chiaveUna relazione ha sempre almeno una chiave!N.B. Non si è scritto “Una relazione deve avere sempre almeno una chiave”,
perché ce l’ha e basta! Questa proprietà segue dal modello relazionale, infatti,
per ogni schema di relazione, l’insieme di tutti gli attributi è sempre superchiave (infatti, un’istanza di relazione non può contenere tuple ripetute); due possibilità:1. se nessun sottoinsieme proprio di tale insieme è superchiave, allora esso è
chiave (come nel precedente esempio dello schema SPECIALIZZAZIONE) e quindi abbiamo trovato una chiave;
2. se, invece, esiste un sottoinsieme proprio di attributi che è ancora superchiave, o questo nuovo sottoinsieme di attributi è chiave, oppure si procede con questo ragionamento fino a trovare la chiave (e la si trova, perché gli attributi sono in numero finito)
© Diego Magro
74
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
paziente
NULLNULLBianchiLuigi12Albologia26/04/88BianchiLuigiNULLRiologiaNULLNeriUgoNULLOrtologia04/02/1920AlbitiAndrea10
Riologia03/04/1990TinosaSara9
Albologia11/09/1950BianchiCarlo8
Albologia10/09/1970BianchiCarlo7
Nusologia12/09/1938TinosaErmete6
Riologia15/02/1972MinoriKatia5
Albologia20/07/1967BucciMilena4
Nusologia24/11/1980VerdiElisa3
Ortologia15/03/1982RossiMario2
Ortologia25/10/1957RossiMario1
RepartoData-Nascita
Cognome
NomeId
Supponiamo di aver definito le due chiavi (Id) e (Nome, Cognome, Data-Nascita).
Supponiamo, provvisoriamente, di ammettere valori nulli per Id (sappiamo già che non è
una buona scelta), per Data-Nascita e per Reparto.
Si noti che in ogni chiave è presente un attributo che può assumere valori nulli
Si produce una situazione indesiderarta:
terzultima tupla: ha valori nulli in entrambe le chiavi non èidentificabile
ultime due tuple: ciascuna specifica completamente gli attributi di una (sola) delle due chiavi, tuttavia non sono distinguibili
© Diego Magro
75
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Come si evitano problemi come il precedente?Il modello relazionale potrebbe imporre che tutti gli attributi di ogni chiave debbano essere non nulli… “troooooppo restrittivo!”
Il modello relazionale impone che ogni schema di relazione definisca sempre una chiave primariachiave primaria: essa costituisce il modo privilegiato per identificare le tuple e nessuno dei suoi attributi puo’ essere nullo
…gli attributi delle altre chiavi possono essere nulli (se non diversamente specificato nella definizione dello schema di relazione)
Es.: in PAZIENTE possiamo scegliere Id come chiave primaria. In questo modo, il DBMS rifiuta l’inserimento della terzultima e della penultima tupla dell’esempio precedente
Vincoli di integrità intrarelazionali: chiavi
© Diego Magro
76
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
Schema di base di dati:OSPEDALEOSPEDALE = {REPARTO(Nome(Stringa), Primario(Intero)) MEDICO(Id(Intero), Nome(Stringa), Cognome(Stringa), Reparto(Stringa))SPECIALITA(Nome(Stringa))SPECIALIZZAZIONE(Medico(Intero), Specialita(Stringa))PATOLOGIA(Nome(Stringa), Descrizione(*)(Stringa))PATOLOGIA_SPECIALITA(Patologia(Stringa), Specialita(Stringa))PAZIENTE(Id(Intero), Nome(Stringa), Cognome(Stringa), DataNascita(Data),
Reparto(Stringa))AFFEZIONE(Paziente(Intero), Patologia(Stringa))}(*)Possibile valore nullo, sottolineatura: chiave primaria
© Diego Magro
77
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità intrarelazionali: chiavi
N.B.: nei casi reali, quando non sia possibile trovare un insieme di attributi identificanti e sempre disponibili (es. codice fiscale, matricola,… nel nostro esempio Nome per REPARTO, ecc.) che fungano da chiave, occorre introdurre un codice “artificiale” (vedi i vari “Id” del nostro esempio)
© Diego Magro
78
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità interrelazionali: vincoli di integrità referenziale• E’ la più importante classe di vincoli interrelazionali
• Consente di evitare situazioni come la “situazione indesiderata (VI)”
• Assieme ai vincoli di chiave fanno del modello relazionale un modello basato su valori!
© Diego Magro
79
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena10RuffologiaFuriniElisabetta11
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto
medico
Per evitare la “situazione indesiderata (VI)” dobbiamo imporre il vincolo che tutti i valori non nulli dell’attributo Reparto in “medico” siano nomi di reparti esistenti, cioè compaiano come valori di Nome in “reparto”: vincolo di integrità referenziale fra l’attributo Reparto in “medico” e la relazione “reparto”
© Diego Magro
80
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Più precisamente:Siano • r1 ed r2 due relazioni rispettivamente sugli schemi e R1 ed R2
• K1 la chiave primaria di R1
• X un insieme di attributi di R2 (con domini compatibili con attributi in K1 e opportunamente ordinato)
Il vincolo di integrità referenziale fra X e (ogni istanza di) R1 impone che per ogni tupla t2 ∈∈∈∈ r2 tale che t2[X] non contiene valori nulli, esista una tupla t1 ∈∈∈∈ r1 tale che t1[K1] = t2[X]
Se sussiste tale vincolo di integrità referenziale, r1 è detta tabella esterna e r2 è detta tabella interna
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
© Diego Magro
81
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena10RuffologiaFuriniElisabetta11
OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto medico
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
In questo caso, l’ultima tupla t2 in “medico” non soddisfa l’integrità referenziale imposta, in quanto t2[Reparto] = Ruffologia, ma non esiste alcuna tupla t1 in “reparto” tale che t1[Nome] = Ruffologia
DBMS rifiuta inserimento della tupla in campo nero (data la relazione “reparto” riportata sopra)
© Diego Magro
82
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
• Come si comporta il DBMS di fronte ad una violazione di un vincolo di integrità referenziale?
• (Si ricordi che in una base di dati è possibile non solo aggiungere dati nuovi, ma anche cancellare o modificare dati esistenti)
• Occorre distinguere due tipi di violazioni1. violazione a seguito di modifica della tabella interna2. violazione a seguito di modifica della tabella esterna
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
© Diego Magro
83
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Violazione a seguito di modifica della tabella interna
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena10OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2GurfatriaRossiCarlo1
RepartoCognomeNomeIdreparto medico
Sia l’introduzione di una tupla in “medico” che viola integrità referenziale (come in esempio precedente), sia modifica come nella prima tupla sono sono impedite dal DBMSimpedite dal DBMS
© Diego Magro
84
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Violazione a seguito di modifica della tabella esterna
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
PrimarioNome
4Riologia3Albologia2Nusologia1Ortologia
OrtologiaBianchiElena10OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeId
reparto medico
Cancellazione:
Il DBMS consente di Il DBMS consente di specificare la politica da specificare la politica da adottare (e poi ne assicura adottare (e poi ne assicura l’attuazione)l’attuazione) : impedire la cancellazione della tupla in “reparto”, cancellare tutte le tuple di “medico” il cui Reparto è Ortologia, porre a NULL il valore di Reparto in tali tuple, …
© Diego Magro
85
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Violazione a seguito di modifica della tabella esterna
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
PrimarioNome
4Riologia3Albologia2Nusologia1Endocitria
OrtologiaBianchiElena10OrtologiaBianchiElena9RiologiaBianchiSergio8AlbologiaMirtoPiero7OrtologiaSelziNadia6NusologiaRossiCarlo5RiologiaDintiFederico4AlbologiaLulliMarika3NusologiaVerdiLuisa2OrtologiaRossiCarlo1
RepartoCognomeNomeIdreparto medico
Modifica del valore della chiave:
Il DBMS consente di Il DBMS consente di specificare la politica da specificare la politica da adottare (e poi ne assicura adottare (e poi ne assicura l’attuazione)l’attuazione) : impedire la modifica della prima tupla di “reparto”, cambiare in “Endocitria” il valore di Reparto nelle tuple in campo grigio di “medico”, porre a NULL il valore di Reparto in tali tuple, … © Diego Magro
86
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Altri esempi
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
RefisticaFeniatria
Zelaredia
SubalogiaRiologiaAlbologiaNusologiaOrtologia
Nomespecialita specializzazione
Ortologia6Nusologia5Zelaredia5Zelaredia4Riologia4Albologia3Refistica2Nusologia2Feniatria1Ortologia1SpecialitaMedico
Ortologia10Ortologia9Riologia8Albologia7
…continua
Integrità referenziale fra attributo Specialita di SPECIALIZZAZIONE e SPECIALITA
© Diego Magro
87
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Altri esempi
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
paziente
Ortologia04/02/1920AlbitiAndrea10
Riologia03/04/1990TinosaSara9
Albologia11/09/1950BianchiCarlo8
Albologia10/09/1970BianchiCarlo7
Nusologia12/09/1938TinosaErmete6
Riologia15/02/1972MinoriKatia5
Albologia20/07/1967BucciMilena4
Nusologia24/11/1980VerdiElisa3
Ortologia15/03/1982RossiMario2
Ortologia25/10/1957RossiMario1
RepartoData-Nascita
CognomeNomeId
Micalgia7
Morbo_di_ Herf
6
Micalgia5
Endobialite5
Nuvasite4
Piarite3
Mitrosi3
Murgillo2
Gorite1
Balitosi1
PatologiaPaziente
affezione
Murgillo10
Endobialite10
Gorite9
Nuvasite8
…continua
Integrità referenziale fra attributo Paziente di AFFEZIONE e PAZIENTE
© Diego Magro
88
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Altri esempi
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
Micalgia7
Morbo_di_ Herf
6
Micalgia5
Endobialite5
Nuvasite4
Piarite3
Mitrosi3
Murgillo2
Gorite1
Balitosi1
PatologiaPaziente
affezione
Murgillo10
Endobialite10
Gorite9
Nuvasite8
…continua
Integrità referenziale fra attributo Patologia di AFFEZIONE e PATOLOGIA
malattia degenerativa dell’apparato esopileo
Morbo_di_ Herf
NULLGorite
NULLNuvasite
NULLEndobialite
NULLMurgillo
affezione del balitoBalitosi
NULLTufosi
dolore acuto a livello del micoMicalgia
degenerazione del mitroMitrosi
infiammazione dell’apparato piaricoPiarite
DescrizioneNome
patologia
© Diego Magro
89
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Che vuol dire che il modello relazionale è un modello “basato su valori”?
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
Micalgia7
Morbo_di_ Herf
6
Micalgia5
Endobialite5
Nuvasite4
Piarite3
Mitrosi3
Murgillo2
Gorite1
Balitosi1
PatologiaPaziente
affezione
Murgillo10
Endobialite10
Gorite9
Nuvasite8
…continua
Consideriamo prima tupla di “affezione” essa fa riferimento ad un paziente tramite un valore (“1”) che lo identifica univocamente all’interno della tabella “paziente” in cui esso è descritto: non c’è alcun riferimento al “luogo fisico” in cui la descrizione del paziente è memorizzata
paziente
Ortologia04/02/1920AlbitiAndrea10
Riologia03/04/1990TinosaSara9
Albologia11/09/1950BianchiCarlo8
Albologia10/09/1970BianchiCarlo7
Nusologia12/09/1938TinosaErmete6
Riologia15/02/1972MinoriKatia5
Albologia20/07/1967BucciMilena4
Nusologia24/11/1980VerdiElisa3
Ortologia15/03/1982RossiMario2
Ortologia25/10/1957RossiMario1
RepartoData-Nascita
CognomeNomeId
© Diego Magro
90
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Schema di base di dati ((*): Possibile valore nullo; sottolineatura: chiave primaria; : integrità referenziale; schemi in campo grigio: ripetuti su 2 slide):OSPEDALEOSPEDALE = {
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
REPARTO(Nome(Stringa), Primario(Intero))
MEDICO(Id(Intero), Nome(Stringa), Cognome(Stringa), Reparto(Stringa))
SPECIALIZZAZIONE(Medico(Intero), Specialita(Stringa))
PAZIENTE(Id(Intero), Nome(Stringa), Cognome(Stringa), DataNascita(Data), Reparto(Stringa))
AFFEZIONE(Paziente(Intero), Patologia(Stringa))
© Diego Magro
91
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Vincoli di integrità interrelazionali: vincoli di integrità referenziale
PATOLOGIA(Nome(Stringa), Descrizione(*)(Stringa))
SPECIALITA(Nome(Stringa))
PATOLOGIA_SPECIALITA(Patologia(Stringa), Specialita(Stringa))
SPECIALIZZAZIONE(Medico(Intero), Specialita(Stringa)) }
AFFEZIONE(Paziente(Intero), Patologia(Stringa))
© Diego Magro
92
Information and Communication Technnology II a.a. 2006-2007Dipartimento
Informatica
Altri vincoli di integrità
Possono esservi altri vincoli di integrità oltre a quelli qui esaminati, ad es. la base di dati “ospedale” soddisfa anche i due seguenti vincoli:
1. il primario di un reparto appartiene a tale reparto
2. ogni paziente è ricoverato in un reparto diretto da un primario specializzato in una disciplina cui è attinente almeno una dellepatologie del paziente
…controllare per credere…controllare per credere!