Il Modello relazionale

annuncio pubblicitario
1
Il Modello relazionale
Il modello relazionale si basa sul concetto di relazione così come è definito nella teoria degli insiemi.
Si dice che r è una relazione su una sequenza di insiemi D ,D ,...,D (non necessariamente distinti) se è un sottoinsieme
1
2
n
del prodotto cartesiano D x D x...x D . In simboli si scrive:
1
2
n
r  D xD x...xD .
1
2
n
D ,D ,...,D sono detti domini della relazione, ed n è detto grado della relazione.
1
2
n
Una relazione r è quindi un insieme di ennuple di valori <d ,d ,...d > tali che ogni d appartiene al dominio D . Il numero
1
2
n
j
j
delle ennuple è detto cardinalità della relazione, tale numero nella realtà delle applicazioni delle basi di dati è finito,
poiché ogni applicazione tratta un numero finito di dati.
Ad ogni dominio viene associato un nome detto attributo che lo identifica univocamente all'interno della relazione;
questo permette di trascurare l'ordinamento dei domini all'interno della stessa.
Dal punto di vista intensionale una relazione è caratterizzata da un nome e dalla lista dei suoi attributi che è detto
schema di relazione. Un insieme di schemi di relazione è uno schema di base di dati relazionale.
Supponiamo di voler rappresentare le informazioni relative a dei libri e loro venditori per una libreria. La base di dati
relazionale potrà avere il seguente schema:
LIBRO (codice_libro,autore,titolo,prezzo)
VENDITA(venditore,codice_libro,quantità)
Una relazione può anche essere rappresentata per mezzo di una tabella, dove ogni riga è una ennupla ed ogni colonna è
costituita dai valori dell'attributo corrispondente.
LIBRO
Codice_libro
01
02
03
04
VENDITA Venditore
Rossi
Rossi
Bianchi
autore
Eco
Svevo
Rich
Sciascia
Codice_libro
01
02
04
titolo
Il nome della rosa
La coscienza di Zeno
Intelligenza Artificiale
La scomparsa di Majorana
prezzo
12000
11000
35000
8000
Quantità
5000
7000
3500
Osservando una relazione rappresentata per mezzo di una tabella si può osservare che:
 I valori di ogni colonna sono tra loro omogenei, ne consegue che i valori di un attributo appartengono allo stesso
dominio (interi, stringhe. etc.)
 Le righe sono fra loro diverse: non esistono ennuple uguali.
 L'ordinamento delle colonne è irrilevante poiché esse sono identificate per nome e non per posizione.
 L'intestazione della tabella corrisponde allo schema di relazione
Si è affermato che una relazione può essere usata per modellare una conoscenza acquisita sulla realtà. Ciò implica che
non un qualsiasi insieme finito di ennuple può essere una relazione valida dal punto di vista interpretativo, anche se le
ennuple sono del giusto grado e i valori appartengono ai domini giusti. Consideriamo ad esempio la seguente relazione:
Iscrizione
Studente
Rossi
Bianchi
Poli
Matricola
0263
5567
2323
Età
20
250
23
Non è possibile che la relazione iscritto contenga ennuple in cui un valore dell'attributo età sia 250, così come non è
possibile che due ennuple abbiano il valore dell'attributo matricola uguale. Modellare una realtà significa quindi anche
2
esplicitare i vincoli che devono essere rispettati dalle ennuple che entrano a far parte di una base di dati. Per cui uno
schema di relazione deve essere corredato da vincoli che rendono valide, dal punto di vista interpretativo, le ennuple
appartenenti alla relazione stessa. Uno dei vincoli che sempre e comunque deve essere rispettato è la presenza di una
chiave primaria. Diamo ora la definizione di chiave candidata:
"Un sottoinsieme di attributi di una relazione r è detto chiave candidata se soddisfa le seguenti proprietà:
 Univocità: un valore definito della chiave K individua univocamente una ennupla della relazione: quindi due
ennuple distinte non possono avere lo stesso valore su K.
 Non ridondanza: nessuno degli attributi della chiave può essere eliminato senza che questa perda la proprietà
