I DBMS: Lo schema logico secondo il modello relazionale.

Capitolo terzo
Lo schema logico secondo il modello relazionale.
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.1. Introduzione
La fase della progettazione concettuale dei dati porta a definire lo Schema
Concettuale.
Il modello concettuale cerca di dare una struttura ai dati evitando il più
possibile i dettagli realizzativi, per cui con lo Schema Concettuale si otterrà
un documento di base che descrive la struttura del sistema informatico in
maniera astratta, vale a dire astratta dal modello concettuale prescelto.
Quindi, è un documento che guiderà i progettisti, nella fase della
progettazione logica, alla realizzazione dello Schema logico secondo un
particolare modello scelto. Un modello dei dati può essere definito come un
insieme di concetti, descritti tramite un preciso formalismo, il cui scopo è quello di
permettere una rappresentazione ed una manipolazione delle informazioni che
costituiscono il mondo della realtà1. Date afferma che il modello dei dati è
sempre costituito da tre componenti fondamentali :
A. un insieme di oggetti
B. un insieme di operatori
C. un insieme di regole di integrità
L’insieme degli oggetti è costituito dallo schema logico della base dei dati
secondo le regole del modello. Gli operatori permettono di realizzare sul
database funzioni come ricerca, aggiornamento, interrogazioni, ecc., mentre
le regole di integrità definiscono gli stati di congruenza del modello. Un
modello può essere definito (Codd) come uno strumento che allo stesso
tempo realizza una rappresentazione logica della realtà e una manipolazione
di questa rappresentazione.
Il modello scelto per realizzare lo schema concettuale è quello relazionale
elaborato
da Codd nel 1970. Si tratta di un modello matematico per la
descrizione dello schema logico in maniera indipendente dalla realizzazione
fisica il quale trae le sue origini dalla teoria degli insiemi. Molti autori, in
117
Capitolo terzo
Lo schema logico secondo il modello relazionale
seguito, hanno approfondito l’argomento cercando di formalizzare i diversi
problemi che l’utilizzo del modello dei dati ha suscitato, volendo
rappresentare in un sistema informatico un frammento del mondo reale.
Questo modello si è sempre più affermato nel mondo dei database
divenendo, ormai, il modello standard adottato per la descrizione dello
schema logico dei database, anche se nessun gestore di database può dirsi,
attualmente, completamente relazionale.
3.2. Il modello relazionale dei dati
Innanzi tutto vengono date alcune definizioni :
Coppia ordinata : Dati due insiemi D1 e D2, due elementi :
d1? D1
d2? D2
considerati in un dato ordine costituiscono una coppia ordinata :
(d1, d2)
Tuple : Una tuple è una generalizzazione del concetto di coppia ordinata.
Dati n insiemi :
D1, D2,.........,Dn
una tuple è una sequenza di n elementi ordinati :
(d1,d2,...........,dn)
con :
di ? Di
i = 1,2,..................,n
Relazione :un insieme di tuples costituisce una relazione definendola in
questo modo (Nazzini) :
Dati n insiemi (o DOMINI), non necessariamente distinti :
D1, D2,.........,Dn
una relazione R sui domini D1,D2,............Dn è un insieme di tuples :
d1,d2,...........,dn
1
Schiavetti :Database, Jackson 1985
118
Capitolo terzo
Lo schema logico secondo il modello relazionale
con :
di ? Di
A1
d1
d’1
:
:
d(m)1
i = 1,2,..................,n
A2
d2
d’2
:
:
d(m)2
..............
..............
.............
:
:
..............
An
dn
d’n
:
:
d(m)n
Alla base del modello relazionale si trova la relazione detta anche tabella o
schema poiché questa è costituita su di una struttura di righe dette tuple e
colonne dette domini della tabella.
Le testate della tabella Ai si dicono attributi, mentre il numero n dei domini
viene detto grado o arietà della tabella. Le tabelle che hanno un solo attributo
si dicono unarie, quelle con due attributi binarie, con tre ternarie e via
dicendo. Il numero delle tuple si dice cardinalità (m+1).
Le proprietà delle relazioni possono essere così riassunte2 :
? I valori di ogni colonna sono fra loro omogenei. I valori di un attributo
appartengono allo stesso dominio (interi, stringhe di caratteri, ecc..).
Quindi, si può affermare che gli attributi rappresentano l’uso dei domini
in una determinata tabella
? l’ordinamento delle colonne è irrilevante. Poiché sono sempre identificate per
nome e non per posizione
? l’ordinamento delle righe è irrilevante. Poiché queste sono identificate per
contenuto e non per posizione
? Lo schema di una tabella R(A) è un'espressione che contiene il nome della
tabella seguito dall’elenco di tutti gli attributi della tabella stessa. Può
essere sia l’intestazione della tabella sia questa espressione :
Prodotto
(codice, descrizione, giacenza)
2
Atzeni, Batini, De Antonellis :Introduzione alla teoria relazionale, Masson
119
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.2.1. Chiavi ed attributi di una relazione
Il concetto di chiave viene elaborato nella teoria relazionale poiché le tabelle
devono essere costruite in modo tale che ogni tupla deve essere distinta per
mezzo di uno o più attributi. Quindi, scopo delle chiavi è identificare
univocamente queste tuple. Si distingue fra superchiave, chiave candidate e
chiave primaria. La superchiave è l’insieme degli attributi che identificano
univocamente una tuple. La chiave candidata
è in numero minimo di
attributi necessari per identificare univocamente una tuple. Può essere
definita come una superchiave dalla quale possono essere eliminati attributi senza
distruggere la proprietà della identificazione univoca della tuple. Per cui una chiave
candidata è una superchiave con la proprietà di non ridondanza3.
Fra le chiavi candidate, che possono essere più di una, se ne sceglierà una
che ha il minor numero di attributi e che, a parità di attributi, ha il minor
numero di caratteri. Questa è la chiave primaria e sarà la chiave scelta fra le
chiavi candidate a rappresentare univocamente una tuple.
Rispetto alla chiave della tabella si possono distinguere gli attributi primi,
cioè quelli che fanno parte di almeno una chiave candidata, e i restanti
attributi non primi. Infine, quegli attributi che possono costituire la chiave di
altre tabelle sono detti chiave esterna e permettono di stabilire associazioni
fra le tabelle che rappresentano diverse entità.
3.3. Traduzione dei diagrammi E|R di uno schema concettuale in un
modello relazionale
Si può tradurre abbastanza agevolmente gli schemi E\R secondo le strutture
delle basi di dati relazionali seguendo, però, alcune regole.
3.3.1 Entità e gerarchie IS-A
3
Nazzini, Sanges, Vaccaro :Introduzione ai Data Base relazionali
120
Capitolo terzo
Lo schema logico secondo il modello relazionale
Le entità degli schemi E|R vengono tradotte in altrettante tabelle. Gli
attributi delle entità vengono riportati nelle colonne mentre le occorrenze
delle entità saranno tradotte in tuples.
Per tradurre, invece, le strutture IS-A nel modello relazionale si possono
adottare diverse soluzioni.
Una può essere quella di inserire tutto in una tabella che contenga gli
attributi comuni e gli attributi caratteristici di ciascuna classe. Per questo in
ogni tupla saranno vuote alcune colonne relative ad alcuni attributi a
seconda che, come nell’esempio del capitolo 2, il dipendente appartenga alla
categoria impiegati o dipendenti. In questo caso ci sarà uno spreco di spazio.
Un’altra soluzione, che può porre rimedio a questo inconveniente, è quello di
creare una tabella che contenga tutti gli attributi comuni e inserire gli
attributi specifici dei sottoinsiemi definiti dalla IS-A in altre tabelle legate a
questa da associazioni 1 ad 1. Quindi, nell’esempio della gerarchia IS-A
individuata dal diagramma dipendenti si può inserire in una tabella gli
attributi comuni e realizzare due tabelle, operai ed impiegati, in cui inserire
gli attributi specifici delle due categorie.
3.3.2. Associazioni 1 a 1 e 1 a n
Per tradurre il legame tra due entità che viene realizzato da un'associazione 1
a 1, si deve inserire tra gli attributi di almeno una delle entità la chiave
esterna, cioè quell’attributo o insieme di attributi che identificano l’entità ad
essa collegata. Le associazioni 1 a n sono tradotte in modo analogo. Occorre
però prestare attenzione a non inserire però attributi ripetuti, siano chiavi
esterne o attributi normali, perché possono essere causa di problemi nella
gestione delle tabelle. Ad esempio, in una relazione 1 a n fra due entità,
cliente e numero d’ordine, inserisco la chiave primaria della tabella cliente
nella tabella ordini divenendo chiave esterna. Se facessi l’inverso, ovvero se
inserissi come chiave esterna nella relazione clienti la chiave della tabella
ordini, dovrei inserire per ogni cliente tutti gli ordini creando molte tuples.
121
Capitolo terzo Lo schema logico secondo il modello relazionale
Le associazioni tra entità, del tipo 1 a 1 o 1 a n, riportate sui diagrammi E\R
possono aver attributi propri. Questi attributi possono essere riportati in
altrettante colonne di una delle tabelle in cui sono state tradotte le entità.
3.3.3. Associazioni n a m
Per tradurre le associazioni n a m (molti a molti) è necessario introdurre una
nuova tabella. Questo procedimento, sconsigliato per le associazioni 1 a 1 e 1
a n , è la strada obbligata per questo tipo di associazione (poiché col metodo
precedente si avrebbe una grande proliferazione di attributi multipli). La
nuova tabella includerà gli attributi propri della associazione e le chiavi
esterne che permettono i collegamenti con le due tabelle traduzione delle
entità che tramite essa sono associate. La chiave primaria della nuova tabella
è costituita dalla coppia primaria di chiavi esterne. Si spezza così
un'associazione m a n in due associazioni 1 a n.
Articoli
Torrone
F
A
T
T
U
R
A
01
Spumante
Gianduia
6
Panettone
Panforte
15
Cioccolata
5
02
5
03
Panepepato
Pandoro
5
5
120
04
10
05
10
06
20
07
30
50
20
20
20
15
11
08
6
12
09
10
Champagn
e
5
6
15
Figura 3.1. Esempio di matrice.
10
5
5
Una relazione molti a molti si presta ad essere rappresentata sotto forma
di matrice rettangolare. In questo caso si ha una matrice fra articoli e fatture. La matrice letta in verticale indica
in quale fattura è stato venduto l’articolo. Letta orizzontalmente indica quali articoli sono stati venduti in una
data fattura. Il numero nella casella può indicare la quantità venduta nella fattura. (Mcmicrocomputer).
3.4. Regole di integrità
Il modello relazionale prevede due regole generali di integrità. Queste sono
la integrità di entità e la integrità referenziale (o di riferimento).
122
Capitolo terzo
Lo schema logico secondo il modello relazionale
Integrità di entità. Se A è un attributo della relazione R e partecipa alla chiave
primaria, non può avere valori Null. Questo vuol dire che tutti gli attributi che
partecipano alla chiave primaria non possono essere definiti su di un dominio che
contempli valori Null.
Integrità di riferimento . Se nella relazione R la chiave primaria è rappresentata
dall’attributo ( o insieme di attributi) A, definito sul dominio D, allora in tutte le
relazioni Sj, in cui appare come attributo A, le tuples devono contenere un valore di
A definito sul dominio D oppure un valore Null. L’attributo A nelle relazioni Sj
prende il nome di chiave esterna4.
Per una chiave esterna va verificato se :
? Può assumere valori Null
? Cosa succede nella tabella collegata tramite chiave esterna se viene
cancellato o modificato un valore della chiave primaria della tabella
che ad essa si collega se questo valore è presente (nella tabella
collegata) in una sua occorrenza.
La possibilità che ha una chiave esterna di assumere valori Null dipende dai
tipi di Associazione. Se, ad esempio, l’associazione è quella fra Impiegato e
Reparto la chiave esterna corrispondente al reparto può assumere il valore
Null (un impiegato non è assegnato ad un reparto), mentre nella associazione
Fattura - Movimenti la chiave esterna corrispondente alla fattura non può
mai assumere il valore Null (un movimento non può esistere senza fattura).
Gli effetti dell’aggiornamento o della cancellazione di una chiave primaria,
presente come chiave esterna in altre tabelle, si possono ricondurre a tre casi :
Effetto cascata. Una cancellazione o un aggiornamento della chiave primaria
provoca una cancellazione o un aggiornamento delle occorrenze presenti
nelle tabelle collegate tramite chiave esterna.
Effetto restrizione.
La cancellazione o l’aggiornamento non devono essere
permessi se sono presenti occorrenze per il valore considerato nelle tabelle
collegate da chiave esterna.
4
Schiavetti :Database , Jackson 1989
123
Capitolo terzo
Lo schema logico secondo il modello relazionale
Effetto annullamento. La cancellazione o l’aggiornamento di un valore della
chiave primaria provoca un annullamento (Null) dei corrispondenti valori
presenti nelle chiavi secondarie delle tabelle collegate da chiave esterna.
Benché il modello relazionale tramite normalizzazione crea sia l’integrità di
entità sia l’ntegrità di riferimento spetterà al RDBMS (Relational DBMS)
mantenere l’integrità durante il procedimento di inserimento dei dati.
In questo i diversi Rdbms differiscono molto, applicando le tecniche più
disparate.
3.5. Operazioni relazionali
L’algebra relazionale, basata sulla teoria degli insiemi, offre una tecnica di
estrazione dei dati molto efficace in un database relazionale. Per rendere
possibile la manipolazione dei dati utilizza degli operatori che trasformano
una o più relazioni in una nuova relazione. Possono essere individuate due
categorie di operazioni :
1. operazioni insiemistiche, cioè si tratta di operazioni dell’algebra degli
insiemi applicate alla entità relazione. Le più diffuse in ambito relazionale
sono :
? unione
? intersezione
? prodotto (catesiano)
? differenza
2. operazioni relazionali, si tratta di operazioni che sono caratteristiche solo
dell’algebra relazionale
e non dell’algebra degli insiemi. Le operazioni
più diffuse sono :
? selezione
? proiezione
? congiunzione (combinazione)
? divisione
124
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.5.1. Operazioni insiemistiche
3.5.1.1. Unione
L’unione della relazione R1(A1) con la relazione R2(A2), indicata con R=R1?
R2 , è l’insieme di tutti i tuples (righe) senza alcuna ripetizione5.
R1
R2
A11 A12 A13
B11 B12 B13
C11 C12 C13
Figura 3.2. Relazione di unione
K11 K12 K13
K21 K22 K23
A11 R
B11
C11
K11
K21
A12
B12
C12
K12
K22
A13
B13
C13
K13
K23
Occorre, però, che vengano soddisfatte queste condizioni :
1. le due tabelle per essere unificabili devono essere compatibili6, cioè :
? devono avere egual grado ( stesso numero di colonne)
? la k-esima colonna delle tabella R1 deve essere definita sugli stessi
domini e quindi essere compatibile con la corrispondente colonna
della tabella R2 ( es. entrambe numeriche)
2. se esistono due righe uguali convenzionalmente ne viene indicata una
sola.
Come si vede questa definizione assomiglia molto a quella della unione di due insiemi. Per
cui , secondo quanto afferma Belski in Dati e basi di dati :“dati due insiemi I1 e I2, diciamo
l’unione I1?? I2 l’insieme costituito dagli elementi che appartengono ad almeno uno degli
insiemi assegnati”.
Valgono le proprietà :
? commutativa I1 ? I2= I2? ?I1 ? associativa I1? (I2?? I3)= (I1? I2) ? I3
? distributiva I1 ? (I2 ? I3)= (I1? I2)?? ( I1? I2)
5
“Due relazioni si dicono compatibili se sono dello stesso grado e definite sugli stessi
domini” .” L’unione di due relazioni compatibili è costituita da tutte quelle tuples che
appartengono ad almeno una delle due relazioni”, Nazzini, Sanges, Vaccaro, Introduzione
ai database relazionali.
Questa proprietà vale sia per l’unione ma anche per l’intersezione e la differenza.
125
6
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.5.1.2. Intersezione
L’intersezione della relazione R1(A1) e R2(A2), indicata con R=R1?? R2 , è
l’insieme di tutti i tuples o righe appartenenti sia ad R1(A1)che a R2(A2)7.
R1
A11
B11
C11
D11
R2
A12
B12
C12
D12
A13
B13
C13
D13
A11
C11
A11
C11
E11
A14
B14
C14
D14
A12
R
C12
A13
C13
A12
C12
E12
A13
C13
E13
A14
C14
E14
A14
C14
Figura 3.3. Relazione di intersezione
3.5.1.3. Prodotto cartesiano
Il prodotto cartesiano delle relazioni R1 e R2, rispettivamente di grado n e k
e di cardinalità m1 e m2 è la relazione indicata con R=R1 ? R2 , che ha grado
n+k e cardinalità m1 ?
m2
composta dalle tuple che si ottengono
concatenando ogni tuple di R1 con tutte le tuple di R28.
Per concatenare due tuples r1 (a1, a2,..., an) e r2 (b1, b2,..., bk) si costruisce
una tupla che ha gli attributi di entrambe :
r1 conc. r2= (a1, a2,..., an, b1, b2,..., bk).
“Dati due insiemi I1 e I2, diciamo intersezione I1 ? I2, l’insieme costituito dagli elementi
che appartengono sia ad I1 che ad I2” V. Belski, Dati e basi di dati : il modello relazionale,
FrancoAngeli.
8 “Dati due insiemi I1 e I2, diciamo prodotto cartesiano I1 ? I2, l’insieme costituito dalle
coppie ordinate (i1,i2) con i1 ? I1 e i2 ? I2. ” V. Belski, Dati e basi di dati : il modello
relazionale, FrancoAngeli.
Il prodotto cartesiano può essere considerato come la forma generica di concatenamento, in
cui ogni tuple di R1 viene concatenato con ogni tuple di R2. Il prodotto cartesiano è utile
nelle interrogazioni in cui è necessaria ogni possibile combinazione tra i tuples delle due
relazioni. Altre forme di concatenamento, dette concatenamento naturale sono
rappresentate dal join, in cui un tuple può essere escluso dalla relazione risultante se non
soddisferà le condizioni poste. Uno dei problemi dei concatenamenti naturali consiste nella
perdita di informazioni, dato che la relazione risultante non contiene tutti i tuples. I
concatenamenti che presentano questo tipo di rischio si dicono concatenamenti (naturali)
interni, mentre vengono chiamati concatenamenti (naturali) esterni quelli in cui la perdita
di informazioni è impossibile. Questi operano come i concatenamenti naturali interni, ma la
relazione risultante potrà includere anche i tuples senza corrispondenze : i valori mancanti
saranno sostituiti con valori nulli.- S. Misbah Deen Database, concetti teorici ed applicativi,
FrancoAngeli
126
7
Capitolo terzo
Lo schema logico secondo il modello relazionale
Si costruisce cioè con il prodotto cartesiano una tabella con lo schema
R(A1,A2,...,An, B1,B2,...,Bk) le cui tuples sono formate per primi n elementi
di una tupla di R1 e per i restanti k elementi da una tuple di R29.
R1
R2
Riga R1-1
Riga R1-2
Riga R1-3
................
................
Riga R1-n
Riga R2-1
Riga R2-2
................
Riga R1-k
R
Riga R1-1
Riga R1-1
Riga R1-1
Riga R1-1
Riga R1-2
Riga R1-2
Riga R1-2
Riga R1-2
Riga R1-3
Riga R1-3
Riga R1-3
Riga R1-3
...............
Riga R1-n
Riga R1-n
Riga R1-n
Riga R1-n
Riga R2-1
Riga R2-2
................
Riga R1-k
Riga R2-1
Riga R2-2
................
Riga R1-k
Riga R2-1
Riga R2-2
................
Riga R1-k
................
Riga R2-1
Riga R2-2
................
Riga R1-k
Figura 3.4. Relazione prodotto cartesiano
3.5.1.4. Differenza
La differenza tra relazione R1 e R2, indicata con R=R1 \ R2 (R=R1- R2) , è
l’insieme di tutti i tuples o righe appartenenti ad R1 ma non a R210.
R1
A11
B11
C11
D11
R2
A12
B12
C12
D12
A13
B13
C13
D13
A14
B14
C14
D14
A11
C11
E11
A12
C12
E12
R
A13
C13
E13
A14
C14
E14
B11
D11
B12
D12
B13
D13
B14
D14
Figura 3.5. Relazione differenza
“Il prodotto cartesiano di due relazioni è la relazione che si ottiene concatenando ciascuna
tuple della R1 con tutte le tuples della R2”. Nazzini, Sanges, Vaccaro, Introduzione ai
database relazionali
? Il grado del prodotto cartesiano è la somma dei gradi di R1 ed R2
? La cardinalità del prodotto cartesiano è il prodotto della cardinalità di R1 ed R2
10 “Dati due insiemi I1 e I2, diciamo differenza I1 \ I2, l’
insieme costituito dagli elementi che
appartengono ad I1 che non appartengono a I2” V. Belski, Dati e basi di dati : Il modello
relazionale, FrancoAngeli.
127
9
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.5.2. Operazioni dell’algebra relazionale
3.5.2.1. Selezione
Data relazione R1 ed un predicato P semplice o composto, che opera sugli attributi
di R1, la selezione di R1 su P è una relazione R le cui tuples sono tutte le tuples di
R1 che soddisfano P11.
R1
A11
B11
C11
D11
R
A12
B12
C12
D12
A13
B13
C13
D13
A14
B14
C14
D14
A11
C11
A12
C12
A13
C13
A14
C14
Figura 3.6 Selezione di R1 su P
Un predicato è una condizione imposta sui valori di uno o più attributi e può
essere semplice oppure composto. E’semplice quando esprime una relazione
del tipo :
[attributo] [operatore di confronto] [attributo]
Gli operatori di confronto sono rappresentati da : =, # (diverso), <, >, <=, >=.
E’ composto se è costituito da due o più predicati collegati fra loro tramite
operatori booleani AND, OR, NOT. L’operazione di selezione sceglie i tuples
di una relazione in cui il predicato risulta essere vero, mentre le colonne
restano le stesse. Ci si può chiedere quando un predicato composto da più
predicati è vero e quindi quando verranno prelevate delle tuples. Per questo
possono essere riportate le tavole di verità di Boole .
L’operatore di selezione è un filtro che sceglie alcune righe, quelle che soddisfano una
certa condizione :
Select R where p. L’operatore di selezione crea una nuova relazione che è un sottoinsieme
della relazione orginaria detto sottoinsieme orizzontale . Le righe scelte sono quelle risulta
vera la proposizione p - Nazzini, Sanges, Vaccaro, Introduzione ai database relazionali.
128
11
Capitolo terzo
P1
v
v
v
f
f
f
null
null
null
P2
v
f
null
v
f
null
v
f
null
Lo schema logico secondo il modello relazionale
P1 OR P2
P1 AND P2
(P1+P2)
(P1*P2)
v
v
v
v
f
null
v
null
null
P
V
f
null
v
f
null
f
f
f
null
f
null
NOT P
f
v
null
Figura 3.7. Tavole di verità degli operatori booleani
3.5.2.2. Proiezione
Data una relazione R1 di grado n ed un sottoinsieme B di k suoi attributi, (k<n) la
proiezione di R su B è la relazione R di grado k che si ottiene da R1 ignorando le
colonne degli attributi non presenti in B ed escludendo le eventuali tuple duplicate12.
Sono tuple duplicate quelle che hanno chiavi uguali.13 La relazione R ha la
stessa cardinalità della relazione R1. L’operazione di proiezione si indica con
la notazione :
B(R)
R1
A11
B11
C11
D11
B
A12
B12
C12
D12
A13
B13
C13
D13
A14
B14
C14
D14
R
A11
B11
C11
D11
A13
B13
C13
D13
Figura 3.8. Proiezione di R su B
V. Belski Dati e base di dati : il modello relazionale, FrancoAngeli
L’operatore di proiezione è un filtro che sceglie alcune colonne (quelle indicate
nell’operazione a mezzo di una lista di attributi ) con eliminazione di eventuali righe
duplicate - Codd “Relational completeness of data base sublanguages”
13 In seguito alle operazioni relazionali dovremmo eliminare i tuples duplicati (non
consentiti) dalla relazione risultante. Per questo viene impiegata la proiezione - S. Misbah
Deen Database, Concetti teorici ed applicativi, FrancoAngeli.
129
12
Capitolo terzo
Lo schema logico secondo il modello relazionale
Spesso i due operatori relazionali di selezione e proiezione sono applicati
insieme alla stessa relazione R1 per cui il risultato che si otterrà sarà quello di
avere una relazione R, risultato delle operazioni selezione e proiezione in cui
le tuple, cioè le righe,
costituiscono un sottoinsieme delle tuples della
relazione R1 e gli attributi, cioè le colone, costituiscono un sottoinsieme degli
attributi di R1. La sequenza logica delle due operazioni prevede l’esecuzione
dell’operazione di selezione e successivamente quella di proiezione.
3.5.2.3. Combinazione (giunzione, join)
Date due relazioni R1 ed R2 ed un predicato semplice P( >,<,<=, ecc.) che lega uno
degli attributi di R1 con uno degli attributi di R2 con uno degli operatori booleani,
la combinazione fra R1 ed R2 su P è la relazione R composta da tutte le tuple del
prodotto cartesiano R1 X R2 che soddisfano P14.
La join produce una nuova relazione mediante il procedimento seguente :
1. viene effettuato un prodotto cartesiano fra le due relazioni.
2. sulla relazione così creata viene effettuata una operazione di selezione
delle tuple in cui risulta vera la condizione posta dal predicato
3. vengono ridenominati gli attributi comuni con uno stesso nome, in modo
tale che compaiono una sola volta.
Se l’operatore di confronto è l’operatore di eguaglianza =, si parla allora di
giunzione naturale
Join Naturale
Date due relazioni R1 (di grado n) ed R2 (di grado k) nelle quali uno degli attributi
di R1 coincide con uno degli attributi di R2, Il join naturale è la relazione r di
grado (n+k-1)che contiene tutte le tuple ottenute concatenando le tuple di r1 e di r2
che presentano valori identici per l’attributo comune15.
Il join naturale determina una relazione tramite il seguente procedimento :
1. viene effettuato un prodotto cartesiano fra le due relazioni.
14”V.
15
Belski Dati e base di dati : il modello relazionale, FrancoAngeli
V. Belski Dati e base di dati : il modello relazionale, FrancoAngeli
130
Capitolo terzo
Lo schema logico secondo il modello relazionale
2. sulla relazione così creata viene effettuata una operazione di selezione
delle tuple in cui risulta vera la condizione posta dal predicato, e cioè che
gli attributi sottoposti all’operatore di confronto siano uguali. Se questa
condizione non si verifica per nessun attributo allora l’operazione di
giunzione si riduce a quella di un prodotto cartesiano.
3. vengono ridenominati gli attributi comuni con uno stesso nome, in modo
tale che compaiono una sola volta.
3.5.2.4. Divisione
Data una relazione R1 (dividendo) di grado n e la relazione R2 (divisore) di grado k
(k<n), in cui tutti gli attributi di R2 sono anche gli attributi di R1, la divisione di R1
con R2, che si indica conR=R1/R2, è la relazione R le cui colonne sono tutte colonne
di R1 che non compaiono in R2 e le cui tuple sono costituite da tutte le tuple che,
concatenate con tutte le tuple di R2, danno luogo a tuple tutte presenti nella
relazione R116.
Si può pensare a R X R2 come ad un prodotto cartesiano sottoinsieme di R1,
per cui tutte le tuple di questo prodotto cartesiano appartengono a R1 ma R1
ha altre tuple.
R1
A11
A11
A11
M11
N11
R2
B11
B12
B13
B11
B12
B11
B13
R
A11
Figura 3.9. Operazione di divisione
16
V. Belski Dati e base di dati : il modello relazionale, FrancoAngeli
131
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.5.3. Esempi
Presidenti
Nome
Eisenhower
Kennedy
Johnson
Nixon
Partito
Repubblicano
Democratico
Democratico
Repubblicano
Stato
Texas
Mass.
Texas
California
1. Selezione
R1 = (select Presidenti where stato = “Texas”)
R1
Nome
Johnson
Eisenhower
Partito
Stato
Democratico Texas
Repubblicano Texas
R2 = (select Presidenti where Partito = “Repubblicano”)
R2
Nome
Eisenhower
Nixon
2. Proiezione
Partito
Stato
Repubblicano Texas
Repubblicano California
R3 = (project Presidenti over Stato, Nome)
R3
Nome
Eisenhower
Kennedy
Johnson
Nixon
Stato
Texas
Mass.
Texas
California
3. Unione
R4= R1? R2
R4
Nome
Eisenhower
Johnson
Nixon
Partito
Repubblicano
Democratico
Repubblicano
Stato
Texas
Texas
California
132
Capitolo terzo
Lo schema logico secondo il modello relazionale
4. Intersezione
R5 = R1? R1
R5
Nome
Eisenhower
Partito
Stato
Repubblicano Texas
5. Differenza
R6 = R1-R2
R6
Nome
Johnson
Partito
Democratico
Stato
Texas
6. Prodotto cartesiano
Studenti
Corsi
Studenti X Corsi
Num. Stud.
1
1
1
2
2
2
3
3
3
N.ro Studente
1
2
3
Cod. corso
A
B
C
Nome
Paolo
Paolo
Paolo
Claudio
Claudio
Claudio
Nicola
Nicola
Nicola
Nome
Paolo
Claudio
Nicola
Descrizione
Economia
Prog e Contr.
Diritto trib.
Cod. corso
A
B
C
A
B
C
A
B
C
Descrizione
Economia
Prog e Contr.
Diritto trib.
Economia
Prog e Contr.
Diritto trib.
Economia
Prog e Contr.
Diritto trib.
133
Capitolo terzo
Lo schema logico secondo il modello relazionale
7. Join (naturale)
Corsi
Cod. corso
A
B
C
Descrizione
Economia
Prog e Contr.
Diritto trib.
Durata Corsi
Cod. corso
A
B
C
Durata
4
3
5
? R7 = corsi join p durata corsi
? p = (Corsi. cod. corso = Curata corsi. cod. corso)
? R7 = corsi. cod. corso = cod. corso. durata corsi
Corsi X
Durata Corsi
Descrizione
Economia
Economia
Economia
Prog e Contr.
Prog e Contr.
Prog e Contr.
Diritto trib.
Diritto trib.
Diritto trib.
Cod. corso
Durata
A
A
A
B
B
B
C
C
C
Cod. corso
4
3
5
4
3
5
4
3
5
A
B
C
A
B
C
A
B
C
Prodotto cartesiano Corsi X Durata corsi
R7
Descrizione
Economia
Prog e Contr.
Diritto trib.
Cod. corso
A
B
C
Durata
4
3
5
Cod. corso
A
B
C
Selezione Corsi. Cod. corsi = Durata corsi. Cod. corsi
Dopo una operazione di proiezione per eliminare la colonna corso, avremo :
R7
Cod. corso
A
B
C
Durata
4
3
5
Descrizione
Economia
Prog e Contr.
Diritto trib.
134
Capitolo terzo
Lo schema logico secondo il modello relazionale
8. Divisione
Fornitori
Cod. For.
F1
F1
F1
F2
F2
F3
F3
F4
F4
F4
F4
Art.
A1
A2
A3
A1
A3
A2
A1
A1
A2
A3
A4
Rich. Acquisto Art
A1
A2
A3
Quali sono i fornitori in grado di soddisfare la richiesta di acquisto ?
Fornitori :Rich. Acq. Cod. For.
F1
F4
3.6. Normalizzazione
Lo schema, definito dalla progettazione concettuale, deve essere tradotto
attraverso il modello relazionale in uno “schema migliore”, cioè in uno
schema depurato di gran parte delle anomalie di gestione che si possono
verificare. La teoria delle basi di dati relazionali affronta questo tipo di
problemi con l’obiettivo di (Albano) :
? definire quando due schemi sono equivalenti
? definire i criteri di bontà degli schemi (che cosa vuol dire uno schema
migliore di un altro)
? trovare metodi formalizzati per ottenere da uno schema un altro migliore
ed equivalente.
135
Capitolo terzo
Lo schema logico secondo il modello relazionale
Nel primo caso si tradurrà gli schemi ottenuti ad esempio con il modello E\R
in tabelle17, mentre i problemi successivi hanno portato alla elaborazione
della teoria della normalizzazione, con la definizione di forme normali per
schemi di relazione che eliminino il più possibile i problemi di ridondanza e
le altre anomalie.
La normalizzazione è, quindi, un insieme di criteri di progettazione di un database
relazionale, diretti a prevenire l’insorgere sia di anomalie nella rappresentazione dei
dati (inconsistenza dei dati) sia situazioni non volute. Il principio della
normalizzazione, come afferma Codd, è che la base dei dati deve essere
progettata sulla base sella semantica dei dati ed in particolare seguendo
questo principio guida :
Ogni fatto deve essere rappresentato una, ed una sola volta, e nel
luogo appropriato
e cioè :
? in una relazione deve essere descritto un unico fatto
? un fatto deve essere memorizzato una sola volta.
Si consideri questa relazione :
Perdenti alle
elezioni
presidenziali
Anno Nome
Voti
Part
ito
1956
1960
1972
1964
1968
1952
1968
73
219
17
52
191
89
46
dem
rep
dem
rep
dem
dem
ind
Stevenson
Nixon
McGovern
Goldwoter
Humphrey
Stevenson
Wallace
In questa relazione non viene rappresentato un unico fatto ma bensì sono
distinguibili due fatti :
1. sono indicati i candidati perdenti alle elezioni USA
2. sono indicate alcune caratteristiche di tali uomini politici (il partito)
che sono indipendenti dall’esito delle elezioni.
Questa situazione crea alcuni problemi :
Albano afferma che questo problema va sotto il nome di problema della rappresentazione,
ovvero quando e in che misura uno schema rappresenta un altro.
136
17
Capitolo terzo Lo schema logico secondo il modello relazionale
? Anomalie nella eliminazione. Se si cancella la riga relativa al 1960 si perdono
anche le informazioni relative al partito di Nixon, il che potrebbe essere al
di là dello scopo della cancellazione.
? Anomalie di modifica. Poiché Stevenson appare più volte, se modifico il
partito di Stevenson lo dovrò fare in tutte le tuples in cui compare
Stevenson.
? Anomalie di inserimento. Non si può inserire il partito di Ford senza
conoscere l’anno in cui ha perso le elezioni. Questo perché nella relazione
non è rappresentato un unico fatto.
Verranno individuati 5 livelli di normalizzazione (6 se si considera la BCNF
come un livello a se) di cui Cood ne ha elaborati tre mentre gli altri sono stati
elaborati da altri studiosi.
3.6.1. Prima forma normale (1 NF )
Una relazione è in 1NF se, e solo se, tutti i domini sui quali è definita contengono
solo valori atomici, cioè nessuno degli elementi dei domini è esso stesso un insieme
una lista o una relazione18.
Gli attributi di una entità possono essere di vario tipo : semplici, composti,
multipli. I RDBMS impongono che tutti gli attributi siano semplici e non
multipli, mentre in un record descritto da un programma Cobol questo
poteva accadere. La 1 NF elimina i dati ripetitivi consentendo così di
rappresentare le relazioni come “tabelle a due dimensioni” con dati
omogenei sulle colonne.
Quindi, le relazioni in prima forma normale presentano queste proprietà :
? Ogni elemento è atomico
? le colonne sono tutte omogenee
? tutte le righe sono distinte ? l’ordine delle righe non è significativo
? l’ordine delle colonne non è significativo
18
E.F. Codd, : Recent Investigations in relational Data Base system
137
Capitolo terzo
Lo schema logico secondo il modello relazionale
Esempio : Tabella delle competizioni elettorali americane
Non in forma normale
Elezioni
Anno
Vincitore
Partito
vincitore
Perdente
1960
1956
Democratico
Repubblican
o
Nixon
Stevenson
1972
Kennedy
Eisenhowe
r
Nixon
McGowern
1964
1968
Johnson
Nixon
1992
Clinton
Repubblican
o
Democratico
Repubblican
o
Democratico
Goldwoter
Humphey, Wallace
Bush, Perrot
Prima forma normale (1NF)
Elezioni
Ann
o
1960
1956
1972
1964
1968
1968
1992
1992
Vincitore
Partito
vincitore
Perdente
Kennedy
Eisenhower
Nixon
Johnson
Nixon
Nixon
Clinton
Clinton
Democratico
Repubblicano
Repubblicano
Democratico
Repubblicano
Repubblicano
Democratico
Democratico
Nixon
Stevenson
McGowern
Goldwoter
Humphey
Wallace
Bush,
Perrot
Una relazione in prima forma normale può, però, causare dei problemi19. Il
primo fra questi una ridondanza dei dati dovuto ad un aumento delle tuple.
Inoltre, può capitare che, dopo aver portato una relazione in prima forma
normale questa subisca delle modifiche tali per cui la chiave primaria scelta
prima della trasformazione in 1 NF non sia più sufficiente ad identificare una
tupla per cui occorrerà modificare la chiave20.
Atzeni in “La teoria relazionale dei dati” distingue i seguenti problemi o anomalie :
Anomalie di inserimento di nuove tuples : non posso inserire informazioni sulla
competizione elettorale avvenuta in un certo anno se non conosco il nome dello sfidante
che costituisce insieme all’anno la nuova chiave.
? Anomalie di cancellazione delle tuples esistenti :l’eliminazione di una tupla relativa alla
competizione elettorale mi fa perdere informazioni che non posso più ricavare
? Anomalie di aggiornamento delle tuples esistenti : se c’è stato per assurdo un errore su
Nixon, e cioè Questi non era repubblicano ma democratico, allora dovrò riaggiornare
tutte le tuple in cui compare Nixon.
20 In alcuni casi le trasformazioni possono essere tali da far modificare il nome stesso della
tabella. Si prenda l’esempio proposto dal Belski : si ha una tabella cliente non in forma
normale e per renderla in forma normale occorre eliminare gli attributi multipli.
19
?
138
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.6.2. Dipendenza funzionale
Siano dati due attributi A e B ( o combinazioni di attributi) in una relazione R. Si
dice che B è funzionalmente dipendente da A in R (ovvero che A determina B in R) :
A? B
se, e solo se, in ogni istante di tempo ciascun valore di A è associato con uno, ed uno
solo, valore di B in R21. A verrà indicato come attributo determinante e B come
attributo dipendente.
Quindi, data una relazione R si può determinare una dipendenza funzionale
fra due sottoinsiemi di attributi A e B, per cui se lo stesso valore di A
Cod­
cli
337
568
745
874
Ragione-cli
Via-cli
città-cli
ordini-cli
Bianchi spa
Rossi srl
Verdi spa
gialli sas
Verdi 10
Dante 2
Po 13
Levi 7
Bologna
Milano
Torino
Napoli
137,425,821
76
347,450
Si costruisce una tabella in cui tutti gli attributi sono semplici e ogni riga contenga un solo
numero d’ordine :
Cod­
cli
337
337
337
568
874
874
Ragione-cli
Via-cli
città-cli
ordini-cli
Bianchi spa
Bianchi spa
Bianchi spa
Rossi srl
Gialli sas
Gialli sas
Verdi 10
Verdi 10
Verdi 10
Dante 2
Levi 7
Levi 7
Bologna
Bologna
Bologna
Milano
Napoli
Napoli
137
425
821
76
347
450
Si può vedere come il codice clienti non sia più sufficiente ad identificare una singola tupla,
per cui occorre cambiare la chiave primaria :la chiave comprenderà due i campi il codice
cliente ed il numero d’ordine. La scelta della chiave opera una “trasformazione” della tabella
da cliente a ordine. Infatti la tabella contiene una tupla per ogni ordine e non per ogni cliente
e che la tabella non contiene più i clienti che non hanno ordini in essere (Verdi spa) perché la
chiave non può avere valori nulli. In base a queste trasformazioni si potrebbe rinominare la
tabella in questione in tabella ordine-cliente. Questa tabella in prima forma normale contiene,
tuttavia, delle gravi anomalie :
? ridondanza di alcuni dati del cliente, ripetuti tante volte quanti sono gli ordini in
essere
? eliminazione dei dati anagrafici dei clienti che non hanno ordini e quindi
impossibilità di reperirli quando non vi siano ordini in corso.
La causa di questi inconvenienti deriva da una non attenta analisi nell’ambito della
progettazione concettuale, in cui, evidentemente, non sono state distinte bene le due entità
ordini e clienti.
21 Nazzini, Sanges, Vaccaro :Introduzione ai Data Base relazionali
139
Capitolo terzo Lo schema logico secondo il modello relazionale
compare in diverse tuples di R allora vuol dire che in queste tuples dovrà
comparire lo stesso valore di B. Definita la chiave primaria della relazione R
che identifica univocamente le tuples, avremo che tutti gli attributi della
tabella dipenderanno da essa22. Occorre, poi, fare una distinzione fra
dipendenze parziali e dipendenze complete. Verificato che un sottoinsieme
B dipende funzionalmente da A , bisogna verificare se esiste una dipendenza
funzionale da un sottoinsieme degli attributi di A. Se questo si verifica, allora
si ha dipendenza parziale, perché B dipende solo da una parte dagli attributi
di A, in caso contrario si ha una dipendenza completa.
E’ logico che se A è costituito da un solo attributo allora non ci sarà che
dipendenza completa.
La conoscenza delle dipendenze funzionali nelle relazioni è un elemento
fondamentale per un migliore raggruppamento dei dati secondo il modello
relazionale. I dati che vengono raccolti e organizzati per rappresentare la
realtà di interesse presentano queste dipendenze funzionali che possono
essere dovute sia dalla loro natura sia alla proprietà dei loro domini e, ciò
che è importante per la costruzione di un efficiente schema logico
relazionale, sono indipendenti dalle tecniche utilizzate per raccoglierli,
classificarli, raggrupparli. Poiché le dipendenze sono oggettive e legate al
tipo di dato, è essenziale conoscerle ed utilizzarle per realizzare un miglior
raggruppamento possibile dei dati. Si potrebbe cercare di minimizzare
queste dipendenze già dalla fase della progettazione concettuale, però,
l’intreccio delle dipendenze fra i dati può rendere difficile ripartire gli
attributi nelle varie tabelle facendo sorgere nello schema concettuale diverse
anomalie nella gestione dello schema stesso. E’ questo, in pratica, lo scopo
22
Nazzini, Sanges, Vaccaro in Introduzione ai Data Base relazionali affermano :
1. Ciascun attributo di R è funzionalmente dipendente da ciascuna chiave candidata di
R.
2. Gli attributi di R che costituiscono una chiave candidata K sono un insieme a
massima dipendenza funzionale, cioè :
? tutti i sottoinsiemi di K sono funzionalmente indipendenti l’uno rispetto
all’altro
140
Capitolo terzo
Lo schema logico secondo il modello relazionale
della normalizzazione introdotta da Codd, cioè quello di eliminare tutte
queste ridondanze ed anomalie dei dati per una corretta gestione dello
schema.
Un modo per gestire meglio lo schema, individuato da Codd, è quello di
scomporre la tabella preservando sia le informazioni sui dati che i vincoli di
integrità dei dati. Condizione essenziale perché tutto ciò sia rispettato è che
venga soddisfatto il seguente teorema :
Uno schema R(A), per il quale esiste l’insieme D di dipendenze, è scomposto nei due
schemi R1(A1) e R2(A2) preservando il contenuto, quando :
A1? A2? A1 oppure A1? A2? A2
ovvero quando gli attributi comuni (presenti sia in A1 che in A2) sono chiave
di uno dei due sistemi23.
Se questo avviene (ad esempio se gli attributi sono chiave di A2) si può
ricostruire R(A) attraverso delle giunzioni naturali sulle R1(A) perché gli
attributi che mancano in R1 (A) sono direttamente implicati da quelli
comuni. Per questo motivo, non si perdono informazioni ne si acquisiscono
di spurie (concetto di scomposizione senza perdite)24. Ad esempio si prenda
la tabella indirizzo :
R (cap, città, via)
R1(cap, città) R2(via, cap) ?
nessun attributo di R può essere aggiunto a K senza distruggere questa
dipendenza funzionale.
23 Nella letteratura si trovano sostanzialmente due tipi di equivalenza tra schemi in presenza
di scomposizione. Si parla di decomposizione che preserva il contenuto e decomposizione
che preserva le dipendenze. La decomposizione di uno schema di relazione R che preserva
l’informazione sui dati si ha se per ogni relazione R le sue proiezioni sugli attributi Ai sono tali che
da esse si può riottenere esattamente R con l’unica operazione possibile :la giunzione naturale. Una
decomposizione preserva le dipendenze quando decomponendo non si perdono i vincoli di
integrità. Albano, Orsini : Basi di dati.
24 La ricostruzione della originaria relazione R, può avere come risultato la comparsa, nella
relazione ricostruita, di alcune tuples “spurie”, cioè non presenti originariamente in R ; e non
c’è alcun modo di distinguere le tuples “spurie” dalle tuples genuine. Solo in questo senso si
parla di scomposizione con perdite, perché in realtà la relazione originaria è un sottoinsieme
di quella ricostruita (contiene infatti le tuples “genuine” e quelle “spurie”). Comunque sia
una operazione di giunzione naturale non può produrre niente che non sia almeno R.
141
Capitolo terzo
Lo schema logico secondo il modello relazionale
Il cap è l’attributo comune ed è chiave della tabella R2. Indicato il cap, la città
risulta univocamente determinata. Eseguendo la giunzione delle due tabelle
si ottiene la tabella originaria.
Fra gli attributi di uno schema , quindi, esistono delle dipendenze funzionali.
Alcune di queste dipendenze sono ovvie e non vengono normalmente
menzionate, come quelle che riguardano un gruppo d'attributi che è
sottoinsieme di un altro gruppo di attributi. E’importante elencare l’insieme
delle dipendenze per non perderle in seguito nella scomposizione. Per
conservare queste dipendenze occorre non portare in schemi separati gli
attributi che hanno relazioni di dipendenza fra di loro. Comunque non
bisogna scartare qualche volta la possibilità di spezzare delle dipendenze,
perché i vantaggi che ciò potrebbe portare può superare gli svantaggi
prodotti.
3.6.3. Seconda forma normale (2 NF)
Una relazione R è in seconda forma normale (2 NF) se è in prima forma normale ed
ogni attributo non primo di R dipende funzionalmente e completamente da ogni
chiave di R25.
Tutti gli attributi che non fanno parte della chiave (se questa è l’unica)
devono dipendere dalla chiave tutta intera. Si effettuerà una scomposizione
della tabella in 2NF solo se ci sono attributi che dipendono solo da una parte
della chiave. E’ logico che se la chiave è formata solo da un attributo la
dipendenza non potrà che essere completa e quindi non si procederà con la
scomposizione. Se le chiavi possibili sono più di una (abbiamo più chiavi
candidate) la condizione deve valere per ogni chiave.
Si procederà, quindi, alla scomposizione di uno schema seguendo una
procedura di questo genere26 :
Si parla pertanto di scomposizione senza perdite quando è garantito che l’operazione di
giunzione naturale sulle proiezioni di R riproduce esattamente R, senza che compaiano
tuples “spurie”. Nazzini,, Sanges, Vaccaro :Introduzione ai Data Base Relazionali.
25 Atzeni, Batini, De Antonellis : Introduzione alla teoria relazionale, Masson
26 Questa procediìura è proposta da Belski :Dati e basi di dati :il modello relazionale.
142
Capitolo terzo
Lo schema logico secondo il modello relazionale
Si prende in considerazione uno schema R(A) in 1NF, ma non in 2NF, per
ogni dipendenza funzionale parziale X? Y in cui X rappresenta una chiave
di R e Y è un insieme di attributi non primi, si deve :
? individuare il sottoinsieme Z degli attributi della chiave X da cui Y
dipende in modo completo ;
? costruire un nuovo schema che contenga Z come chiave di tutti gli
attributi Y ;
? cancellare dallo schema iniziale tutti gli attributi Y che sono stati
“trasferiti” sul nuovo schema. Si ripete la serie di operazioni,
costruendo più tabelle, fino a quando non si sono esaurite le
dipendenze funzionali parziali che erano presenti nella relazione R.
L’insieme delle tabelle così ottenute è in 2NF ed è stata mantenuta
l’integrità delle dipendenze e del contenuto.
Si prenda ad esempio la tabella ordine cliente che si trova in 1NF :
Ordine cliente (codice cliente, nr. ordine cliente, rag-cli, città cli, via cli,)
� la chiave X è rappresentata da (codice cliente, nr. ordine cliente).
� l’insieme Y è (rag-cli, città cli, via cli)
� Esiste un certo numero di attributi che sono dipendenti solo dal cod.
cliente che sarà il nostro Z
Si può attuare una scomposizione che dia luogo ad una relazione che
contenga tutti gli attributi che sono dipendenti solo da Z cancellando gli
stessi attributi dalla relazione originaria.
cliente (codice cliente, rag-cli, città cli, via cli)
Ordine cliente (codice cliente, nr. ordine cliente)
La chiave della relazione cliente è composta da un solo attributo quindi la
dipendenza è completa, mentre la chiave della tabella ordini, composta da 2
attributi, non ha più attributi primi. Le due relazioni derivanti dalla
scomposizione sono in 2NF, di conseguenza il procedimento si ferma. Si
fossero create relazioni con dipendenze parziali si sarebbe dovuto procedere
nuovamente ad una ulteriore scomposizione.
143
Capitolo terzo
Lo schema logico secondo il modello relazionale
Cod­ Ragione-cli Via-cli
città-cli
ordini-cli
cli
337
Bianchi spa Verdi 10
Bologna
137
337
Bianchi spa Verdi 10
Bologna
425
337
Bianchi spa Verdi 10
Bologna
821
568
Rossi srl
Dante 2
Milano
76
874
Gialli sas
Levi 7
Napoli
347
874
Gialli sas
Levi 7
Napoli
450
Relazione Ordine clienti
Cod-cli Ragione-cli
Via-cli
337
Bianchi spa
Verdi 10 Bologna
568
Rossi srl
Dante 2
Milano
874
Gialli sas
Levi 7
Napoli
Relazione Cliente
città-cli
Cod-cli
337
337
337
568
874
874
ordini-cli
137
425
821
76
347
450
Relazione Ordine cliente
3.6.4. Terza forma normale (3 NF)
Una relazione R è in terza forma normale (3NF) se è in 2NF ed ogni attributo non
primo di R è dipendente in modo non transitivo da ogni chiave di R27.
La terza forma normale prevede che ogni attributo non primo dipenda solo
dalle chiavi e non anche da altri attributi non primi, quindi ogni attributo non
primo deve dipendere dalle chiavi e solo dalle chiavi28. In effetti può capitare che
27
28
Atzeni, Batini, De Antonellis :La teoria relazionale dei dati, Boringhieri
Belski :Dati e basi di dati :la teoria relazionale, FrancoAngeli
144
Capitolo terzo Lo schema logico secondo il modello relazionale
una relazione sia in 2NF e che ci sia un attributo che non dipenda
direttamente dalla chiave, ma transitivamente attraverso un altro attributo.
La 3NF, che si basa quindi sulla eliminazione delle dipendenze transitive, è
stata introdotta per eliminare alcune anomalie di cancellazione, modifica e
inserimento. Si può, per questo, considerare un esempio proposto da Atzeni
ed Altri in “La teoria relazionale dei dati” . Si consideri lo schema di
relazione collocazione - genere relativo ad uno zoo.
Collocazione - genere (NomeComune, Casa, Addetto, Area, Responsabile)
NomeComune
Giraffa
Leone
Orso
Zebra
Elefante
Area
Est
sud
Est
Ovest
Ovest
Casa
Recinto
Tana
Grotta
Steccato
Rustico
Addetto
Bini
Mori
Dea
Lella
Seri
Responsabile
Rossi
Verdi
Rossi
Bianchi
Bianchi
Lo schema è in 2NF poiché la sua chiave consiste di un solo attributo e
quindi gli attributi non primi dipendono completamente da essa. Si possono
identificare tre tipi di anomalie :
? Anomalie di inserimento di nuove tuples :se si vuole inserire
l’informazione che una casa è gestita da un particolare addetto non
lo si può fare se non si conosce il genere animali destinato in quella
casa, poiché il nome comune costituisce la chiave dello schema.
? Anomalie di cancellazione delle tuples :se un genere di animali si
estingue nello zoo, viene ad estinguersi anche la relazione esistente
fra la casa che era destinata a contenere quel genere di animali e
l’area in cui quella casa è dislocata
? Anomalie di modifica delle tuples : se cambia il responsabile di
una certa area si dovrà modificare tutte le tuples che fanno
riferimento a tale area.
Per trasportare una relazione in 3NF Belski propone un procedimento che
assicura la conservazione di contenuti e dipendenze. Si ha uno schema R(A)
145
Capitolo terzo
Lo schema logico secondo il modello relazionale
con chiave X e un insieme di attributi non primi Y che determina
funzionalmente un insieme di attributi Z, si deve :
1. creare una tabella con chiave Y contenente gli attributi Z
2. rimuovere dalla tabella gli attributi Z dalla tabella originaria.
3. Si deve ripetere la procedura di scomposizione fino a quando non
siano state rimosse tutte le dipendenze transitive.
Torniamo all’esempio :
X = Nomecomune
Y = Casa
Z = Area, Addetto, Responsabile
Nell’esempio l’attributo Casa è l’unico che dipenda direttamente dalla
chiave, mentre con Area, Addetto e responsabile c’è una dipendenza
transitiva. Per cui :
Collocazione genere (NomeComune , Casa)
Informazioni sulla casa (Casa, Area, Addetto, Responsabile)
Occorre vedere a questo punto se la relazione Informazioni sulla casa è
in 3NF. Se gli attributi Area e Addetto dipendono in maniera diretta
da Casa, lo stesso non si può dire di Responsabile il quale dipende
transitivamente da Casa attraverso Area.
X = Casa
Y = Area
Z = Responsabile
Collocazione genere (NomeComune , Casa)
Informazioni sulla casa (Casa, Area, Addetto)
Informazioni sull’Area (Area, Responsabile)
Adesso tutte e tre le relazioni sono in 3NF.
146
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.6.5. Determinante
Un determinante è un attributo o un insieme di attributi non ridondanti in grado di
agire come identificatori univoci di un altro attributo ( o di un altro insieme di
attributi) appartenente ad una determinata relazione29. Si dirà :
A? B
e cioè che A determina B (o A è un determinante di B) oppure B presenta una
dipendenza funzionale totale da A. Abbiamo quindi la dipendenza di un
attributo o di un gruppo di attributi da un altro attributo o gruppo di
attributi. Questa dipendenza viene detta funzionale poiché in funzione del
determinante si stabiliscono gli altri attributi. Determinanti lo sono tutte le
chiavi candidate che sono composte di tutti gli attributi primi. Determinanti
possono essere anche attributi primi che fanno parte di una chiave candidata
ma non la comprendono interamente, per cui si creano casi di dipendenza
parziale, risolti con il passaggio alla 2NF. Oppure, un attributo non primo
può essere dipendente da un attributo non primo ( quindi, questo
determinante è un attributo non primo) il quale è interamente dipendente
dalle chiavi candidate della relazione, per cui si verrà a creare un caso di
dipendenza transitiva risolto dalla 3NF30. Un altro caso si ha quando una
relazione ha più chiavi candidate . Queste sono composte ed hanno degli
attributi in comune legati fra loro da dipendenza funzionale. Avremo,
quindi, un determinante che sarà un attributo o un gruppo di attributi primi
di una chiave (che però non contiene la chiave) che sarà legato ad un
attributo o ad un gruppo di attributi primi di un’altra chiave che non la
contiene (o contengono).
Misbah Deen : Database : concetti teorici e pratici, FrancoAngeli
In base alla definizione di determinante, Misbah Deen propone per la 3NF una definizione
elaborata da Sharman :
Una relazione è in 3NF se ogni determinante è chiane esterna. In base a questa definizione la 3NF
è indipendente dalla 2NF, per cui non sarà più necessario che una relazione si trovi in 2NF
per poi passare alla 3NF. Basterà solo identificare i determinanti ed articolare gli stessi in
modo tale che siano chiavi esterne di una tabella e chiavi primarie di un’altra ottenuta per
scomposizione.
29
30
147
Capitolo terzo
Lo schema logico secondo il modello relazionale
3.6.6. Forma normale di Boyce - Codd
In una relazione in 3NF secondo quanto affermato da Codd, ogni attributo
non primario deve essere rispetto a ciascuna chiave candidata :
? interamente indipendente
? non transitivamente indipendente
Si può affermare che una relazione R è normalizzata secondo Codd se ogni
tupla è composta da una chiave primaria, che identifica un'entità del mondo
reale, e da un insieme di valori di attributi fra loro indipendenti, che
descrivono l’entità. Ma questa definizione entra in crisi nel caso di relazioni
con due o più chiavi candidate composte (con più di un attributo) ad
intersezione non nulla (cioè con almeno un attributo in comune). Si consideri
la tabella studio :
lezione (studente, materia, insegnante)
Studente
Rossi
Rossi
Verdi
Bianchi
Verdi
Celesti
Materia
Mat. Gen
Diritto priv.
Mat. Gen.
Mat.gen.
Diritto priv.
Diritto priv.
Insegnante
Vannucci
Galli
Vannucci
Visani
Galli
Trevisan
Siamo nella facoltà di Economia e Commercio di Firenze ed è affollata.
I corsi vengono frazionati per gruppi di allievi e le regole sono che :
? ogni professore insegna un solo corso
? ogni studente è assegnato al corso identificato dal nome del
docente
Le chiavi candidate sono :
(studente, materia)
(studente, insegnante)
Esiste, però, una dipendenza funzionale fra :
Insegnante? Materia
148
Capitolo terzo Lo schema logico secondo il modello relazionale
Questa relazione lega due attributi primi, entrambi non contenenti chiave,
dove “insegnante” è il determinante. Si possono individuare in questa
relazione alcuni tipi di anomalie :
? Ridondanza. Si ripete ogni volta la materia insegnata dal professore
assieme al nome del professore.
? Perdita di informazioni. Se si cancella la tupla relativa allo studente
Celesti si perde anche l’informazione che il prof. Trevisan insegna
Diritto privato.
Per superare queste anomalie si è introdotta la forma normale di Boyce Codd che non accetta le dipendenze funzionali per attributi primi.
Una relazione è nella forma normale di Boyce - Cood se e solo se è in 1NF ed ogni
determinante è una chiave candidata31.
Questa definizione si svincola dalla dipendenza intera e dalla dipendenza
transitiva che venivano affrontate nella definizione delle 2NF e delle 3NF. Si
può dire che una relazione in BCNF è un sottoinsieme delle relazioni in 3NF,
per cui tutte le relazioni che sono in BCNF sono anche in 3NF ma che non è
sempre vero il viceversa.
Un metodo per ridurre concretamente una relazione che non si trova in
BCNF in un insieme di schemi tutti in BCNF, conservandone il contenuto, è
proposto da Belski. Ad ogni passo si spezza la tabella non in BCNF secondo
la tecnica seguente :
? In una relazione R, non in BCNF, si individua una dipendenza
funzionale X? Y fra un insieme di attributi X e un insieme di
attributi Y in cui X non contiene una chiave dello schema (cioè non
coincide con una chiave dello schema)
? Si indicherà con Z l’insieme degli attributi restanti alla relazione,
tolti quelli di X e Y. L’insieme Z non dovrà mai essere vuoto,
altrimenti vuol dire che X contiene una chiave dello schema e
questo è contrario alle ipotesi fatte.
31
Nazzini, Sangas, Vaccaro : Introduzione ai data base relazionali
149
Capitolo terzo
Lo schema logico secondo il modello relazionale
? Si spezza la relazione in due , portando nella prima gli insiemi X e Y
e nella seconda gli insiemi X e Z.
si ottengono in questo modo due schemi :
R1(X,Y)
mancando attributi che non dipendono da X, in questo caso avremo
che il nostro determinante è divenuto una chiave , per cui si trova in
BCNF. Nel secondo :
R2(X,Z)
Si deve verificare se esistono dipendenze non accettate. Se ne esistono,
si procede ripetendo la stessa tecnica fin quando tutti gli schemi sono
in BCNF.
In questo tipo di procedimento viene garantita la conservazione del
contenuto, però non viene allo stesso modo garantita la conservazione
delle dipendenze funzionali che sono presenti nello schema originario.
Esempio.
lezione(studente, materia, professore)
La dipendenza che crea problemi è :
Insegnante? Materia
Si pone :
X= Insegnante
Y= Materia
Z= Studente
Per cui :
R1 (insegnante, materia)
R2 (insegnante, studente)
Materia
Mat. Gen
Diritto priv.
Mat.gen.
Diritto priv.
Insegnante
Vannucci
Galli
Visani
Trevisan
Studente
Rossi
Rossi
Verdi
Bianchi
Verdi
Celesti
Insegnante
Vannucci
Galli
Vannucci
Visani
Galli
Trevisan
150
Capitolo terzo
Lo schema logico secondo il modello relazionale
In questa scomposizione alcune dipendenze sono andate perse come
quella :
[studente, materia] ? insegnante
che dopo la scomposizione non è più presente poiché non esiste più
uno schema con tutti e tre gli attributi.
3.6.7. Dipendenze multivalore (MVD)
La BCNF considera tutti i possibili casi di dipendenze funzionali accettando
solo quelle dipendenze che non creano problemi. Però, a volte, si hanno casi
che non sono riconducibili esclusivamente a semplici dipendenze funzionali.
Prendendo in considerazione la tabella lezione, se si togliesse il vincolo
secondo cui un professore può insegnare solo una materia allora si avrebbe
una situazione per cui il nome di un insegnante non determina
automaticamente una materia, ma possono individuarsi più tuples, tutte
egualmente valide. Quindi la BCNF non elimina questo tipo di anomalie che
si riconducono alle cosiddette dipendenze multivalore.
Data una relazione R e tre suoi sottoinsiemi disgiunti X,Y,Z (cioè le loro
intersezioni sono vuote) tali che la loro unione coincida con R, si dice che X
multidetermina Y quando ad un insieme di valori di X possono essere associati più
insiemi di valori di Y(ci sono zero o più valori possibili di Y), che non dipendono
affatto dai valori di Z (cioè i restanti Attributi). Cioè, se si hanno due tuples con
gli stessi valori di X e diversi valori di Y, si possono scambiare gli attributi di
Y, avendo ancora tuples che rientrano in R indipendentemente dai valori che
possono assumere i restanti attributi appartenenti all’insieme Z32.
Albano porta questo esempio :
Si consideri il seguente schema di relazione : R[C,D,O ,A,S,V]
in cui si ha una dipendenza multivalore C? ? OA
32
C
DA
DA
DA
DA
DA
D
Albano
Albano
Albano
Albano
Albano
O
L10
M9
M10
L10
M9
A
S1
S2
S2
S1
S2
S
Rossi
Rossi
Rossi
Bianchi
Bianchi
V
30
30
30
28
28
151
Capitolo terzo
Lo schema logico secondo il modello relazionale
Si indica una dipendenza multivalore in questo modo :
X? ??? Y
Da quanto detto, si può affermare che la dipendenza funzionale è solo un
caso particolare della dipendenza multivalore, in cui ad un X si può associare
solo un Y. Inoltre, si vede dalla definizione come si possono avere
dipendenze multivalore solo nel caso in cui si abbia almeno tre attributi33. Se
in uno schema relazionale R (X,Y,Z) esiste una dipendenza multivalore fra
X? ??? Y indipendentemente da Z , X e Z non saranno indipendenti l’uno
dall’altro (cioè X? ??? Z indipendentemente dai valori Y), questo significa che
le dipendenze multivalore sono sempre almeno due o più coppie ;per questo
motivo possono essere indicate entrambe con una espressione comune
X? ??? Y/Z.
In base a quanto affermato si può enunciare il teorema di Fagin :
Se nella relazione R (X,Y,Z) ha luogo la MVD X? ?? Y/Z allora può essere
scomposta nelle sue proiezioni R1 (X ,Y) e R2(X ,Z) e viceversa, cioè se R(X,Y,Z) è
il join delle due relazioni R1 (X ,Y) e R2(X ,Z) allora ha luogo in R la MVD
X? ??? Y/Z.
Quindi, R può essere ricostruita tramite un join naturale su X delle due
proiezioni R1 e R2.
3.6.8. Quarta forma normale (4NF)
Una relazione R è in quarta forma normale (4NF) quando è in 1NF e se per
ogni dipendenza multivalore X?? ? Y, con Y non vuoto o sottoinsieme di X e
DA
Albano
M10
S2
Bianchi
28
Consideriamo la seconda e la quarta tupla. Se si scambia [M9,S2] con[L10,S1] otteniamo due nuove tuples che appartengono ancora alla relazione (la prima e la quinta).
33 Misbah Deen propone un’altra definizione per cui dato uno schema di relazione R (A,B,C) avremo che :L’attributo A è un multideterminante dell’attributo B in presenza di un attributo C se ogni valore di A può agire come identificatore univoco di un insieme di valori B, indipendentemente dai valori C presenti nella relazione.
152
Capitolo terzo
Lo schema logico secondo il modello relazionale
X? ?Y non contiene tutti gli attributi di R (quindi esisterà un altro insieme di
restanti attributi Z), è tale che X contiene una chiave di R.
Se X contiene una chiave allora determina in maniera univoca Y ed anche
tutti gli altri attributi di R. Per fare questo occorre scomporre lo schema fino a
demolire tutte le dipendenze multivalore riconducendo le stesse a
dipendenze funzionali semplici34.
Per scomporre uno schema di relazione
che presenta tali dipendenze
multivalore, occorre seguire un procedimento che riduca questo schema in
un insieme di schemi tutti in 4NF, salvaguardandone il contenuto.
Per ottenere questo risultato si spezza una relazione non in 4NF in questo
modo :
? Si individua nella relazione R un insieme di attributi X che multidetermina
un insieme Y.
? Si chiamerà Z l’insieme degli attributi restanti (Z non deve però mai essere
un insieme vuoto)
? Si spezza la relazione R in due parti, trasferendo nella prima parte gli
attributi appartenenti a
XeY:
R1(X,Y)
e nella seconda gli attributi appartenenti a X e Z :
R2(X,Z)
Nella R1 la dipendenza fra X e Y che resta non soddisfa più la definizione di
dipendenza multivalore. In R2 si dovrà verificare se ci sono ancora
dipendenze multivalore. Se la risposta è positiva si ripete nuovamente la
procedura sopra esposta fino a che tutte le tabelle saranno in 4NF. Come per
la BCNF anche per la 4NF il procedimento adottato preserva il contenuto ma
non offre assolutamente garanzie sul mantenimento delle dipendenze. Si può
affermare che le relazioni in 4NF sono anche in BCNF poiché ne
costituiscono un sottoinsieme.
Prendiamo ad esempio la seguente relazione visite :
153
Capitolo terzo
Lo schema logico secondo il modello relazionale
Visite (Veterinario, Specializzazione, DataVisita)
Veterinario
Rossi
Rossi
Bianchi
Rossi
Rossi
Bianchi
Specializzazione
Oculista
Otorino
Oculista
Oculista
Otorino
Oculista
DataVisita
12/10/96
12/10/96
12/10/96
14/10/96
14/10/96
12/10/96
Le regole sono queste :
? un veterinario può avere più specializzazioni
? le date delle visite che un veterinario fa sono ripetute per tutte le
specializzazioni che il veterinario ha.
Come si vede in questa relazione ci sono delle anomalie di
ridondanza.
Si hanno nello schema due dipendenze multivalore :
Veterinario ? ? Specializzazione
Veterinario ? ? DataVisita
Si consideri :
X= Veterinario Y= Specializzazione Z= DataVisita
R1 (Veterinario, Specializzazione)
Veterinario
Rossi
Rossi
Bianchi
Specializzazione
Oculista
Otorino
Oculista
R2 (Veterinario, Datavisita)
Veterinario
Rossi
Rossi
Bianchi
Bianchi
Datavisita
12/10/96
14/10/96
12/10/96
14/10/96
Come si vede sia la R1 che la R2 sono in 4NF poiché le dipendenze che si
hanno sono solo semplici dipendenze funzionali. Inoltre, i due schemi non
possono che essere in 4NF poiché sono composti di due attributi.
Si può cercare, adesso, di verificare a cosa corrisponde negli schemi E/R la
situazione descritta nell’esempio precedente :
34
Misbah Deen propone per la 4NF un’altra definizione che ricalca quella di Sherman per la
154
Capitolo terzo
Veterinario
Lo schema logico secondo il modello relazionale
n
m
Esercita
Specializzazion
e
m
Visita
n
DataVisita
Figura 3.10 Associazione ternaria m a n
Le anomalie di ridondanza risolte dalla 4NF sono derivanti dall’aver voluto
inserire in una stessa tabella le due associazioni che appaiono evidenti nel
diagramma E\R. Inoltre, si nota che le associazioni sono del tipo m a n.
Riportare in 4NF significa, quindi, spezzare l’associazione ternaria nelle due
binarie indipendenti poiché nella stessa relazione ternaria producevano delle
ridondanze.
3.6.9. Dipendenza di concatenamento (JD)
La relazione R soddisfa la Join Dependency rappresentata come JD*(X,Y,....Z)se, e
solo se, essa è il Join delle sue proiezioni su X,Y,......Z, dove X,Y,.....Z sono
sottoinsiemi degli attributi di R35.
3NF : Una relazione è in 4NF se ogni multideterminante è una chiave candidata.
35 Nazzini, Sanges, Vaccaro :Introduzione ai Data Base relazionali.
155
Capitolo terzo
Lo schema logico secondo il modello relazionale
Questa definizione mostra come le multidipendenze MVD possono essere
assunte come caso particolare della JD. Questo deriva direttamente dal
teorema di Fagin per cui condizione necessaria e sufficiente perché nella relazione
R (X,Y,Z) abbia luogo la MVD X ? ? Y/Z è che R soddisfi la JD? (XY, XZ). Si
tratta, quindi, di una join sul multideterminante.
3.6.10. Quinta forma normale (5NF)
La quinta forma normale viene detta anche forma normale estrema poiché
dipende dal tipo di operazioni consentite in fase di scomposizione di una
relazione in altre relazioni. I processi di normalizzazione si realizzano con
scomposizioni e sono basati su queste regole (Deen) :
1. Quando una relazione viene scomposta in una serie di altre relazioni,
ognuna di queste rappresenta una proiezione della relazione originaria
2. La relazione originaria deve essere il concatenamento dell’insieme delle
nuove relazioni senza che ci sia perdita di contenuto.
Fargin ha introdotto questa forma normale estrema nel caso in cui
proiezioni e concatenamenti siano gli unici operatori possibili. Inoltre ha
dimostrato che la MVD ma anche la dipendenza funzionale totale sono un
caso di JD e che una relazione in 5NF è anche in 4NF. Questa forma normale
riguarda le relazioni in 4NF ternarie che potrebbero essere scomposte senza
perdere informazioni in 3 proiezioni ma non in due.
Si possono definire (Deen) le dipendenze di concatenamento in due tipi :
1. quello in cui le proiezioni sono basate su chiavi candidate
2. quello in cui le proiezioni non sono chiave candidata.
Se una relazione R ha n attributi ed inclusa almeno una chiave candidata R
potrà essere scomposta in (n-1) relazioni binarie R1, R2,... ,R(n-1) ognuna
contenente la chiave candidata ed un altro attributo, in modo tale che R
rappresenti il concatenamento di tutte queste relazioni.
156
Capitolo terzo
Lo schema logico secondo il modello relazionale
Questo tipo di dipendenze vengono dette ordinarie. Il secondo tipo di
dipendenza di concatenamento è invece determinante in fase di
normalizzazione.
Si arriverà alla 5NF quando una relazione non potrà più subire ulteriori
scomposizioni per mezzo di proiezioni non - ordinarie (cioè proiezioni non
basate sulle chiavi candidate) senza subire perdite di informazioni. La 5NF
viene definita in questo modo :
Una relazione è in 5NF se non è soggetta a dipendenze di concatenamento non ­
ordinarie36.
La 5NF viene detta forma normale estrema poiché gli unici operatori
permessi sono proiezioni e concatenamenti, in quanto ogni ulteriore
scomposizione dovrà essere basata sulle chiavi candidate.
La 5NF non produce necessariamente relazioni irriducibili, se vengono
incluse anche quelle basate su chiavi candidate generano, invece, relazioni
irriducibili ; se la chiave candidata è un singolo attributo le relazioni
saranno binarie. Si è visto, infatti, come la terza forma normale 3NF si sia
basata sulla scomposizione dei determinanti e la quarta forma normale 4NF
di sia basata sulla scomposizione dei multideterminanti che non erano in
effetti chiavi candidate di R.
La posizione estrema viene raggiunta quando una relazione non può essere
ancora scomposta, senza perdere informazioni, tranne che per mezzo di
proiezioni di chiavi candidate. Quindi, questo vuol dire che una relazione
che si trova in 5NF è anche in 4NF e in 3NF. In effetti la 5NF non può
contenere un determinante o un mutideterminante che non sia anche chiave
candidata.
La 5NF è solitamente proposta per relazioni in 4NF che siano ternarie, le
quali possono presentare alcune anomalie. Ad esempio :
Si consideri lo schema di relazione Z*(Fornitore, Articolo, Commessa)
36
Misbah Deen :Databasa :concetti teorici ed applicativi FrancoAngeli
157
Capitolo terzo
Lo schema logico secondo il modello relazionale
Fornitore
F1
F1
F2
F1
Articolo
A1
A2
A1
A1
Commessa
C2
C1
C1
C1
Questo schema si presenta in 4NF con chiave composta dai suoi tre attributi.
Si possono, comunque, presentare delle anomalie per esempio di
cancellazione :
se si annulla la tupla (F1, A1, C1) occorrerà annullare un’altra tupla che
potrà essere individuata solo se si fanno delle considerazioni di tipo
applicativo. Cancellando la tupla (F1, A1, C1) non si sa esattamente se
questo è dovuto al fatto che F1 non fornisce più l’articolo A1 oppure, sempre
l’articolo A1 è obsoleto per la commessa C1.
Nel primo caso occorrerà cancellare anche la tuple (F1, A1, C2), mentre nel
secondo la tuple da cancellare sarà (F2, A1, C1).
Si potrà eliminare queste anomalie effettuando tre proiezioni binarie (e non
due) :
Z1(Fornitore, Articolo)
Fornitore
F1
F1
F2
Articolo
A1
A2
A1
Z2 (Fornitore, Commessa)
Fornitore
F1
F1
F2
Commessa
C2
C1
C1
Z3 (Articolo, Commessa)
Articolo
A1
A2
A1
Commessa
C2
C1
C1
Join
Fornitore
F1
F1
F2
F1
Articolo
A1
A2
A1
A1
Commessa
C2
C1
C1
C1
Effettuando il join si ottiene nuovamente Z senza perdere infermazioni.
Nel caso in cui lo schema Z avesse avuto questa forma :
158
Capitolo terzo
Lo schema logico secondo il modello relazionale
Fornitore
F1
F1
Articolo
A1
A2
Commessa
C2
C1
l’inserimento di una tupla (F2,A1,C1) avrebbe causato in caso di proiezione
una tupla spuria ovvero (F1, A1, C1) con la creazione di informazioni che
non possono avere fondamento. In effetti :
Fornitore
F1
F1
F2
Fornitore
F1
F1
F2
Articolo
A1
A2
A1
Articolo
A1
A2
A1
Fornitore
F1
F1
F2
Commessa
C2
C1
C1
Commessa
C2
C1
C1
Articolo
A1
A2
A1
Commessa
C2
C1
C1
Join
Fornitore
F1
F1
F2
F1
Articolo
A1
A2
A1
A1
Commessa
C2
C1
C1
C1
Una situazione come quella descritta dall’esempio è rappresentabile nel
modello E\R da una struttura ciclica :
159
Capitolo terzo
Fornitore
m
Lo schema logico secondo il modello relazionale
Vende
n
m
Articolo
m
compone
Commessa
m
n
Serve
Quindi, questa rappresenta una situazione che nel modello E\R e più in
generale nell’ambito di una metodologia di progettazione concettuale occorre
evitare. Quando si presenta una situazione del genere, occorre già in sede di
progettazione concettuale porvi rimedio sciogliendo queste associazioni
cicliche qualora provochino delle ridondanze o altre anomalie. In questo caso
è più conveniente per non creare delle tuple spurie e quindi non
corrispondenti ad informazioni reali riunire le tre entità in una unica
relazione :
Fornitore
Commessa
Articolo
160
Capitolo terzo
Lo schema logico secondo il modello relazionale
Vista la particolarità di questi casi proposti nella 4NF e soprattutto nella 5NF
spesso gli analisti affermano che un buon schema logico si ottiene quando si
è giunti in 3NF. Le anomalie che la 4NF e la 5NF si propongono di risolvere
non dovrebbero verificarsi se è stata effettuata una buona progettazione
concettuale oppure i casi dovrebbero essere molto rari. Infatti la NF produce
relazioni del tipo m a n che nell’ambito della progettazione relazionale
dovrebbero essere opportunamente “trattate” con l’introduzione di una terza
tabella, mentre la situazione descritta dalla 5NF propone associazioni cicliche
che, spesso, possono presentarsi, nel caso di normalizzazione in 5NF , un
rimedio più dannoso della situazione anomala.
3.7. . Creazione dei database tramite strumenti CASE (Computer - Aided
Software Engineering)
Attraverso questi strumenti si può progettare e poi automaticamente creare
la struttura dei database relazionali. Gli strumenti CASE consentono l’uso di
tecniche grafiche, come i diagrammi E\R, per progettare la struttura delle
tabelle e stabilire le relazioni fra loro.
Questi strumenti fanno risparmiare molto tempo ed impediscono molti errori
quando si realizza un database relazionale di grosse dimensioni.
La maggior parte dei CASE contengono un deposito in cui vengono salvate le
informazioni sulla struttura della tabella, sui campi chiave primari ed esterni
sui tipi di relazione tra le tabelle. Il deposito è un database conservato nella
stessa applicazione CASE. Utilizzando i dati del proprio deposito si possono
stampare gli schemi del proprio database e generare dizionari dei dati.
Quando la struttura del proprio database è soddisfacente, il CASE traduce i
dati che si trovano nel deposito in istruzioni del Linguaggio di Definizione
dei Dati SQL. Le istruzioni di Definizione dei dati in linguaggio SQL
vengono poi inviate al RDBMS.
161