Post on 14-Jul-2019
Il modello Relazionale
foglia@iet.unipi.it
Sommario
• Il modello Relazionale per la progettazione logica• Definizione di modello relazionale
• Vincoli di integrità
• Traduzione dal modello ER al modello relazionale
Progettazione Logica
• Effettuata una progettazione concettuale della base di dati si passa alla progettazione logica della stessa
• A partire dalla descrizione dei dati che la base di dati dovrà memorizzare al suo interno, la progettazione logica definisce come questi dati verranno memorizzati usando le astrazioni fornite dalla tipologia di DBMS adottata
• Non si deve conoscere il particolare tipo di DBMS che verrà usato ma si deve conoscerne la tipologia, in particolare il modello logico che questo adotterà
Il modello relazionale: un po’ di storia▪ Proposto da E. Codd nel 1970 per favorire
l’indipendenza dei dati
▪ Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l’indipendenza con efficienza e affidabilità)
▪ agli albori dei DBMS, i modelli reticolare e gerarchico erano più usati
▪ Lo sviluppo della teoria relazionale dei dati e lo sviluppo di efficienti tecnologie implementativi hanno reso i DB relazionali lo standard dei DB commerciali attuali nell’ambito dei sistemi informativi▪ Oracle, DB2, Informix, Access, SQLServer, MySQL sono tutti
DB relazionali
Il Modello Relazionale
• Il modello Relazionale è il modello logico oggi più usato dai database commerciali comuni
• Tale modello si basa sul concetto matematico di Relazione (che va intesa in senso algebrico)• Tale concetto di relazione non va confuso con il concetto
di relazione tra i dati del modello concettuale
• Ogni relazione è rappresentata graficamente sotto forma di tabella
• Un database viene rappresentato nel modello relazionale come una collezione di tabelle, a ciascuna delle quali è assegnato un nome unico
Il modello relazionale rispetto agli altri modelli• Nel modello relazionale l’associazione fra tabelle è
realizzata tramite valori• nei modelli reticolare e gerarchico l’associazione è
realizzata in modo esplicito tramite riferimenti (puntatori)
• I vantaggi del modello relazione (associazione tramite valore) sono:• Nel modello relazionale non si fa riferimento ad aspetti fisici
(lo sono i puntatori) e dunque si realizza l’indipendenza del modello logico da quello fisico
• Sono rappresentate solo le informazioni rilevanti per l’utente (i puntatori sono informazioni addizionali legati ad aspetti realizzativi, che non riguardano l’organizzazione dei dati)
• È più facile realizzare la migrazione da un sistema ad un altro
Un po’ di ambiguità
• Utilizzo di relazione• Relazione matematica nel modello relazionale
• Associazione fra entità nel modello E-R
• In inglese non è ambiguo perché:• Relazione matematica è relation
• L’associazione è relationship
• Attenzione a non confondere i due concetti
Costrutti fondamentali
• I costrutti fondamentali del modello relazionale sono i seguenti:• Relazione/Tabella
• Attributo/Colonna
• Dominio
• Tupla/Riga
Relazione MatematicaSiano D1, D2, …, Dn (n insiemi anche non distinti)
Prodotto cartesiano D1×D2×…×Dn:
• l’insieme di tutte le tuple ordinate (d1, d2, …, dn) tali che d1∈D1, d2 ∈D2, …, dn∈Dn
Relazione matematica R su D1, D2, …, Dn
• è un sottoinsieme del prodotto cartesiano D1×D2×…×Dn
D1, D2, …, Dn sono i domini della relazione.
Una relazione su n domini ha grado n.
il numero di tuple (ossia il numero di elementi o di «righe») è la cardinalità della relazione.
Relazione matematica: proprietà
• una relazione matematica è un insieme di n-upleordinate rispetto ai domini:• (d1, …, dn) tali che d1D1, …, dn Dn
• La prima componente deriva dal primo dominio, etc
• una relazione è un insieme: • non c'è ordinamento fra le n-uple
• 2 tabelle con le stesse righe ma con ordinamento diverso rappresentano la stessa relazione
• le n-uple sono distinte• Due n-ple (tuple) non possone essere uguali
• ciascuna n-upla è ordinata: l’ i-esimo valore proviene dall’ i-esimo dominio
Relazione - Esempio
Relazione R ⊆ D1 × D2Prodotto Cartesiano D1 × D2
0 2
0 3
1 2
1 3
0 2
1 3R =
D1 = {0,1}
D2 = {2,3}
D1 x D2 =
• La rappresentazione grafica di una relazione avviene sotto forma
tabellare
• Una tabella è un sottoinsieme del prodotto cartesiano fra i domini delle sue
colonne
• I valori delle colonne di una tabella appartengono a dei domini
Relazione e rappresentazione dell’informazione• Si consideri la relazione partite
• Una possibile istanza della relazione partita (rappresentata come tabella)
• Cosa rappresenta?
Partite string × string × int × int
3200
1021
JuveLazioJuveRoma
LazioMilanRomaMilan
Struttura posizionale e non posizionale -• Ciascuno dei domini ha due ruoli diversi, distinguibili
attraverso la posizione:• La struttura è posizionale
• Se si scambiano le colonne 3 e 4 , la tabella precedente ha tutto un altro significato.
• Attributi: A ciascun dominio si associa un nome unico nella tabella (attributo), che ne descrive il "ruolo„• La struttura diventa non posizionale
• Gli attributi possono essere scambiati, senza alterare il significato della relazione
Struttura non posizionale con attributi
1021
3200
JuveLazioJuveRoma
LazioMilanRomaMilan
RetiFuori RetiCasaCasa Fuori
3200
1021
JuveLazioJuveRoma
LazioMilanRomaMilan
RetiCasa RetiFuoriCasa Fuori
• Tabella con attributi scambiati
• Non cambia il significato
Tabelle e Relazioni
• In una tabella (relazione matematica con l’estensione degli attributi come domini con nome) che rappresenta una relazione
• l’ordinamento tra le righe è irrilevante
• l’ordinamento tra le colonne è irrilevante
• Una tabella rappresenta una relazione se
• le righe sono diverse fra loro
• le intestazioni delle colonne sono diverse tra loro
• i valori di ogni colonna sono fra loro omogenei
Schema di una relazione
• Nel modello logico relazionale la Relazione Matematica è adottata per rappresentare uno o più oggetti di una realtà di interesse
• Consiste in uno Schema e in una Istanza
• Lo Schema definisce la struttura di una relazione attraverso:• Il nome della relazione (il nome della tabella)
• L’insieme dei domini della relazione
• I nomi assegnati a ciascun dominio (detti attributi) che descrivono il ruolo giocato dal dominio stesso
Istanza di una relazione• L’istanza di una relazione (o semplicemente
relazione) è una tabella riempita secondo il suo schema – è l’insieme di righe che popolano la tabella
• Le righe di una tabella si chiamano tuple o record
• Le colonne della tabella corrispondono agli attributi
• Il contenuto di un’istanza di una relazione NON dipende dall’ordinamento delle tuple stesse
• All’interno della relazione non sono ammesse tupleuguali• Sono la stessa dupla
Rappresentazione di uno schema e di una istanza di una relazione
Per rappresentare in forma compatta uno schema si
utilizza la seguente notazione:
Impiegati (Matricola, Cognome, Filiale, Stipendio)
Clienti(NomeCliente, Indirizzo)
Matricola Cognome Filiale Stipendio
7309 Rossi Roma 55
5998 Neri Milano 64
9553 Milano Napoli 44
5698 Bianchi Torino 64
2568 Rossi Roma 55Tuple (record, righe)
Nome
Attributi
(campi)
Attributi
(campi, colonne)
Impiegati
Schema di una base di dati e istanza di base di dati• Lo schema di una base di dati è l’insieme degli
schemi di relazioni che lo compongono• I nomi delle relazioni devono essere diversi
• L’istanza di una base di dati (o semplicemente base di dati) è l’insieme delle istanze delle relazioni che lo compongono
Formalmente1:
• Schema di relazione:
un nome R con un insieme di attributi A1, ..., An:
R(A1,..., An)
• Schema di base di dati:
insieme di schemi di relazione:
R = {R1(X1), ..., Rk(Xk)}
Formalmente 2:
• (Istanza di) relazione su uno schema R(X):
insieme r di ennuple su X
• (Istanza di) base di dati su uno schema R= {R1(X1),
..., Rn(Xn):
insieme di relazioni r = {r1,..., rn} (con ri relazione
su Ri)
Esempio con più reazioni:
• Base di dati con schema:• Studenti (Matricola, Cognome, Nome, Data di nascita)
• Esami (Studente, Voto, Corso)
• Corsi (Codice, Titolo, Docente)
Istanza
Matricola Cognome Nome Data di Nascita
276545 Rossi Marco 11/01/1975
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro 12/02/1972
Studenti
Studente Voto Corso
276545 25 01
253065 26 03
243064 30 05
Esami
Codice Titolo Docente
01 Analisi Giani
03 Chimica Fantoni
05 Chimica Baggio
Corsi
Che informazioni sono contenute e come estrarle?
Esempio con più relazioni
• Qual è la matricola dello studente Marco Rossi?
• Chi è il docente del corso di analisi?
• Che voto ha preso Marco Rossi
• In che esame?
• I legami fra dati in relazioni diverse vengono rappresentati tramite valori a comune nelle tuple• conseguenze - duplicazioni
Informazioni incomplete e null• Le informazioni all’interno di una tabella devono essere
rappresentate in maniera omogenea attenendosi strettamente al dominio scelto per ciascun attributo
• In alcune casistiche si ha però il bisogno di rappresentare tuple incomplete, in cui alcuni attributi non hanno un valore specificato• Perché non esiste• Perché può esistere ma non si conosce (potrebbe essere nota dopo)
• A tal proposito è introdotto un particolare valore per indicare l’assenza di informazione associato a tale attributo
• Tale valore, detto valore NULL, si aggiunge a quelli di dominio
• Perché estendere il dominio ed invece non usare un valore del dominio?• Potrebbe non esistere (es. Saldo)• Cambierebbe da dominio a dominio, ossia da applicazione (es
matricola – 0 – ma andrebbe documentato)
Esempio di tabella con null
• Altri esempi: il numero di patente potrebbe essere non noto o non esistere perché la persona non ha la patente
Matricola Cognome Nome Data di Nascita
276545 Rossi Marco NULL
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro 12/02/1972
Studenti
• Non si conosce la data di nascita dello studente Marco Rossi
Problemi connessi all’utilizzo del null• Troppi valori null possono rendere inconsistente
l’informazione nella base di dati (che diventa inutilizzabile)
Studenti
Matricola Cognome Nome Data di Nascita
NULL Rossi Marco NULL
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro NULL
NULL Di Martino Gennaro NULL
• La prima tupla non è identificabile: se si vuole inserire uno studente Mario Rossi, è lo stesso?
• Come identificare la tupla in altre relazioni?
• Le ultime due tuple fanno riferimento o meno allo stesso studente?
Vincoli di Integrità
• Le strutture del modello permettono di definire come i dati verranno organizzati
• In molti casi però non è vero che qualsiasi insieme di tuplerappresentano informazioni corrette per la realtà di interesse
• Al fine di evitare la presenza di tuple composte da informazioni non corrette il modello relazionale permette di definire dei vincoli di integrità sui dati di una relazione, cioè delle proprietà che devono essere soddisfatte dalle istanze
• Un vincolo può essere visto come un predicato che associa ad ogni istanza un valore vero o falso in modo da verificare che ciascuna istanza sia corretta e ammissibile• Istanze corrette o ammissibile sono quelle che soddisfano i vincoli di
integrità• Una istanza è ammissibile se e solo se tutte le tuple soddisfano i
vincoli
Esempio
Matricola Cognome Nome Data di Nascita
276545 Rossi Marco NULL
243064 Rossi Luca 23/04/1972
243064 Di Martino Gennaro 12/02/1972
Studenti
Studente Voto Corso
276545 25 01
200010 26 03
243064 36 05
Esami
Codice Titolo Docente
01 Analisi Giani
03 Chimica Fantoni
05 Chimica Baggio
Corsi
Un’istanza di basi di dati con istanze non corrette
Nota implementativa ai vincoli di integrità• alcuni tipi di vincoli (ma non tutti) sono
"supportati" dai DBMS:• possiamo quindi specificare vincoli di tali tipi nella
nostra base di dati e il DBMS ne impedisce la violazione
• per i vincoli "non supportati", la responsabilità della verifica è dell'utente o del programmatore
Vincoli di integrità
• Esistono diverse tipi di vincoli di integrità.
• Questi possono essere distinti in due categorie a seconda degli elementi di una base di dati coinvolti:• Vincolo Intrarelazionale: sono vincoli il cui
soddisfacimento è definito rispetto alle singole relazioni della base di dati, questi possono riguardare valori di una singola tupla o di più tuple appartenenti alla stessa relazione
• Vincolo Interrelazionale: se il vincolo coinvolge più relazioni
Vincoli intrarelazionali
• Coinvolgono le tuple di una sola relazione• In generale coinvolgono più tuple (o tutte) della
relazione
• Quando coinvolgono una sola tupla indipendentemente dalle altre, si parla di • Vincolo di Tupla: è un vincolo che può essere valutato su
ciascuna tupla indipendentemente dalle altre
• Se poi riguardano il singolo attributo, si parla di• Vincolo di Valore o di Dominio: è un vincolo che impone una
restrizione sul dominio (sui valori) di un singolo attributo
Vincoli di Tupla
• Esprimono condizioni sui valori di ciascuna tuplaindipendentemente dalle altre
• Possono essere espressi tramite espressioni booleane (circa nel significato java) e aritmetiche
Esempio:
In una tabella Esami(STUDENTE,MATERIA,DATA,VOTO,LODE)
la LODE può essere assegnata solo se il VOTO è 30
Vincolo: (LODE = ‘L’) AND (VOTO = 30)
In una tabella Pagamenti(DATA,IMPORTO,RITENUTE,NETTO)
Il netto è pari alla differenza fra l’importo e le ritenute
Vincolo: NETTO = IMPORTO - RITENUTE
Vincoli di Valori o di Dominio
• I valori nelle tuple devono essere del dominio (tipo) specificato nello schema• E’ un Vincolo di base• viene specificato per ogni attributo (alla creazione dello
schema) • riguarda il suo dominio, ovvero che tipo di dati “ha senso” per
quell’attributo• i domini che si possono usare dipendono dal DBMS (Domini
predefiniti)• è possibile definire nuovi Domini
• Vincolo NOT NULL• Impone alle tuple di non avere valori nulli (su uno o più
attributi)
Vincoli di Dominio
• Altri vincoli di dominio possono essere specificati tramite espressioni booleane (circa nel significato java) e aritmetiche
Esempio:
nella tabella Esami(STUDENTE,MATERIA,DATA,VOTO,LODE)
il VOTO deve essere compreso fra 18 e 30 (se si registrano solo gli esami superati)
Vincolo: (VOTO >= 18) AND (VOTO<=30)
Chiavi• Le tuple di una tabella hanno bisogno di un
meccanismo per essere identificate univocamente
• A tal fine per ogni tabella viene definita una Chiave
• Una Chiave è un (sotto) insieme di attributi utilizzato per identificare univocamente le tuple di una relazione
• Un insieme degli attributi è definito superchiave di una relazione se non esistono due tuple distinte con gli stessi valori degli attributi componenti la superchiave nella tabella• Tutti gli attributi di una tabella possono essere
considerati super-chiave in quanto non sono inserite due tuple con valori identici degli attributi
Vincolo di chiave
• Una superchiave è chiave se essa è una superchiaveminimale, cioè non esiste un’altra superchiavecomposta da un sottoinsieme dei suoi attributi che sia ancora superchiave
• Quando tale proprietà è imposta come vincolo alle tuple di uno schema di relazione, si dice che si sta imponendo un vincolo di chiave
• Tra tutte le chiavi di una relazione solitamente viene selezionata la chiave primaria che è una chiave su cui si aggiunge il vincolo di NOT NULL al fine di poter garantire l’identificazione univoca di tutte le tuple, tale vincolo è detto vincolo di chiave primaria• La chiave primaria viene indicata sottolineandola
Esistenza delle chiavi
• Una relazione non può contenere ennuple distinte ma uguali
• Ogni relazione ha quindi come superchiavel’insieme degli attributi su cui è definita
• e quindi ha (almeno) una chiave
Esempio - Chiave
Matricola Cognome Nome Data di
Nascita
Corso
276545 Rossi Marco NULL Ing. Gestionale
253065 Rossi Luca 23/04/1972 Ing. Informatica
243064 Di Martino Luca 12/02/1972 Ing. Informatica
Studenti
• L’insieme {Matricola, Nome, Cognome} è una superchiave• {Nome} non è superchiave : ci sono due tuple distinte con lo stesso nome• {Cogome} non è superchiave : ci sono due tuple distinte con lo stesso cognome• L’insieme {Matricola} è una superchiave. Essa è anche una superchiave minimale che può
essere candidata a chiave primaria in quanto la Matricola difficilmente sarà sconosciuta• L’insieme {Nome, Corso} NON è una superchiave
• L’insieme {Cognome, Corso}, come pure {Cognome, nome} sono superchiavi minimali, però lo sono solo in relazione a questa specifica istanza di tuple, in generale è possibile avere due persone con lo stesso cognome che frequentano lo stesso corso di studi
Importanza delle chiavi
• L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati• In particolare garantisce la sua univoca identificabilità
• Le chiavi permettono di correlare i dati in relazioni diverse
Chiavi e valori nulli
• In presenza di valori nulli nella chiave, i valori della chiave non permettono• di identificare le ennuple
• di realizzare facilmente i riferimenti da altre relazioni
esempio• Sono presenti due chiavi
• Matricola
• Cognome, nome, data di nascita
Matricola Cognome Nome Data di Nascita
NULL Rossi Marco NULL
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro NULL
NULL Di Martino Gennaro 11/09/1995
Studenti
• La prima tupla presenta null in entrambe le chiavi• Non è identificabile (se inserisco Rossi Marco, è lo stesso?)• Non può essere riferite in altre relazioni
• Le ultime due sono identificabili ma• Rappresentano lo stesso studente?
Esempio – chiave primaria• Matricola si sceglie come chiave primaria
• Non sono ammessi valori null per matricola
Matricola Cognome Nome Data di Nascita
243063 Rossi Marco NULL
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro NULL
243100 Di Martino Gennaro 11/09/1995
Studenti
• La prima tupla è identificabile tramite matricola• Un nuovo Marco Rossi avrà una nuova matricola• Può essere riferite in altre relazioni
• Le ultime due tuple si riferiscono a studenti diversi
Riferimenti tra relazioni
Matricola Cognome Nome Data di Nascita
276545 Rossi Marco NULL
253065 Rossi Luca 23/04/1972
243064 Di Martino Gennaro 12/02/1972
Studenti
Studente Voto Corso
276545 25 01
253065 26 03
243064 30 05
EsamiCodice Titolo Docente
01 Analisi Giani
03 Chimica Fantoni
05 Chimica Baggio
Corsi
Una base di dati solitamente è composta da diverse relazioni in cui le varie tuple sono collegatetra di loro attraverso riferimenti (rappresenati da valori).In questo caso la relazione Studenti e Esami sono collegate attraverso gli attributi Studente eMatricola, in particolare le tuple della tabella esami hanno come valore dell’attributo Studentevalori presenti nelle tuple della tabella Studenti nell’attributo Matricola.Essendo questi riferimenti validi (non esiste nessuna tupla della tabella Esami che abbia uncampo studente con un valore non presente nel campo Matricola in una delle tuple della tabellaStudenti) questi sono effettivamente utilizzabili
Vincoli di integrità referenziale• Un vincolo di integrità referenziale o foreign key è un
vincolo interrelazionale che permette di imporre che tali riferimenti fra tabelle siano utilizzabili. In particolare:
Un vincolo di integrità referenziale (detto anche vincolo di “foreign key” o “referential integrityconstraint key” ) fra un insieme di attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X di ciascuna tupla dell’istanza di R1 di comparire come valori della chiave (primaria) dell’istanza di R2.• devono comparire in una e una sola tupla di R2 avente
• Un legame fra tabelle, per essere corretto, deve sottostare ad un vincolo di integrità referenziale.
Esempio: vincolo di integrità referenziale fra Prov e Numero di Infrazioni e Auto – vincolo corretto InfrazioniCodice
34321
64521
53524
Data
1/2/95
4/3/95
5/4/96
Vigile
3987
3295
3295
Prov Numero
MI
TO
PR
E39548
F34268
839548
Auto Prov Numero
MI
TO
PR
E39548
F34268
839548
Cognome
Rossi
Rossi
Neri
Nome
Mario
Mario
Luca
Esempio: violazione del vincolo di integrità referenzialeInfrazioniCodice
34321
73321
64521
53524
Data
1/2/95
4/3/95
5/4/96
5/2/98
Vigile
3987
3295
3295
9345
Prov Numero
MI
TO
PR
PR
39548K
E39548
839548
839548
Auto Prov Numero
MI
TO
PR
E39548
F34268
839548
Cognome
Rossi
Rossi
Neri
Nome
Mario
Mario
Luca
Conversione di diagrammi ER nel modello relazionale
foglia@iet.unipi.it
Conversione modello E-R in Modello Relazionale• Il Modello Relazionale che rappresenta la realtà di
interesse può essere ricavato dal Modello ER attraverso una sequenza di operazioni di conversione.
Traduzione di Entità
• Una relazione (tabella) per ciascuna entità del Modello ER
• utilizzando per i campi gli stessi attributi semplici dell'entità di provenienza
• chiave primaria scelta tra le chiavi candidate
Relazioni• Ad ogni relazione del modello E-R corrisponde una tabella
nel modello relazionale, cui è assegnato il nome della corrispondente relazione del modello E-R
Per le relazioni si deve prima di tutto esaminare la cardinalità: • Le relazioni M:N devono essere tradotte in tabelle che hanno come
attributi gli eventuali attributi della relazione e (da non dimenticare!) le chiavi di entrambe le entità collegate dalla relazione.
• Le relazioni 1:N si possono conglobare nella tabella relativa all'entità dalla parte dell' N. La chiave della tabella dalla parte dell' 1 viene inglobata nella tabella dalla parte dell' N (insieme agli attributi della relazione). Per le cardinalità delle entità, è la chiave della N che si ingloba nella 1 (insieme agli attributi della relazione)
• Le relazioni 1:1 si possono conglobare come le 1:N, a scelta nell'una o nell'altra tabella.
• In tutti i casi, si introduce un vincolo di integrità referenziale.
Impiegato DipartimentoAfferenza
Direzione
DataAfferenza
Cognome
Nome
Stipendio
Nome
Indirizzo
Partecipazione
Progetto
DataInizio
Nome Budget
DataConsegna
(0,1) (1,1)
(1,N)(0,1)
(0,N)
(1,N)
Cognome Nome Stipendio
Rossi Marco 60000
Rossi Luca 50000
Di Martino Luca 20000
Impiegato
Nome Budget DataConsegna
Progetto1 10000 10/10/2016
ProgettoII 20000 02/10/2015
ProgettoIII 1000 02/03/2017
Progetto
Cognome Nome NomeProgetto Data_inizio
Rossi Marco ProgettoI 10/10/2015
Rossi Luca ProgettoI Null
Rossi Marco ProgettoIII Null
Partecipazione
Relazione Partecipazione M:N che lega Impiegato e Progetto
Cognome Nome Stipendio NomeDip DataAfferenza
Rossi Marco 60000 Aereonautica 10/02/1995
Rossi Luca 50000 Chimica 10/05/1996
Di Martino Luca 20000 Aereonautica 22/02/1998
Impiegato
Nome Budget
Aereonautica 1000000
Informatica 2000000
Chimica 100000
Dipartimento
Relazione Afferenza 1:N che lega Impiegato e Dipartimento
Relazione Direzione 1:1 che lega Impiegato e Dipartimento
Cognome Nome Stipendio NomeDip DataAfferenza
Rossi Marco 60000 Aereonautica 10/02/1995
Rossi Luca 50000 Chimica 10/05/1996
Di Martino Luca 20000 Aereonautica 22/02/1998
Verdi Mario 67000 Informatica 22/02/2007
Impiegato
Nome Budget Cogn _dir Nome_dir
Aereonautica 1000000 Rossi Marco
Informatica 2000000 Verdi Mario
Chimica 100000 Rossi Luca
Dipartimento
Entità deboli
• Per ogni entità debole bisogna creare una relazione R (tabella) ereditandone gli attributi.
• Bisogna inoltre includere, come chiave esterna, la chiave primaria dell'entità "proprietaria".
• La chiave primaria di R sarà l'insieme della chiave esterna più la chiave parziale.
Esempio - Entità deboli
• Conto(numero, saldo)
• Transazione(numero, numTransazione, importo, data)
Saldo Conto TransazioneMovimenta
Numero NumTransazione
DataImporto
(1,1)(0,N)
osservazioni
• Alle volte, per semplificare gli schemi si ricorre a delle ridenominazioni.
• Esempio:• Conto(numero, saldo)
• Transazione(conto, numTransazione, importo, data)
• Occorre ricordarsi che conto è dello stesso dominio di numero, e che esiste un vincolo di integrità referenziale fra conto e numero
Gerarchie
• Il modello relazionale è “piatto” e non può rappresentare le gerarchie che sono sostituite da entità e associazioni.
• Viene creata una tabella per ogni entità coinvolta nella specializzazione.
• Le tabelle delle entità figlie ereditano dall'entità genitore la chiave (come chiave esterna).
Eliminazione di ridondanze e anomalie – cenni alle
forme normali
foglia@iet.unipi.it
Ridondanze e anomalie
• Il progetto logico di una base di dati basato su uno schema concettuale in cui le entità e associazioni reali sono ben separate in maniera corretta non dovrebbe contenere ridondanze o anomalie
• In ogni modo lo schema logico prodotto può essere verificato a posteriori per verificare la presenza di ridondanze e anomalie che possono essere eliminate o corrette
Esempio di schema con ridondanze e anomalie
• Lo stipendio di ciscun impiegato è unico e funzione sola dell’impiegato stesso, indipendentemente dai progetti
• Il bilancio di ciscun progetto è unico e dipende solo dal progetto indipendentemente dagli impiegati
Impiegato Stipendio Progetto Bilancio Funzione
Rossi 20000 Marte 2000 Tecnico
Verdi 35000 Giove 15000 progettista
Verdi 35000 Venere 15000 Progettista
Neri 55000 Venere 15000 Direttore
Neri 55000 Giove 15000 Consulente
Neri 55000 Marte 2000 Consulente
Mori 48000 Marte 2000 Direttore
Mori 48000 Venere 15000 Progettista
Bianchi 48000 Venere 15000 Progettista
Bianchi 48000 Giove 15000 Direttore
Anomalie
• Tale struttura particolare presenta le seguenti anomalie:• Ridondanza: lo stipendio di ciascun impiegato è
replicato per ogni progetto a cui partecipa• Anomalia di aggiornamento: se lo stipendio di un
impiegato cambia tutte le tuple corrispondenti devono essere aggiornate
• Anomalia di cancellazione: se un impiegato interrompe la partecipazione a tutti i progetti non si può conservare traccia del suo nome e del suo stipendio
• Anomalia di inserimento: analogamente un nuovo impiegato non può essere inserito fino a quando questo non partecipa ad almeno un progetto
Dipendenze funzionali
• Al fine di verificare la presenza di anomalie in uno schema logico si definisce un ulteriore vincolo di integrità tra gli attributi di una stessa relazione, la dipendenza funzionale
• Dati due attributi Y e Z di uno schema R(X) (o due sottoinsiemi Y e Z degli attributi X di R), si dice che esiste su R una dipendenza funzionale tra Y e Z, se per ogni coppia di tuple di R aventi gli stessi valori degli attributi di Y, risulta che hanno gli stessi valori anche sugli attributi Z
• In altre parole esiste un vincolo di dipendenza funzionale tra Y e Z in R se in ogni tupla il valore di Y determina il valore di Z (e.g. Impiegato determina Stipendio, Progetto determina Bilancio)
• Le dipendenze funzionali sono indicate con Y → Z in R
Dipendenze funzionali non banali
• Su una relazione possono essere verificate dipendenze funzionali banali, in particolare quando alcuni attributi di Z compaiono in Y (e.g. Impiegato, Progetto → Progetto)
• Si dicono dipendenze funzionali non banali quelle in cui nessun attributo di Z compare tra gli attributi di Y
• Il concetto di dipendenza funzionale generalizza quello di chiave in quanto tra la chiave e gli altri attributi sussiste una dipendenza funzionale
Forma Normale
• Data uno schema logico di una relazione, la verifica della sua struttura rispetto alle sue dipendenze funzionali da indicazione della presenza di anomalie e ridondanze
• A tal fine viene definita una particolare forma dello schema logico di una base di dati, la forma normale
• Una relazione R è in forma normale se per ogni dipendenza funzionale non banale Y → Z su di essa, Y contiene una chiave K di R, cioè y è superchiaveper R
• Se una relazione non soddisfa la forma normale, può essere applicata una decomposizione in forma normale, al fine di normalizzarla
Esempio Normalizzazione
Impiegato Stipendio
Rossi 20000
Verdi 35000
Neri 55000
Mori 48000
Bianchi 48000
Progetto Bilancio
Marte 2000
Giove 15000
Venere 15000
Impiegato Progetto Funzione
Rossi Marte Tecnico
Verdi Giove progettista
Verdi Venere Progettista
Neri Venere Direttore
Neri Giove Consulente
Neri Marte Consulente
Mori Marte Direttore
Mori Venere Progettista
Bianchi Venere Progettista
Bianchi Giove Direttore
Dipendenze Formali:Impiegato, Progetto →FunzioneImpiegato →StipendioProgetto → Bilancio