precedente".
Si può osservare che una chiave candidata esiste sempre, è quella composta da tutti gli attributi della relazione. Tra
queste quella con il minor numero di attributi diventa la chiave primaria.
I Linguaggi Relazionali
Per consentire operazioni sulle basi di dati, come interrogazioni, cancellazioni, modifiche e aggiunte, vengono definiti
opportuni linguaggi per la manipolazione dei dati.
In particolare rivestono un ruolo fondamentale le operazioni di interrogazione sulle basi di dati, ruolo fondamentale
rispetto all'interazione con l'utente, e spesso queste costituiscono un linguaggio separato detto query language.
I linguaggio relazionali proposti si dividono in linguaggi algebrici e linguaggi basati sul calcolo dei predicati.
L'algebra relazionale ed il calcolo relazionale che esemplificano rispettivamente i due linguaggi, sono stati descritti da
Codd.
Nell'algebra relazionale, data una collezione di operatori e una base di dati relazionale, ogni operazione ha come
risultato una relazione derivata dalla base di dati a cui è stata applicata una sequenza di operatori relazionali. La
collezione di operatori è composta da operatori tradizionali su insiemi (unione, intersezione, differenza, etc) e da
operatori specifici su relazioni (proiezione, selezione, join naturale).
Gli operatori insiemistici possono operare solo su coppie di relazioni definite nello stesso schema o su schemi
compatibili, cioè con ugual grado e attributi a due a due appartenenti allo stesso dominio .
Vediamo di seguito le varie operazioni.
Unione
Date due relazioni R e S con stesso schema o schema compatibile, l'unione di R e S è la relazione costituita da tutte le
ennuple che appartengono solo a S o solo a R o ad entrambe. Lo schema della relazione ottenuta o lo stesso di R o S.

union(R, S)  R  S  r| r  R or r  S

Differenza
Date due relazioni R e S con stesso schema o schema compatibile, la differenza tra R e S è la relazione composta da
tutte le ennuple di R che non appartengono a S. Lo schema della relazione così ottenuta e lo stesso di R o S.

difference(R, S)  R  S  r| r  R and r  S

Intersezione
Date due relazioni R e S con stesso schema o schema compatibile, l'intersezione tra R e S e la relazione composta dalle
ennuple che appartengono sia a R che a S. Lo schema della relazione così ottenuta è lo stesso di R o S

intersect(R, S) = R  S = r| r  R and r  S
Prodotto cartesiano

3
Date due relazioni R e S il loro prodotto è la relazione costituita da tutte le possibili coppie (r,s), dove r appartiene a R e
s appartiene a S. Lo schema della relazione risultante è la concatenazione dello schema di R e S. Se n1 e n2 sono il
grado e m1 e m2 la cardinalità rispettivamente di R e S, la relazione ottenuta dal prodotto di R e S avrà grado n1+n2 e
cardinalità m1xm2.

RxS = t| t = r conc s, r  R, s  S

Esempio
R
A
a
b
c
B
b
a
b
C
c
f
f
RxS
A
a
a
b
b
c
c
B
b
b
a
a
b
b
C
c
c
f
f
f
f
S
D
b
d
b
d
b
d
D
b
d
E
g
q
E
g
q
g
q
g
q
Selezione
Sia R una relazione ed F una formula proposizionale in cui gli operandi sono nomi di attributi o costanti e gli operatori
sono quelli di confronto , =, >=, <=,>,< , con possibilità di concatenazione per mezzo degli operatori logici and, or,
not.
La selezione su R per mezzo di F, rappresentata da
 (R)
F
è una relazione T che ha lo stesso schema di R ed è costituita dalla tuple di R che soddisfano il predicato F, e si scrive
anche:
 (R)={tR|F(t)=vero}
F
Esempio: sia data la relazione
esemplare
Nome_comune
Giraffa
Giraffa
Leone
Elefante
Codice_inventario
01
02
01
01
Data_arrivo
20/05/1953
20/05/1953
01/02/1960
01/02/1960
Codice_anagrafico
G01
G02
L01
E01
se usiamo la seguente operazione di selezione

NomeComune=Giraffa
(esemplare)
otteniamo la seguente realzione:
Nome_comune
Giraffa
Giraffa
Proiezione
Codice_inventario
01
02
Data_arrivo
20/05/1953
20/05/1953
Codice_anagrafico
G01
G02
4
Sia R una relazione e X un sottoinsieme degli attributi nello schema di R, la proiezione di R sugli attributi X,
rappresentata da
X(R)
è una relazione che ha come schema X, e le cui ennuple sono costituite dai valori di X in R; le eventuali ennuple
duplicate devono essere eliminate.
Esempio
Riprendiamo la relazione esemplare vista nell'esempio precedente. Allora

