Il Modello Relazionale - · 745 Neri Anna 23/04/1982 768 Verdi Giuseppe 12/02/1982 614 Rossi...
Transcript of Il Modello Relazionale - · 745 Neri Anna 23/04/1982 768 Verdi Giuseppe 12/02/1982 614 Rossi...
1
Elaborazione Automatica dei Dati
IL MODELLO LOGICO DEI DATI
Enrico Cavalli
Anno Accademico 2012-2013
Il Modello Relazionale
2
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 3
Le relazioni
• Il successo del modello relazionale si fonda sulla visione tabellare dei dati, semplice e intuitiva, ma basata sul concetto matematico di relazioneche ne permette una formalizzazione rigorosa
• Relazione:– In matematica si definisce prodotto cartesiano di due insiemi A e B,
A×B l’insieme delle coppie ordinate (a,b), dove: a∈A, b∈B.
– A = {2, 3}, B = {4, 9, 16}
– A×B = { (2,4), (2,9), (2,16), (3,4), (3,9), (3,16) }
– una relazione (binaria) sugli insiemi A e B, detti domini della relazione , è un insieme R ⊆⊆⊆⊆ A×B.
– R = { (2,4), (3,9) } è una relazione su A e B che si può indicare con il nome RadiceQuadrataDi � RadiceQuadrataDi (2,4)
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 4
Relazioni e Tabelle
– A = {2, 3}, B = {4, 9, 16}
– A×B = { (2,4), (2,9), (2,16), (3,4), (3,9), (3,16) }– R = { (2,4), (3,9) } ⊆⊆⊆⊆ A×B.
2 42 92 163 43 93 16
2 42 92 163 43 93 16
A ×××× B
Relazione su A e B
Un dominio rappresenta l’insieme di valori ammessi per
l’attributo
93
42
RadiceQuadrataDi (a, b)
3
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 5
Relazioni e Tabelle
• Le definizioni di prodotto cartesiano tra due insiemi e di relazione binaria si estendono naturalmente al caso di n insiemi.
• Grado della relazione : il numero delle componenti del prodotto cartesiano
• Cardinalità della relazione : il numero di n-uple che compaiono nella relazione
• Consideriamo una relazione sui domini A, B, C:A = { Fiat, Citroen }, B = { Punto, Idea, C3 }, C = { B, G }
Fiat Punto B
Fiat Punto GFiat Idea BFiat Idea GFiat C3 BFiat C3 G
Citroen Punto BCitroen Punto GCitroen Idea BCitroen Idea GCitroen C3 BCitroen C3 G
Fiat Punto B
Fiat Punto GFiat Idea BFiat Idea GFiat C3 BFiat C3 G
Citroen Punto BCitroen Punto GCitroen Idea BCitroen Idea GCitroen C3 BCitroen C3 G
Fiat Punto B
Fiat Punto GFiat Idea BFiat Idea G
Citroen C3 BCitroen C3 G
Fiat Punto B
Fiat Punto GFiat Idea BFiat Idea G
Citroen C3 BCitroen C3 G
A ×××× B ×××× CR( A, B, C )
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 6
Juventus Lazio 3 1 Lazio Milan 2 0
Juventus Roma 1 2 Roma Milan 0 1 Milan Inter 0 0 Inter Milan 1 1
Relazioni con attributi
La relazione, che descrive i risultati di alcune partite di calcio, è
un sottoinsieme di:
stringa × stringa × intero × intero
Una relazione è un insieme, pertanto:
• Non è definito un ordinamento tra le n-uple della relazione: le righe della relazione non sono ordinate (gli insiemi non sono ordinati)
• Le n-uple della relazione sono distinte l’una dall’altra. In una relazione non ci possono essere due righe uguali (gli elementi di un insieme sono distinti)
• La n-upla è al proprio interno ordinata : l’i-esimo valore proviene dall’i-esimo dominio. La posizione è significativa per l’interpretazione dei dati della relazione: si veda ad esempio la n-upla: ( Juventus Roma 1 2 )
4
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 7
Relazioni con attributi
• Associamo ad ogni dominio della relazione un nome, detto attributo , che descrive il ruolo giocato dal dominio stesso
• Il nome della relazione con i suoi attributi è detto schema della relazioneCAMPIONATO(Squadra1, Squadra2, Goal1, Goal2)
• Le righe di una relazione, ad esclusione della riga che descrive gli attributi, sono dette tuple .
• Il nome di un attributo è costruito mediante la dot notation :
NomeRelazione.NomeAttributo
Squadra 1 Squadra 2 Goal 1 Goal 2
Juventus Lazio 3 1Lazio Milan 2 0
Juventus Roma 1 2Roma Milan 0 1Milan Inter 0 0Inter Milan 1 1
Squadra 1 Squadra 2 Goal 1 Goal 2
Juventus Lazio 3 1Lazio Milan 2 0
Juventus Roma 1 2Roma Milan 0 1Milan Inter 0 0Inter Milan 1 1
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 8
Relazioni con attributi
Squadra 1 Squadra 2 Goal 1 Goal 2
Juventus Lazio 3 1
Lazio Milan 2 0
Juventus Roma 1 2
Roma Milan 0 1
Milan Inter 0 0Inter Milan 1 1
Squadra 2 Squadra 1 Goal 1 Goal 2
Lazio Juventus 3 1
Milan Lazio 2 0
Roma Juventus 1 2
Milan Roma 0 1
Inter Milan 0 0Milan Inter 1 1
• L’introduzione degli attributi modifica la definizione di relazione e rende l’ordine degli attributi irrilevante
• Relazioni matematiche : elementi individuati per la posizione
• Database relazionali : elementi riconosciuti dal nome degli attributi
5
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 9
Relazioni e basi di dati
• Una base dati è composta da diverse relazioni
• Schema della base dati è l’insieme degli schemi delle relazioni che la compongono
• Il modello relazionale è un modello basato sui valori : il collegamento fra dati in relazioni diverse è rappresentato mediante valori corrispondenti
Matricola Cognome Nome DataNascita
545 Rossi Maria 25/11/1981
745 Neri Anna 23/04/1982768 Verdi Giuseppe 12/02/1982
614 Rossi Pablito 10/10/1981
653 Bruni Carla 01/12/1981314 Cavour Benso 05/10/1983
Codice Titolo Docente
1 Matematica Allevi
3 Informatica Gnudi4 Economia Leoni
Studente Voto Corso
545 28 1545 27 4653 25 1768 24 3314 30 4
Corsi
Esami
Studenti
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 10
Relazioni e basi di dati
• Hanno senso relazioni con un solo attributo?
• Si pensi alla relazione Studenti ed alla necessità di avere informazioni sugli studenti lavoratori, oppure sui laureandi:
Matricola Cognome Nome DataNascita
545 Rossi Maria 25/11/1981
745 Neri Anna 23/04/1982768 Verdi Giuseppe 12/02/1982
614 Rossi Pablito 10/10/1981
653 Bruni Carla 01/12/1981314 Cavour Benso 05/10/1983
Studenti
Matricola
545
745653
314
Lavoratori Matricola
545
768653
614
Laureandi
6
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 11
Chiavi di una relazione
• Supponendo che Cognome, Nome e DataNascita identifichino univocamente un individuo, una tupla può essere riconosciuta dai valori di:
− Matricola
− Cognome, Nome, DataNascita
− Matricola, DataNascita
− Matricola, Facoltà
− Cognome, Nome, DataNascita, Facoltà
− …
Matricola Cognome Nome DataNascita Facoltà
545 Rossi Maria 12/05/1983 Eco653 Neri Anna 23/04/1982 Eco768 Verdi Giuseppe 12/02/1982 Ing834 Rossi Maria 10/10/1981 Mat314 Cavour Benso 10/10/1981 Ling
Matricola Cognome Nome DataNascita Facoltà
545 Rossi Maria 12/05/1983 Eco653 Neri Anna 23/04/1982 Eco768 Verdi Giuseppe 12/02/1982 Ing834 Rossi Maria 10/10/1981 Mat314 Cavour Benso 10/10/1981 Ling
Studenti
Ogni insieme di attributi che include Matricola
oppure l’insieme di attributi Nome, Cognome, DataNascita
permette di identificareuna sola tupla
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 12
• Studenti ( Matricola, Cognome, Nome, DataNascita, Facoltà, CodFis )
7
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 13
Chiavi
• Ci sono insiemi di attributi che permettono di identificare univocamente ogni tupla di una relazione, mentre altri non lo permettono
• Un insieme di attributi A si dice superchiave di una relazione se nella relazione non vi sono due tuple con il medesimo valore di A
• Un insieme di attributi A si dice chiave (o chiave candidata ) di una relazione se A è una superchiave minimale della relazione, cioè non esiste alcun sottoinsieme proprio di A che sia superchiave
• Chiave primaria di una relazione è una delle chiavi candidate secondo un criterio di scelta deciso dal progettista del database
– Identificare superchiavi e chiavi di Studenti– Una relazione ha sempre una chiave ?– Perché DataNascita non può essere una chiave di Studenti ?
– Se nella tabella Studenti tutti i Nomi fossero differenti si potrebbe dire che Nome è una chiave? Sarebbe una scelta ragionevole?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 14
Chiave esterna di una relazione
• Infrazioni contiene riferimenti ad Agenti e Veicoli:
– Infrazioni.Agente ���� Agenti.Matricola
– { Infraz.Prov, Infraz.Numero } ���� { Veicoli.Prov, Veicoli.Numero }
– Agente e { Prov, Numero } sono Chiavi Esterne di In frazioni
– Infrazioni( Codice , Data, Agente, Articolo, Prov, Numero )
Codice Data Agente Articolo Prov Numero
3256 25/10/2002 567 44 RM 4E54324554 26/10/2002 456 34 RM 4E54322557 26/10/2002 456 34 RM 2F76433876 15/10/2002 456 53 MI 2F76467856 12/10/2002 567 44 MI 2F7646
Matricola CF Cognome Nome
567 RSSMRO… Rossi Mario456 NRELGI…… Neri Luigi638 NREPRO…. Neri Piero
Prov Numero Proprietario Indirizzo
RM 2F7643 Verdi Piero Via TigliRM 1A2396 Verdi Piero Via TigliRM 4E5432 Bini Luca Via AceriMI 2F7646 Luci Gino Via Aceri
Veicoli
Agenti
Infrazioni
Gli attributi chiave sono sotto-
lineati, le chiaviesterne sono
in corsivo
8
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 15
Esercizi
Per ognuna delle seguenti basi di dati, identificare: dominio di ogni attributo, chiavi, chiavi esterne
1. Data Base Multe :• Agenti ( Matricola, CodFis, Cognome, Nome ) • Infrazioni ( Codice, Agente, Data, Articolo, Prov, Numero ) • Veicoli ( Prov, Numero, Proprietario, Indirizzo )
2. Data Base Università :• Studenti ( Matricola, Cognome, Nome, DataNascita, CodiceFiscale )• Corsi ( Codice, NomeCorso, Docente )• Esami ( Studente, Corso, Voto, Lode, Data )
3. Data Base Banca1 :– Clienti ( Nome, Via, Città, NumConto )– Conti ( NumConto, Saldo )
4. Data Base Banca2 :• Agenzie ( NomeAgenzia, Indirizzo, Capitalizzazione )• Clienti ( NomeCliente, Indirizzo, Città )• Prestiti ( NomeAgenzia, NumeroPrestito, NomeCliente, Importo )• Depositi ( NomeAgenzia, NumeroDeposito, NomeCliente, Importo )
5. Data Base ContiTrattoria:• Ricevute ( Num, Data, Totale )• Dettaglio ( Num, Qta, Descrizione, Importo ) – e anche l’alternativa per Dettaglio: • Dettaglio (Num, Riga, Qta, Descrizione, Importo)
Dal modello concettuale al modello logico
9
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 17
Dal modello E/R al modello relazionale
• Ogni Entità diventa una relazione– Ogni attributo delle Entità diventa una colonna di una relazione– Domini degli attributi
– Chiavi
Impiegati
Matricola Nome Età Stipendio
101 M.Rossi 34 40103 M.Bianchi 23 35104 L.Neri 38 61105 N.Bini 44 38210 M.Celli 49 60231 S.Bisi 50 60
252 N.Bini 44 70301 S.Rossi 34 70
375 M.Rossi 50 65
Impiegato
Matricola {PK}NomeEtàStipendio
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 18
Le associazioni: regole base (1)
• L’associazione uno a uno diventa un’unica relazione che contiene gli attributi di entrambe le entità e, se ci sono, gli attributi dell’associazione
• L’associazione uno a molti si traduce in una coppia di tabelle:
– una prima relazione è derivata dall’entità che gioca il ruolo di entitàa uno nell’associazione
– la seconda relazione è ottenuta integrando gli attributi dell’entitàche gioca il ruolo di entità a molti nell’associazione con:
� la chiave primaria dell’entità a uno , che diventa chiave esternadella nuova relazione
� gli eventuali attributi dell’associazione
10
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 19
Le associazioni: regole base (2)
• L’associazione molti a molti si traduce in tre relazioni:
– due tabelle sono derivate dalle due Entità che compaiono nell’associazione con i corrispondenti attributi
– la terza tabella è costruita con:
� le chiavi delle precedenti entità
� gli eventuali attributi dell’associazione
� la chiave primaria della nuova relazione è composta dalle chiavi delle due entità e da ogni altro attributo necessario a garantire l’unicità della chiave
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 20
Associazione “uno a uno”
Occupazione
Codice Nome Settore Fila Numero Note
2340 Nino Verdi A 12 12370 Lino Bianchi A 12 2 R21323 Marzia Rossi A 3 434510 Franco Dini B 1 545678 Silvia Gualeni B 4 3 H53325 Franco Bassetti B 2 156789 Enrico Toti A 1 8
Spettatore Posto1 1
Codice {PK}Nome
Settore {PPK}Fila {PPK}Numero {PPK}Note
Occupare
Occupazione :Qual è la chiave?Come si sceglie?
Si consideri il caso:
Cittadini, Parlamentari
11
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 21
Associazione “uno a molti”
StudentiMatricola Nome Indirizzo CodFacoltà DataIscrizione AltriDati
2340 Nino Verdi Milano ing 12/12/022370 Lino Bianchi Torino ing 13/12/0221323 Marzia Rossi Bergamo eco 15/9/8934510 Franco Dini Bergamo eco 17/10/9945678 Silvia Gualeni Como lin 18/11/0153325 Franco Bassetti Milano eco 15/09/0056789 Enrico Toti Brescia lin 15/10/01
FacoltàCodice Descrizione NumeroAnni
eco Economia 4ing Ingegneria 5lin Lingue 4
med Medicina 6
Facoltà Studente1 N
DataIscrizioneAltriDati
Codice {PK}DescrizioneNumeroAnni
Matricola {PK}NomeIndirizzo
Essere Iscritto
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 22
Associazione “molti a molti”
Studenti
Matricola Nome Indirizzo
122 Adriana Firenze128 Daniele Lecce125 Enrico Milano123 Franco Torino129 Gian Franco Bergamo130 Giorgio Bergamo120 Giovanna Como126 Laura Milano121 Lucia Brescia124 Marida Bergamo127 Vittorio Bergamo
Corsi
Codice Docente Descrizione
econ Leoni Economiafilo Cottino Filosofiainf Cavalli Informatica
mfin Bertocchi Mat.Finanziariamgen Allevi Mat.Generale
Esami
Matricola Codice Data Voto
123 inf 01/01/1999 22123 mgen 01/01/1998 25124 filo 03/01/1997 30125 mgen 25/07/1997 26126 mgen 25/06/1998 23127 mfin 30/09/1999 28127 mgen 30/06/1998 26
Qual è la chiave di Esami ?
NStudente Corso
N
DataVoto
Matricola {PK}NomeIndirizzo
Codice {PK}DocenteDescrizione
Superare
12
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 23
Le associazioni: dettagli (1)
• La regola base per l’associazione uno a uno viene integrata con:• Associazione uno a uno con partecipazione opzionale di una delle due
entità: viene trattata come un’associazione uno a molti dove l’entità con partecipazione facoltativa gioca il ruolo a uno
– Per evitare di costruire una sola tabella con molti campi a valore nullo
– Esempi: Cittadino-Parlamentare, Docente-Classe (Coordinare), Docente-Facoltà (Presiedere), Dipendente-PostoMacchina
Dipendente Parchegio1 1
Matricola {PK}Nome
Numero {PK}Settore PostoNote
Occupare
Dipendenti (Matricola, Nome)Parcheggi (Numero, Settore, Posto, Note, Matricola )
Se ci sono molti dipendenti e pochi postiuna sola tabella avrebbe
molte righe con valori nulli
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 24
Le associazioni: dettagli (2)
• Associazione uno a uno con partecipazione opzionale di entrambe le entità . La scelta dell’entità che gioca il ruolo a uno va fatta caso per caso, in base alla numerosità delle singole partecipazioni
– Per evitare di costruire una sola tabella con molti campi a valore nullo– Esempi: Maschio-Genitore; Dipendente-AutoAziendale
Dipendente Auto1 1
Matricola {PK}Nome
Targa {PK}Tipo
Assegnare
• Due possibili scelte:
Dipendenti (Matricola, Nome, Targa) Auto (Targa, Tipo)
Dipendenti (Matricola, Nome) Auto (Targa, Tipo, Matricola )
13
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 25
Le associazioni: dettagli (3)
• Associazioni uno a uno ricorsive con partecipazione opzionale in dei due ruoli o di entrambi . Si può procede come nei casi precedenti ma, in alternativa, si può creare una nuova tabella.
– Esempi: Femmine (Essere primogenito), Carrozza(Trainare)
Carrozza
Precedente
Successiva
Trainare
1
1
Carrozze ( IDCarro, TipoCarro, DataCostruzione, DataRevisione, NextCarro )
Carrozze ( IDCarro, TipoCarro, DataCostruzione, DataRevisione) Composizione ( IDCarro, NextCarro )
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 26
Le associazioni: dettagli (4)
• Considerazioni analoghe valgono per le associazioni uno a molti ricorsive (e non ) con partecipazione opzionale del ruolo a molti
– Esempi: Femmina (EssereFiglia), Dipendente(Dirigere), – Madre – Figlio (AvereGemelli)
Dipendenti ( Matricola, Nome, Cognome, Assunzione, Manager )
Dipendenti ( Matricola, Nome, Cognome, Assunzione )Supervisione ( Collaboratore, Manager)
Dipendente
Manager
Collaboratore
Dirigere
1
N
14
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 27
Esempi ed esercizi (1)
Attori ( IDAttore, Nome, Cognome )
Film ( IDFilm, Titolo, Anno, Durata, Acolori, Genere )
Cast ( IDAttore, IDFilm, NumeroScene, Ingaggio )
Attore FilmRecitareN N
NumeroSceneIngaggio
IDAttore {PK} IDFilm {PK}
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 28
Esempi ed esercizi (2)
Attori ( IDAttore, Nome, Cognome )
Film ( IDFilm, Titolo, Anno, Durata, Acolori, Genere )
Contratti (IDAttore, IDFilm, Data, NumeroScene, Ingaggio )
Attore FilmStipulare
N N
IDAttore {PK} IDFilm {PK}
Contratto
DataNumeroSceneIngaggio
11
Riguardare
Si confronti questo schema con quello
dell’esempio precedente ...
15
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 29
Esempi ed esercizi (3)
Indirizzo Residente1 NEssere residenza
CodiciSSN ( SSN, Azienda, Sede )
Cittadini ( CodiceFiscale, Nome, Cognome, Nascita, SSN )
CodiceSSN Cittadino1 1
Essere attribuito
DataResidenza
Indirizzi ( Via, Numero, CAP, Quartiere )
Residenti ( CodiceFiscale, Nome, Cognome, Via, Numero, DataResidenza )
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 30
Esempi ed esercizi (4)
Clienti ( IDCliente, CodFiscale, Nome, Cognome, Indirizzo, Telefono )Corsi ( IDCorso, Descrizione, Giorno, Ora, Costo )Iscrizioni (Numero, DataIscrizione, Pagamento, IDCliente, IDCorso )
Fornitore Prodotto1 NFornire
Fornitori ( IDFornitore, RagioneSociale, Indirizzo, Telefono )Prodotti ( IDProdotto, Descrizione, IDFornitore )
Iscrizione
Numero {PK}DataIscrizionePagamento
Corso
IDCorso {PK}DescrizioneGiornoOraCosto
Cliente
IDCliente {PK}CodFiscaleNomeCognomeIndirizzoTelefono
RicevereEffettuare
N N1 1
16
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 31
Esempi ed esercizi (5)
Posto Passeggero1 NOccupare
Docente MateriaN NInsegnare
DaStazioneAStazione
Posti ( Carrozza, Fila, Numero, Caratteristiche )
Passeggeri ( Codice, Nome, Carrozza, Fila, Numero, DaStazione, AStazione )
AnnoScolastico
Docenti ( IDDocente, Nome, Cognome, DataAssunzione )
Materie ( IDMateria, Descrizione, Gruppo )
Assegnazioni ( IDDocente, IDMateria, AnnoScolastico )
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 32
Esempi ed esercizi (6)
Docenti ( IDDocente, Nome, Cognome, DataAssunzione )
Classi ( IDClasse, Classe, Sezione, Descrizione, Localizzazione )
Insegnamenti ( IDDocente, IDClasse, Materia, NumOre )
Docente ClasseN NInsegnare
MateriaNumOre
17
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 33
Esempi ed esercizi (7)
Addetto Negozio
1 1Dirigere
N 1
EssereAssegnato
Manager
Collaboratore
Coordinare
Addetti ( Matricola, Nome, Cognome, DataAssunzione, Qualifica, IDNegozio, Manager, DataAssegnazione )
Negozi ( IDNegozio, Indirizzo, Città, Manager )
Addetti ( Matricola, Nome, Cognome, DataAssunzione, Qualifica, IDNegozio,DataAssegnazione )
Negozi ( IDNegozio, Indirizzo, Città, Manager )
Supervisione ( Collaboratore, Manager )
DataAssegnazione
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 34
Esempi ed esercizi (8)
Locomotive ( IDMotrice, TipoMotrice, DataCostruzione, DataRevisione )
Carrozze ( IDCarro, TipoCarrozza, DataCostruzione, DataRevisione )
Composizione1 ( IDMotrice, IDCarro, NumTreno )
Composizione2 ( IDCarro, IDCarroTrainato, NumTreno )
Carrozza Locomotiva1 1Trainare
PrecedenteSuccessiva
Precedere
IDMotrice {PK}TipoMotriceDataCostruzioneDataRevisione
IDCarro {PK}TipoCarroDataCostruzioneDataRevisione
1
1
NumTrenoNumTreno
18
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 35
Esempi ed esercizi (9)
Prodotti ( Codice, Descrizione, Gruppo, Prezzo )
Composizione ( IDParte, IDComponente, Quantità, Lavorazione )
Parte
Essere Formata
N
N
Componente
Prodotto
Codice {PK}DescrizioneGruppoPrezzo
QuantitàLavorazione
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 36
Esercizi (1)
• Derivare le relazioni dal seguente modello E/R:
Capo
Coordinare
1
N
N
Dipendente
Matricola {PK}NomeDataAssunzione
1
Vendere
N
Reparto
IDReparto {PPK}IDNegozio {PPK}NomeRepartoTelefono
Negozio
IDNegozio {PK}Indirizzo Telefono
1
Prodotto
IDProdotto {PK}DescrizioneFornitore
N1
1
1
1N
Dirigere
Sovrintendere
Collaboratore
Direttore
Caporeparto
19
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 37
Esercizi (2)
• Costruire il modello E/R che ha originato il seguente schema di DB
Reparti( CodReparto , NomeReparto )Prodotti( CodProdotto , Descrizione, Prezzo, CodReparto)Vendite( Numero , Data, Quantità, CodProdotto)
• Costruire le relazioni per il problema delle ricette e ingredienti (Vedi Modello E/R)
• Costruire le relazioni per il problema dei dipendenti e le relative specializzazioni (Vedi ..)
• Costruire le relazioni per il problema dei prestiti di libri ai soci di una Biblioteca (Vedi ..)
• Costruire le relazioni per il problema di studenti, esami, corsi, docenti. Ogni corso ha un solo docente che in genere è titolare di più corsi. Un esame può essere ripetuto (Vedi .. )
• Costruire le relazioni per il problema del catalogo di una biblioteca (Documento, Soggetto, Autore, Genere, ... ) (Vedi E/R)
• Costruire le relazioni per il problema degli ordini ricevuti dai clienti e le relative fatture. A un ordine è associata una sola fattura (Vedi (E/R)
• Costruire le relazioni per il problema della progettazione aziendale: progetti, dipendenti, reparti (Vedi E/R)
Vedi “Algebra relazionale”
20
Dipendenze funzionali
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 40
Modello relazionale dei dati (1)
• Relazione
• Dipendenza funzionale
• Determinante
• Chiave candidata• Chiave composta
• Chiave primaria
• Chiave surrogata
• Chiave esterna
• Vincoli di chiave esterna• Forme normali
• Dipendenze multivalore
Terminologia
21
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 41
Modello relazionale dei dati (2)
Caratteristiche delle tabelle
• Le righe contengono dati di una (sola) entità
• I valori delle colonne descrivono attributi delle entità
• Tutti i valori in una colonna sono del medesimo tipo
• Ogni colonna ha un unico nome
• Ogni campo contiene un solo valore
• L’ordine delle colonne non è rilevante
• L’ordine delle righe non è rilevante
• Non ci possono essere righe duplicate
RecordCampoFile
TuplaAttributoRelazione
RigaColonnaTabella
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 42
Modello relazionale dei dati (3)
Prodotti
DamianoMontagnaSci discesa2051
DamianoMontagnaSci fondo2050
GianniCampingTenda doppio igloo2012
GianniCampingTenda igloo2010
MaryMareMaschera grande1011
MaryMareMaschera media1010
EnricoMarePinne medie1002
EnricoMarePinne piccole1001
CompratoreRepartoDescrizioneIDProdotto
Ordini
2020110103000
2814210023000
1212110013000
5614410022000
2412210012000
250250120121000
180180120101000
TotalePrezzoQuantitàIDProdottoIDOrdine
Le due tabelle
sono ben progettate?
22
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 43
Modello relazionale dei dati (4)
Compratori
GianniCampingTenda doppio igloo250120121000
GianniCampingTenda igloo180120101000
MaryMareMaschera media20110103000
EnricoMarePinne medie14210023000
EnricoMarePinne medie14410022000
EnricoMarePinne piccole12210012000
EnricoMarePinne piccole12110013000
CompratoreRepartoDescrizionePrezzoQuantitàIDProdottoIDOrdine
Inglese2051Damiano
Inglese2050Damiano
Tedesco1011Mary
Laurea1011Mary
Tedesco1010Mary
Laurea1010Mary
SkillProdottoCompratore
Entrambe le tabelle hanno
problemi
Ottenuta dalla fusione delle due precedenti tabelle . Meglio due tabelle o una sola ?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 44
Le dipendenze funzionali (1)
• AreaRet = Base * Altezza ( Base, Altezza ) � AreaRet• Totale = Quantità * Prezzo ( Quantità, Prezzo ) � Totale
• Si ha dipendenza funzionale tra attributi quando il valore di uno o piùattributi A determina univocamente il valore di un attributo B e si indica con A ���� B– A determina funzionalmente B
– B dipende funzionalmente da A
– A è un determinante per B
• Sono di interesse le sole dipendenze funzionali non esprimibili matematicamente. Con queste cosa si fa?
23
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 45
Le dipendenze funzionali (2)
IDProdotto � Descrizione
IDProdotto � Reparto
IDProdotto � Compratore
• IDProdotto ���� ( Descrizione, Reparto, Compratore )
• Descrizione ���� ( IDProdotto, Reparto, Compratore )
• Compratore ���� Reparto
DamianoMontagnaSci discesa2051
DamianoMontagnaSci fondo2050
GianniCampingTenda doppio igloo2012
GianniCampingTenda igloo2010
MaryMareMaschera grande1011
MaryMareMaschera media1010
EnricoMarePinne medie1002
EnricoMarePinne piccole1001
CompratoreRepartoDescrizioneIDProdottoProdotti
• Scoprire le dipendenze funzionali non èfacile!
• Attività simile alla progettazione concettuale dei dati
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 46
Le dipendenze funzionali (3)
Ordini
IDProdotto � Prezzo
( IDOrdine, IDProdotto ) � Prezzo
• ( IDOrdine, IDProdotto ) ���� ( Quantità, Prezzo, Totale )
• ( Quantità, Prezzo ) ���� Totale
2020110103000
2814210023000
1212110013000
5614410022000
2412210012000
250250120121000
180180120101000
TotalePrezzoQuantitàIDProdottoIDOrdine
Quale delle due dipendenze ?
24
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 47
Le dipendenze funzionali (4)
Dipendenti ( Matricola, Nome, Cognome, Stipendio, CodiceCapo, NomeCapo )
Matricola � Nome Cognome Stipendio CodiceCapoCodiceCapo � NomeCapo Matricola � NomeCapo transitivamente[Matricola ]++++ � Matricola Nome Cognome Stipendio CodiceCapo NomeCapo
Dipendenza transitiva : se A�B, B�C allora A�C. Si dice che A determina C transitivamente o che C dipende transitivamente da A
A+, chiusura di A date certe dipendenze funzionali , risponde alla domanda:
Quali sono tutti gli attributi che dipendono funzionalmente da A, in base a un insieme di dipendenze funzionali?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 48
Chiavi
• Un insieme di attributi A si dice superchiave di una tabella se A determina funzionalmente tutti gli altri attributi della relazione
• Un insieme di attributi A si dice chiave candidata di una tabella se A è una superchiave minimale della tabella
• Chiave primaria di una tabella è una delle chiavi candidate
• Chiave surrogata di una tabella è una colonna aggiunta alla tabella, i cui valori sono attribuiti automaticamente dal DBMS, e che è usata come chiave primaria
[ A1 A2. . . An ]++++ è l’insieme di tutti gli attributi di R
se e solo se A1 A2. . . An è una superchiave per R
25
Vincoli di integrità
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 50
Valori nulli
• NULL indica l’assenza di informazione su un attributo, non applicabile in quella riga, valore ignoto . . .
Codice Titolo Docente
1 Matematica Allevi
3 Informatica NULLNULL Economia Leoni
Studente Voto Corso
545 28 1
NULL 27 NULL653 25 1
768 24 NULL314 30 4
Matricola Cognome Nome DataNascita
545 Rossi Maria NULLNULL Neri Anna 23/04/1982768 Verdi Giuseppe 12/02/1982
614 Rossi Pablito 10/10/1981
NULL Bruni Carla 01/12/1981314 Cavour Benso 05/10/1983
Studenti
Esami
Corsi
• Matricola di Neri e Bruni?
• Quando è nata Maria Rossi?• 768 ha meritato 24 in ?
• 27 in che materia? Studente?• Chi insegna Informatica ?• Qual è il codice di Economia ?
La presenza di valori nulli ha effetti diversi: in alcuni casi è tollerabile in altri no
26
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 51
Vincoli di integrità
• I valori degli attributi devono essere sottoposti ad opportuni vincoli di integritàsia internamente alla tabella che in relazione ai dati contenuti in altre tabelle
Studenti
Esami
Corsi
• Il voto 36 non è corretto • Il voto 27 lode è irregolare• La matricola 653 è duplicata
• Chi è lo studente 823 ?• Il corso 5 non esiste• Lo studente 653 ha sostenuto
due volte l’esame 4 con esitidifferenti ( 28 e 30 Lode )
Matricola Cognome Nome DataNascita
545 Rossi Maria 12/05/83
653 Neri Anna 23/04/82768 Verdi Giuseppe 12/02/82
653 Rossi Pablito 10/10/81
314 Cavour Benso 05/10/83
Codice Titolo Docente
1 Matematica Allevi
3 Informatica Gnudi4 Economia Leoni
Studente Voto Lode Corso
545 36 5
653 27 lode 1
653 30 lode 4
823 24 3653 28 4
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 52
Vincoli di integrità
• Vincoli di tupla– I vincoli di tupla esprimono condizioni che devono essere
soddisfatte dai valori di ciascuna riga indipendentemente dalle altre. Riguardano i domini degli attributi e la relativa semantica
– Definire il vincolo per gli attributi Voto e Lode in Esami
• Vincoli di chiave– Si impone alla chiave primaria di essere unica ed a valori non nulli
• Vincoli di integrità referenziale– Riguarda un attributo od un insieme di attributi che compare come
chiave esterna in una relazione e come chiave primaria in un’altra: i valori assunti da una chiave esterna devono essere assunti anche dalla corrispondente chiave primaria
27
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 53
Vincoli di integrità referenziale
Veicoli
Agenti
InfrazioniCodice Data Agente Articolo Prov Numero
554 26/10/2002 456 34 RM 4E5433876 15/10/2002 456 53 FI 2F7643856 12/10/2002 567 44 MI 2F7646
Matricola CF Cognome Nome
567 RSSMRO… Rossi Mario638 NREPRO…. Neri Piero
Prov Numero Proprietario Indirizzo
FI 2F7643 Verdi Piero Via TigliRM 1A2396 Verdi Piero Via TigliMI 2F7646 Luci Gino Via Aceri
Come si èarrivati a questa
situazione ?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 54
Integrità referenziale
In una tabella, definita una chiave esterna e imposti i vincoli di integrità referenziale, il DBMS impedisce:
� L’inserimento di un record con un valore di chiaveesterna che non compare nella tabella madre associata
� La cancellazione di una riga, la cui chiave primaria èchiave esterna in altre tabelle, se nelle tabelle associateci sono righe con quel valore nella chiave esterna.
� La variazione dei valori dei campi di una riga se sonoviolate le precedenti condizioni
Tre possibili cause all’origine delleviolazioni all’integrità referenziale
28
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 55
Vincoli di integrità referenziale
Agenti
InfrazioniCodice Data Agente Articolo Prov Numero
554 26/10/2002 34 RM 4E5433876 15/10/2002 456 53 FI 2F7643856 12/10/2002 567 44 MI 2F7646
Matricola CF Cognome Nome
567 RSSMRO… Rossi Mario638 NREPRO…. Neri Piero
In Agente c’è un valore nullo. E’ un caso di
violazione dell’integritàreferenziale?
No. Non si tratta di un caso di viola-zione dell’integrità referenziale. L’integrità referenziale richiede solo che se in Agente c’è un valore questo deve comparire anche in Matricola.
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 56
Esercizi
Per ognuna delle basi di dati riportate identificar e: chiavi, chiavi esterne e vincoli di integrità
1. Data Base Multe :• Agenti ( Matricola, CodFis, Cognome, Nome ) • Infrazioni ( Codice, Agente, Data, Articolo, Prov, Numero ) • Veicoli ( Prov, Numero, Proprietario, Indirizzo )
2. Data Base Università :• Studenti ( Matricola, Cognome, Nome, DataNascita, CodiceFiscale )• Corsi ( Codice, NomeCorso, Docente )• Esami ( Studente, Corso, Voto, Lode, Data )
3. Data Base Banca1 :– Clienti ( Nome, Via, Città, NumConto )– Conti ( NumConto, Saldo )
4. Data Base Banca2 :• Agenzie ( NomeAgenzia, Indirizzo, Capitalizzazione )• Clienti ( NomeCliente, Indirizzo, Città )• Prestiti ( NomeAgenzia, NumeroPrestito, NomeCliente, Importo )• Depositi ( NomeAgenzia, NumeroDeposito, NomeCliente, Importo )
5. Data Base ContiTrattoria:• Ricevute ( Num, Data, Totale )• Dettaglio ( Num, Qta, Descrizione, Importo ) – ed anche l’alternativa per Dettaglio: • Dettaglio (Num, Riga, Qta, Descrizione, Importo)
29
Normalizzazione
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 58
Anomalie (1)
• La tabella Inventario presenta diverse anomalie:
– Se Mi8 si sposta da via Tonale bisogna aggiornare tutte le occorrenze di Mi8 in Inventario: anomalia di aggiornamento
– Se un magazzino si svuota vengono perse le informazioni sul suo indirizzo: anomalia di cancellazione
– Se viene aperto un nuovo magazzino in mancanza di merci a magazzino mancano le informazioni sul suo indirizzo: anomalia di inserimento
Inventario
Prodotto Magazzino Quantità IndirMag
545 Mi8 800 via Tonale 25545 Mi25 700 via Stelvio 35545 Roma2 356 via Ardeatina 3100 Roma3 245 via Salaria200 Mi25 230 via Stelvio 35545 Roma3 370 via Salaria100 Mi25 350 via Stelvio 35100 Mi8 720 via Tonale 25
Inventario èuna buona
tabella ?
30
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 59
Anomalie (2)
• Si intuisce che le anomalie sono causate dalla presenza di informazioni eterogenee in un’unica tabella. Possibile terapia: mettere le informazioni in tabelle separate
Inventario1
Prodotto Magazzino Quantità
545 Mi8 800545 Mi25 700545 Roma2 356100 Roma3 245200 Mi25 230545 Roma3 370100 Mi25 350100 Mi8 720
Magazzini
Codice IndirMag.
Mi8 via Tonale 25Mi25 via Stelvio 35
Roma2 via Ardeatina 3Roma3 via Salaria
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 60
Anomalie (3)
• Per eliminare le anomalie riscontrate in Inventario abbiamo scomposto lo schema:
– Inventario ( Prodotto, Magazzino, Quantità, IndirMag )
• Nei due schemi: – Inventario1 ( Prodotto, Magazzino, Quantità )
– Magazzini ( Codice, IndirMag )
• Le tabelle, ottenute per proiezione dalla tabella originale, devono permettere la ricostruzione delle informazioni originarie.
– Inventario1 Join Magazzini, con: Magazzino = Codice
– La congiunzione deve ricostruire tutte le informazioni originarie
– La congiunzione deve ricostruire solo le informazioni originarie
• Come procedere in modo sistematico per identificare possibili anomalie nello schema delle relazioni ?
31
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 61
Forme Normali (1)
1NF
2NF
3NF
BCNF
4NF
5NF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 62
Forme Normali (2)
• Sintesi sulle diverse forme di normalizzazione
Trasformare i vincoli in funzione delle chiavi candidate e dei domini
5NFRare situazioni di vincoli sui dati
Mettere tutte le dipendenze multivalore in una tavola a se4NF
Dipendenze multivalore
BCNF: progettazione delle tabelle in modo che ogni determinante sia una chiave candidata
2NF, 3NF BCNF
Dipendenze Funzionali
Rispetto delle caratteristiche base del modello relazionale1NFDati non atomici
Principi di progettazioneForme Normali
Origine dell’anomalia
32
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 63
Forme Normali (3)
• La prima forma normale (1NF) , richiede che siano rispettate le regole fondamentali del modello relazionale. In una tabella:
– non ci sono righe uguali e tutte le righe contengono lo stesso numero di colonne
– le righe e le colonne non sono ordinate
– i valori che compaiono in una colonna sono omogenei per dominio e semplici, ossia gli attributi contengono informazioni elementari
• Considereremo la sola forma normale di Boyce-Codd , indicata in letteratura con l’acronimo BCNF (Boyce Codd Normal Form) e la 4NF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 64
Condizione di Boyce e Codd (1)
• La Forma Normale di Boyce Codd (BCNF) garantisce l’assenza di anomalie causate dalle dipendenze funzionali
Una relazione R è in forma normale di Boyce e Codd ( BCNF ) se è in
prima forma normale e ogni determinante è una chiave candidata
• Anagrafica ( Nome, Cognome, Matricola, Nascita, Indirizzo, NumFigli, CodDip, NomeDip, IndirDip )
CodDip ���� ( NomeDip, IndirDip )
• Inventario ( Prodotto, Magazzino, Quantità, IndirMag )
Magazzino ���� IndirMag
Anagrafica non è in BCNF
Inventario non è in BCNF
33
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 65
Condizione di Boyce Codd (2)
• Nella tabella: – Inventario ( Prodotto, Magazzino, Quantità, IndirMagazzino )
• Valgono le dipendenze funzionali:
– Prodotto Magazzino � Quantita IndirMagazzino– Magazzino � IndirMagazzino
• Inventario non è in BCNF
• Abbiamo scomposto Inventario in due tabelle BCNF:
– Inventario ( Prodotto, Magazzino, Quantità)– Magazzini ( Magazzino, IndirMagazzino) Esiste un metodo
automatico per normalizzare o
bisogna procedere intuitivamente?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 66
Scomposizione in BCNF
Algoritmo di scomposizione
1. Identifica tutte le dipendenze funzionali e le chiavi candidate
2. Se esiste una dipendenza funzionale il cui determinante non è chiave candidata:
A. Costruisci una nuova tabella con le colonne della dipendenza funzionale
B. Il determinante è la chiave primaria della tabella definita in A.
C. Costruisci un’altra tabella con: le colonne rimaste e una copia deldeterminante della dipendenza funzionale
D. Crea un vincolo di integrità referenziale tra le due tabelle
3. Ripeti il passo 2. sino a che tutti i determinanti di tutte le tabelle sono chiavicandidate
Se al passo 2. ci sono più dipendenze funzionali, inizia da quella con il maggiornumero di colonne
34
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 67
Scomposizione in BCNF (Esempio 1)
Prodotti ( IDProdotto, Descrizione, Reparto, Compratore )
• IDProdotto � ( Descrizione, Reparto, Compratore ) • Compratore � Reparto• Descrizione � ( IDProdotto, Reparto, Compratore )
Compratori ( Compratore, Reparto )
Prodotti ( IDProdotto, Descrizione, Compratore )
Non BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 68
Scomposizione in BCNF (Esempio 2)
Macchine ( Macchina , Tipo, PrezzoAcq )
Riparazioni ( Macchina, DataRipar, NumRipar, CostoRipar )
Riparazioni
27521/11/200534753500Trapano100
005/10/200534703500Trapano100
180015/09/2005346535000Tornio300
17820/08/200534603500Trapano100
25519/09/200534554500Levigatrice200
50025/07/200534503500Trapano100
CostoRiparDataRiparNumRiparPrezzoAcqTipoMacchina
Riparazioni ( Macchina, Tipo, PrezzoAcq, NumRipar, DataRipar, CostoRipar )
• Macchina � ( Tipo, PrezzoAcq )
• NumRipar � ( Macchina, Tipo, PrezzoAcq, DataRipar, CostoRipar )
Non BCNF
35
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 69
Scomposizione in BCNF (Esempio 3)
Sports ( IDSocio, Nome, Sport, Costo, Pagato )
• IDSocio � Nome
• ( IDSocio, Sport ) � Pagato
• Sport � Costo
Sports
400400SciGiuseppe400
200200ArrampicataEnrico300
400400SciFrancesco200
150150CalcioFrancesco200
0150CalcioGiovanni100
PagatoCostoSportNomeIDSocio
Non BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 70
Scomposizione in BCNF (Esempio 3)
Sports ( IDSocio, Nome, Sport, Costo, Pagato )
• IDSocio � Nome
• ( IDSocio, Sport ) � Pagato
• Sport � Costo
Soci ( IDSocio, Nome )
Temp ( IDSocio, Sport, Costo, Pagato )
Sports ( Sport, Costo )
Pagamenti ( IDSocio, Sport, Pagato )
Non BCNF
36
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 71
Scomposizione in BCNF (Esempio 4)
Prodotti ( IDProdotto, Descrizione, Reparto, Budget, Compratore )
• IDProdotto � ( Descrizione, Reparto, Budget, Compratore )
• Descrizione � ( IDProdotto, Reparto, Budget, Compratore )
• Compratore � ( Reparto, Budget )
• Reparto � Budget
Prodotti
DamianoBR_020MontagnaSci discesa2051
DamianoBR_020MontagnaSci fondo2050
GianniBR_010CampingTenda doppio igloo2012
GianniBR_010CampingTenda igloo2010
MaryBR_001MareMaschera grande1011
MaryBR_001MareMaschera media1010
EnricoBR_001MarePinne medie1002
EnricoBR_001MarePinne piccole1001
CompratoreBudgetRepartoDescrizioneIDProdotto
Non BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 72
Scomposizione in BCNF (Esempio 4)
Compratori ( Compratore, Reparto, Budget )
Prodotti ( IDProdotto, Descrizione, Compratore )
Reparti ( Reparto, Budget )
Compratori ( Compratore, Reparto )
Prodotti ( IDProdotto, Descrizione, Reparto, Budget, Compratore )
• IDProdotto � ( Descrizione, Reparto, Budget, Compratore )
• Descrizione � ( IDProdotto, Reparto, Budget, Compratore )
• Compratore � ( Reparto, Budget )
• Reparto � Budget Non BCNF
37
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 73
Scomposizione in BCNF - Esercizio 1
Ordini ( IDOrdine, IDProdotto, Quantità, Prezzo, Totale )
• ( IDOrdine, IDProdotto ) � ( Quantità, Prezzo, Totale )
• ( Quantità, Prezzo ) � Totale
Ordini
2020110103000
2814210023000
1212110013000
5614410022000
2412210012000
250250120121000
180180120101000
TotalePrezzoQuantitàIDProdottoIDOrdine
Ordini non è in BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 74
Scomposizione in BCNF - Esercizio 2
Dipendenti ( Matricola, Nome, Cognome, Stipendio,
CodiceCapo, NomeCapo )
• Matricola � ( Nome, Cognome, Stipendio, CodiceCapo,NomeCapo )
• CodiceCapo � NomeCapoDipendenti non è in BCNF
38
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 75
Scomposizione in BCNF - Esercizio 3
Film ( Titolo, Anno, Attore, IndirizzoAttore, NomeStudio, Produttore, IndirizzoProduttore )
• Titolo Anno � NomeStudio Produttore
• Attore � IndirizzoAttore
• Produttore � IndirizzoProduttore
• [Titolo Anno ]+ ??
Film non è in BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 76
Scomposizione in BCNF - Esercizio 3
Sono in BCNF ?
Dipendenti ( Matricola, Nome, Cognome, Residenza, Reparto, SedeReparto, Stipendio, Capo, CognomeCapo )
Matricola � Nome, Cognome, Residenza, Reparto, Stipendio, Capo
Reparto � SedeReparto
Capo � CognomeCapo
Reparti ( Reparto, SedeReparto )
Capi ( Capo, CognomeCapo ) ( Capo è Matricola )
Dipendenti ( Matricola, Nome, Cognome, Residenza, Reparto, Stipendio, Capo )
39
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 77
Scomposizione in BCNF - Esercizio 4
Anagrafica ( Nome, Cognome, Matricola, Nascita, Indir, NumFigli, CodDip, NomeDip, IndirDip, Stipendio )
• Matricola � ( Nome, Cognome, Nascita, Indir, NumFigli,CodDip, NomeDip, IndirDip, Stipendio )
• CodDip � ( NomeDip, IndirDip )
Inventario ( Prodotto, Magaz, Quantità, IndirizzoMag )
• ( Prodotto, Magaz ) � Quantità
• Magaz � IndirizzoMag
Non sono in BCNF
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 78
Scomposizione in BCNF - Esercizio 5
– Anagrafica ( Nome, Cognome, Dipart, Ufficio, Stipendio, Città )
– Dipartimenti ( Nome, Indirizzo, Città )
Nome Indirizzo Città
Amministrazione Via Tito Livio, 27 MilanoDirezione Via Tito Livio, 27 MilanoDistribuzione Via Segre, 9 RomaProduzione Piazza Lavater, 3 TorinoRicerca Via Morone, 6 Milano
Nome Indirizzo Città
Amministrazione Via Tito Livio, 27 MilanoDirezione Via Tito Livio, 27 MilanoDistribuzione Via Segre, 9 RomaProduzione Piazza Lavater, 3 TorinoRicerca Via Morone, 6 Milano
Nome Cognome Dipart Ufficio Stipendio Città
Carlo Bianchi Produzione 20 36 TorinoCarlo Rossi Direzione 80 MilanoFranco Neri Distribuzione 45 NapoliGiuseppe Verdi Amministrazione 20 40 RomaLorenzo Lanzi Direzione 7 73 GenovaMarco Franco Produzione 20 46 RomaMario Rossi Amministrazione 10 45 MilanoPaola Borroni Amministrazione 75 40 Venezia
Nome Cognome Dipart Ufficio Stipendio Città
Carlo Bianchi Produzione 20 36 TorinoCarlo Rossi Direzione 80 MilanoFranco Neri Distribuzione 45 NapoliGiuseppe Verdi Amministrazione 20 40 RomaLorenzo Lanzi Direzione 7 73 GenovaMarco Franco Produzione 20 46 RomaMario Rossi Amministrazione 10 45 MilanoPaola Borroni Amministrazione 75 40 Venezia
Anagrafica e Dipartimenti
sono in BCNF ?
40
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 79
Scomposizione in BCNF - Esercizio 6
Film (Titolo, Anno, Attore, NomeStudio, Produttore, Lunghezza, aColori)
• Titolo Anno � NomeStudio Produttore Lunghezza aColori
• Chiave candidata ?
Film è in BCNF ?
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 80
Ricostruzione delle informazioni
Anagrafica ( Nome, Cognome, Matricola, Nascita, Indir, NumFigli, CodDip, NomeDip, IndirDip, Stipendio )
è stata decomposta nelle due tabelle:
• Anagrafica ( Nome, Cognome, Matricola, Nascita, Indir, NumFigli, CodDip, Stipendio )
• Dipartimenti ( CodDip, NomeDip, IndirDip )
Teorema
Se una tabella viene scomposta con il metodo descritto la tabella originaria può essere recuperata esattamente combinando, tramitejoin , le righe delle nuove tabelle
L’informazione originaria è recuperabile esattamente?
41
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 81
Forme Normali - 4NF
• La 4NF vuole prevenire le anomalie causate dalla presenza di attributi multivalore . Situazioni di questo tipo si hanno quando un attributo è determinante di un altro che può avere molti valori
– una persona � i suoi fratelli– uno studente � le sue abilità– un cibo � i vini adatti a quel cibo
Compratori
Inglese2051Damiano
Inglese2050Damiano
Tedesco1011Mary
Laurea1011Mary
Tedesco1010Mary
Laurea1010Mary
SkillProdottoCompratore
Prodotto � CompratoreCompratore ���� Skill
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 82
Forme Normali - 4NF
• Se tali situazioni sono trattate in tabelle a sè stanti non ci sono anomalie di sorta, mentre le tabelle che contengono dipendenze multivalore e altri attributi evidenziano anomalie di aggiornamento.
Studenti ( Matricola, Abilità ) Studenti_1 ( Matricola, Abilità, Fratelli ) Studenti_2 ( Matricola, Abilità, Cognome )
• Studenti: Matricola � Abilità;
• Studenti_1: Matricola � Abilità; Matricola � Fratelli
• Studenti_2: Matricola � Abilità; Matricola � Cognome
Studenti OK
42
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 83
Forme Normali - 4NF
• Studenti: Matricola � Abilità;
• Studenti_1: Matricola � Abilità; Matricola � Fratelli
• Studenti_2: Matricola � Abilità; Matricola � Cognome
• Studenti_1– Studenti_1A ( Matricola, Abilità )
– Studenti_1B ( Matricola, Fratelli )
• Studenti_2– Studenti_2A ( Matricola, Abilità )– Studenti_2B ( Matricola, Cognome )
Anomalie
Anomalie
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 84
Forme Normali - 4NF
• Le dipendenze multivalore devono essere trattate isolatamente, in tabelle a sé stanti
Compratori
Inglese2051Damiano
Inglese2050Damiano
Tedesco1011Mary
Laurea1011Mary
Tedesco1010Mary
Laurea1010Mary
SkillProdottoCompratore
Prodotto � CompratoreCompratore ���� Skill
43
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 85
4NF - Esempio
Compratori
2051Damiano
2050Damiano
1011Mary
1010Mary
ProdottoCompratoreProdotto � Compratore
IngleseDamiano
TedescoMary
LaureaMary
SkillPersonaSkillsCompratore ���� Skill
• Normalizzazione della tabella Compratori:
Compratori ( Compratore, Prodotto, Skill )
– Prodotto � Compratore– Compratore � Skill
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 86
Forme normali
La 1NF richiede che siano rispettate le regole di base del
modello relazionale
La 2NF vieta le dipendenze da un
sottoinsieme propriodi una chiave
La 3NF vieta le dipendenze transitive
da una chiave
• 1NF: requisiti base del modello relazionale
• 2NF: Una relazione è 2NF se è 1NF e non ci sono attributi non chiaveche dipendono parzialmente dalla chiave
• 3NF: Una relazione è 3NF se è 2NF e non ci sono attributi non chiaveche dipendono transitivamente dalla chiave
• BCNF: Una relazione è BCNF se è 1NF e ogni determinante è chiave candidata
44
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 87
Esercizi
• Le informazioni sugli esami sono memorizzate secondo uno dei due seguenti schemi:
Esami-1 ( Corso, Matricola, Data, Voto, NomeCorso )
Esami-2 ( Corso, Matricola, Data, VotoInCifre, VotoInLettere )Definite, in entrambi i casi, le dipendenze funzionali e individuate le eventuali violazioni alla BCNF e dire se sono in 2NF o 3NF. Se già non lo sono, portarle in BCNF
• Una tabella contiene per ogni riga il codice del libro, il nome dell’autore, il titolo del libro, il nome dell’editore, l’indirizzo dell’editore, il prezzo e l’anno di edizione. Normalizzare la tabella in modo da ottenere tabelle in BCNF
• Portare in BCNF la tabella Materiali definita dallo schema: Materiali ( Codice, Descrizione, Fornitore, Prezzo, IndirizzoFornitore, Quantità,
PosizioneInMagazzino, Acciaio, NomeAcciaio, ResistenzaAcciaio, NomeFornitore )
Normalizzazione in pratica
45
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 89
Come si attua la normalizzazione (1)
---------------------------------------------------- SELECT ... INTO Macchine FROM ... -- Sintassi SQLServer per creare tabella Macchine--------------------------------------------------SELECT DISTINCT Macchina, Tipo, PrezzoAcqINTO MacchineFROM Riparazioni;
Riparazioni ( Macchina, Tipo, PrezzoAcq, NumRipar, DataRipar, CostoRipar )
Macchine ( Macchina , Tipo, PrezzoAcq )
Riparazioni_1 ( Macchina, DataRipar, NumRipar, CostoRipar )
Riparazioni esiste già
MYSQL:CREATE TABLE... SELECT ...
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 90
Come si attua la normalizzazione (2)
---------------------------------------------------- Creazione di Riparazioni_1--------------------------------------------------SELECT Macchina, DataRipar, NumRipar, CostoRiparINTO Riparazioni_1FROM Riparazioni;
---------------------------------------------------- Ricostruzione della tabella Riparazioni --------------------------------------------------CREATE VIEW Riparazioni AS SELECT M.Macchina, M.Tipo, M.PrezzoAcq,
R. DataRipar, R.NumRipar, R.CostoRiparFROM Riparazioni_1 R JOIN Macchine M ON
R.Macchine = M.Macchine;
46
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 91
Pro e Contro la normalizzazione
• Vantaggi
– Elimina le anomalie di inserimento, ...
– Riduce la ridondanza dei dati
• Elimina i problemi di inconsistenza dei dati
• Limita lo spazio occupato dai dati
• Svantaggi
– Necessità di costruire interrogazioni più complicate
– Maggior carico di lavoro per il DBMS
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 92
Ragioni per non normalizzare
Cliente ( Codice, Nome, Via, Città, Provincia, CAP )
– CAP � ( Città, Provincia )
• Tabelle come Cliente , in genere, non vengono normalizzate perché il CAP non cambia mai (o quasi ... )
• In genere è fortemente consigliata la normalizzazione ad eccezione di quelle situazioni nelle quali i dati cambiano raramente ( per maggior semplicità applicativa )
• I database di sola lettura non sono normalizzati anzi, di norma, sono denormalizzati
47
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 93
Riprogettazione di un database
• Per esaminare le diverse tabelle: contare le righe e esaminare la natura delle colonne di ogni tabella
– TABLESAMPLE, TOP n, LIMIT n, . . .
• Esaminare i dati ed intervistare gli utenti per accertarsi dellapresenza di:
– Dipendenze multivalore, Multicolonna– Dipendenze funzionali– Chiavi e chiavi esterne
• Controllare la validità dell’integrità referenziale e i vincoli sui dati:
– Valori non nulli– Valori duplicati– . . .
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 94
Esercizi
• Creare con Access un database di nome Test .
• Creare le tabelle Prodotti , Ordini , OrdiniProdotti e Compratori, vedi diapositive 40 e 41, e popolarle con gli stessi dati.
• Normalizzare le tabelle creando le nuove tabelle con opportuni comandi SELECT, senza eliminare le tabelle originarie.
• Creare opportune viste logiche per accedere alle nuove tabelle come se fossero le tabelle originarie.
• Modificare la tabella Prodotti inserendo alcune righe per avere: righe con descrizioni duplicate, prodotti senza descrizione, compratori che operano in più di un reparto. Inserire in Ordini una riga che faccia riferimento a un prodotto inesistente. Controllare tutte le situazioni anomale e controllare l’esistenza della dipendenza funzionale:IDProdotto IDOrdine � Prezzo
48
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 95
Fine della presentazione
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 96
Terza forma normale
• Ci sono situazioni nelle quali la BCNF non è raggiungibile e si rinuncia alla BCNF per non avere perdita di dipendenze funzionali
Interventi
– Chirurgo ���� Reparto– Paziente Reparto ���� Chirurgo
A ogni paziente è assegnato un chirurgo del reparto
[ Paziente Reparto ] chiave
Interventi non è in BCNF
LanzettaChir. GeneraleVerdi
VeronesiChir. OncologicaBianchi
RomanoChir. GeneraleBianchi
RomanoChir. GeneraleRossi
De BakeyCardiochirurgiaRossi
ChirurgoRepartoPaziente
49
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 97
Terza forma normale
• Per effetto della normalizzazione:
• La dipendenza funzionale [ Paziente Reparto ] ���� Chirurgo è persa:
Volendo registrare il fatto (errato) che Neri è stato operato da Lanzetta in cardiochirurgia, ci si limiterebbe a inserire Neri e Lanzetta nella prima tabella e solo la congiunzione delle tabelle permetterebbe di evidenziare l’errore
• Si preferisce lasciare la tabella nella forma originale (3NF)
LanzettaVerdi
VeronesiBianchi
RomanoBianchi
RomanoRossi
De BakeyRossi
ChirurgoPaziente
Chir. GeneraleLanzetta
Chir. OncologicaVeronesi
Chir. GeneraleRomano
CardiochirurgiaDe Bakey
RepartoChirurgo
Elaborazione automatica dei dati - Enrico Cavalli - Università di Bergamo 98
Terza forma normale
• Interventi (Paziente, Reparto, Chirurgo) è in 3NF
– Paziente Reparto � Chirurgo
– Chirurgo ���� Reparto
– [ Paziente Reparto ] è superchiave
– Reparto ∈ [ Paziente Reparto ]
Una relazione è in 3NF se è in 1NF e ogni attributo non chiave dipende funzionalmente da una chiave candidata. In altre parole. Se A1 . . An � B, allora deve valere una delle due condizioni: B fa parte di una chiave oppure A1..An è una superchiave