NomeComune,DataArrivo
Nome_comune
Giraffa
Leone
Elefante
(esemplare)=
Data_arrivo
20/05/1953
01/02/1960
01/02/1960
Join naturale
Siano R e S due relazioni tali che i due schemi abbiano un sottoinsieme di attributi in comune, allora il join naturale di R
con S, rappresentato da
r*s
è una relazione nella quale ciascuna ennupla è una concatenazione di una ennupla di R con una ennupla di S che hanno
gli stessi valori nel sottoinsieme degli attributi in comune.
Esempio
Siano date le relazioni:
R
R*S
Genere
Giraffa
Leone
Orso
Zebra
Genere
Giraffa
Leone
Orso
Casa
Recinto
Tana
Grotta
Steccato
Casa
Recinto
Tana
Grotta
S
Addetto
Bini
Mori
Dea
Casa
Recinto
Tana
Grotta
Addetto
Bini
Mori
Dea
Le Forme Normali
Il modello relazionale mette a disposizione del progettista solo le relazioni per modellare la realtà. Le forme normali
sono state introdotte per fornire un criterio di scelta tra i vari schemi che possono modellare una porzione della realtà, in
modo tale da trovare quello e quelli "ottimi".
Il concetto di ottimo nella teoria relazionale è legato alla capacità dello schema di evitare delle anomalie di
comportamento a fronte di operazioni sui dati.
La prima forma normale (1NF)
5
La prima cosa da notare è che gli attributi di una relazione devono essere atomici, cioè una relazione non deve avere
attributi multipli e/o composti.
"Una relazione si dice in 1NF se tutti gli attributi sono atomici".
Esempi
La seguente relazione ha gli attributi nome e classe composti
Studenti
Cognome e Nome
Rossi Mario
Bianchi Carlo
Classe
3B
5B
Risultato
promosso
respinto
portare in 1NF la relazione è semplice:
Studenti
Cognome
Rossi
Bianchi
Nome
Mario
Carlo
Classe
3
5
Sezione
B
B
Risultato
promosso
respinto
Vediamo ora un esempio di relazione con un attributo multiplo:
Farmaci
Farmaco
F1
F2
Quantità
Q1
Q2
Indicazioni
M1,M2
M3,M4,M5
l'attributo indicazioni è multiplo, per portare la relazione farmaci in 1NF bisogna scomporla in due relazioni:
Farmaci
Farmaco
F1
F2
Indicazioni
Farmaco
F1
F1
F2
F2
F2
Quantità
Q1
Q2
Indicazioni
M1
M2
M3
M4
M5
Anomalie
Abbiamo parlato precedentemente di anomalie, vediamo ora quali possono essere le anomalie riscontrabili su una
relazione. Prendiamo in esame la relazione Forniture: questo schema di relazione presenta vari problemi.
Forniture
Fornitore
Indirizzo
Città
Prodotto
Peso Data_consegna
Quantità
Prezzo
Italacciaio
Via Dante,32
Roma
dado
10
121095
300
100
Italacciaio
Via Dante,32
Roma
vite
15
151195
250
120
Italacciaio
Via Dante,32
Roma
bullone
30
151195
500
150
Rossi
Via Verdi,1
Parma
dado
10
151095
1000
105
Rossi
Via Verdi,1
Parma
bullone
35
151295
125
150
Campicoop
Via Trento,5
Milano vite
10
101195
200
75
Infatti possiamo individuare le seguenti anomalie:
Ridondanza
Una stessa informazione può essere rappresentata più di una volta. Ad esempio, l'indirizzo e la città di un fornitore
sono ripetute tante volte quante sono le forniture fatte dallo stesso; ugualmente il peso di un singolo articolo è ripetuto
tante volte quante sono le forniture di tale articolo.
6
Anomalie da modifica
Come visto prima l'indirizzo di un fornitore può risultare ripetuto più volte, ciò significa che se il fornitore cambia il
proprio indirizzo, questo deve essere modificato in tutte le ennuple dove compare.
Anomalie da inserzione
Non è possibile inserire informazioni riguardanti un prodotto se non ne è stata fatta almeno una fornitura. In modo
analogo si riscontra il solito problema per le informazioni che riguardano un fornitore.
Anomalie da cancellazione
Se si vogliono cancellare tutte le ennuple riguardanti il prodotto "vite", si perderanno le informazioni del fornitore
"Campicoop". In generale si perderanno le informazioni relative ad un fornitore se vengono cancellate tutte le sue
forniture.
La seconda forma normale (2NF)
Prendiamo come esempio la seguente porzione di un data base relazionale per descrivere uno zoo:
Esemplare (Nome comune,Codice inventario,Data arrivo, Codice anagrafico)
Collocazione (Nome comune,Codice inventario,Area, Gabbia,Casa,Addetto,Responsabile)
L'esempio riportato è in 1NF poiché ogni elemento è atomico. Prendiamo ora in esame la relazione collocazione. Si
possono evidenziare le seguenti anomalie:
Anomalia di inserimento di nuove ennuple: informazioni sull'area e sulla casa di un genere non possono essere inserite
se non si conosce il codice di inventario di uno specifico esemplare.
Anomalia di cancellazione di ennuple esistenti: l'eliminazione di tutti gli esemplari di un genere fa si che si perdano le
informazioni sella casa di quel genere.
Anomalie di aggiornamento di ennuple esistenti: se cambia l'addetto alla casa di un genere di esemplari bisogna
aggiornare tutte le ennuple contenenti le occorrenze di esemplari di quel genere.
Tali anomalie sono in parte legate a ridondanze presenti nella relazione:
- la casa destinata ad un genere di esemplari ed il suo addetto sono ripetuti per ogni esemplare del genere.
- l'area in cui una casa è collocata ed il suo responsabile sono ripetuti per tutti gli esemplari che vivono in quella casa.
Da questi particolari si può dedurre la generalità: si è voluto rappresentare in un'unica relazione concetti diversi
(nell'esempio la collocazione di un genere e la collocazione di un singolo esemplare).
Infatti se alla relazione originale sostituiamo i due schemi che seguono:
collocazione_esemplare (Nome comune,codice inventario, gabbia)
collocazione_genere (Nome comune,area,casa,addetto, responsabile)
le anomalie sopra presentate scompaiono.
Lo studio dei problemi di eliminazione delle anomalie ha portato alla definizione di forme normali che sono espresse in
termini di proprietà dette dipendenze funzionali.
-
Dati due insiemi X e Y di una relazione R, si dice che Y dipende funzionalmente da X se ad ogni insieme dei valori
di X corrisponde un unico insieme di valori di Y.
Dati due insiemi X e Y di una relazione R, tali che Y dipende funzionalmente da X, la dipendenza si dice completa
se Y non dipende funzionalmente da alcun sottoinsieme di X.
"Una relazione è in 2NF se è in 1NF e ogni attributo non appartenente alla chiave dipende funzionalmente e
completamente dalla chiave".
Nell'esempio abbiamo che:
Bini dipende funzionalmente da Giraffa 01
se prendiamo un sottoinsieme della chiave, ad esempio Giraffa, notiamo che Bini dipende funzionalmente sia dalla
prima che dalla seconda istanza, per cui non siamo in 2NF.
La terza forma normale (3NF)
Consideriamo la relazione
7
Collocazione_genere (Nome comune,casa,addetto,area, responsabile)
La relazione è in 2NF poiché è in 1NF e la sua chiave è costituita da un unico attributo, quindi tutti gli altri attributi
dipendono funzionalmente da essa. Si presentano comunque altre anomalie:
Anomalia di inserimento: non è possibile inserire che una casa è gestita da un particolare addetto senza conoscere
almeno un genere destinato a quella casa.
Anomalia di cancellazione: se un genere si estingue si perde l'informazione che lega la casa, destinata a quel genere, e
l'area in cui è ubicata.
Anomalia di modifica: se cambia il responsabile di una certa area dobbiamo modificare tutte le ennuple che contengono
tale area.
Anche in questo caso le anomalie sono dovute al fatto che si vogliono rappresentare in un'unica relazione concetti
diversi (la collocazione di un genere, gli addetti alle case, i responsabili di area). Per eliminare tali anomalie
introduciamo il concetto di dipendenza transitiva.
Addetto e area dipendono funzionalmente da Nome comune:
Addetto,Area dipende funzionalmente da Nome comune
si può notare che:
Casa dipende funzionalmente Nome comune
Addetto,Area dipende funzionalmente Casa
abbiamo cioè una dipendenza transitiva.
Ugualmente
Area dipende funzionalmente Nome comune
Responsabile dipende funzionalmente Area
Definizione di dipendenza transitiva.
Un attributo A di una relazione R dipende transitivamente da un insieme di attributi Y di R, se R contiene un altro
insieme di attributi Z tale che
Z dipende funzionalmente da Y
A dipende funzionalmente da Z
Definizione di terza forma normale
"Una relazione è in 3FN se è in 2FN ed ogni attributo non chiave è dipendente in modo non transitivo dalla chiave".
Quindi ogni attributo non appartenente a chiavi non dipende nè parzialmente nè transitivamente da una chiave.
Se sostituiamo la relazione collocazione_genere con le seguenti relazioni:
Collocazione_genere (Nome comune, casa)
Info_casa (Casa,area,addetto)
Info_area (Area,responsabile)
ci troviamo di fronte ad uno schema in 3FN.
Bibliografia.
"Basi di dati. Stato dell'arte e prospettive". A cura di P.Tiberio. Masson.
C.J.Date. "An Introduction to Database System". Addison Wesley.
Scarica