Modelli di database File - Progetto e

annuncio pubblicitario
DATABASE: Il modello relazionale
CAPITOLO V
DATABASE: Il modello relazionale
Il modello relazionale offre una rappresentazione matematica dei dati basata sul concetto di
relazione normalizzata. I principi del modello relazionale furono originariamente proposti da
Edward F. Codd nel 1970. Egli rilevò per primo che la matematica poteva essere usata per
infondere alcuni solidi principi e rigore nel campo della gestione dei database. Il modello di
Codd fa uso di termini come tupla, dominio, grado, attributo, dipendenza funzionale e forma
normale, che sono alla base del modello relazionale e di cui bisogna comprendere il
significato.
Terminologia
Sono di seguito introdotte alcune delle definizioni primitive più importanti:
•
Una RELAZIONE corrisponde ad una Tabella.
•
Una TUPLA (abbreviazione di n-tupla) della relazione corrisponde ad una riga della
tabella.
•
Un ATTRIBUTO della relazione è una colonna della tabella.
•
Un DOMINIO è l’insieme dei possibili valori che può assumere uno specifico
attributo di una certa relazione.
•
Il numero delle tuple è detto CARDINALITA’ della relazione.
•
Il numero degli attributi è detto GRADO della relazione.
•
Una PRIMARY KEY (Chiave primaria) è una colonna o una combinazione di colonne
con la proprietà di non assumere mai lo stesso valore su righe diverse.
E’ necessaria per la ricerca delle informazioni nella banca dati.
Si fa notare che:
ƒ
Ogni riga (tupla) è omogenea con le altre.
Pagina 1 di 7
DATABASE: Il modello relazionale
ƒ
I valori di una casella devono essere atomici, cioè non ulteriormente
decomponibili in informazioni più semplici.
L’insieme di tutti i possibili valori che può assumere un attributo della relazione è detto
dominio dell’attributo. Più esattamente, ogni attributo deve essere definito su un dominio, ed
il valore di ogni sua casella deve essere esclusivamente tra quelli offerti dal dominio.
Questo significa anche che esistono valori ammissibili di un certo dominio che potrebbero
non apparire mai come valori assunti dall’attributo. Il sottoinsieme del dominio composto dai
valori effettivamente assunti, il cosiddetto dominio efficace, è detto insieme delle
valorizzazioni.
TERMINI DEL MODELLO RELAZIONALE EQUIVALENTI INFORMALI
Relazione
Tabella
Tupla
Riga o Record
Attributo
Colonna o campo
Cardinalità
Numero di righe
Grado
Numero di colonne
Chiave primaria
Identificatore unico
Dominio
Insieme dei possibili valori
Esempio
Primary Key
Attributi
QU.TA’ SPEDITA
001
Giulianova 12
002
Teramo
15
003
Pineto
12
004
Roseto
14
Tuple
Cardinalità = 4
Relazione
COD. IMP.TO CITTÀ
grado = 3
L’attributo CITTA’ ha per dominio l’insieme di tutte le città italiane.
L’attributo COD_IMPIEGATO ha per dominio l’insieme dei numeri interi positivi composti
da tre cifre da 001 a 999
Il valore “Roma” è ammissibile per l’attributo CITTA’, ma non compare in tabella.
Pagina 2 di 7
DATABASE: Il modello relazionale
L’insieme delle valorizzazioni dell’attributo CITTA’ è composto dai valori: Giulianova,
Teramo, Pineto, Roseto. L’insieme delle valorizzazioni dell’attributo COD_IMPIEGATO è
composto dai valori: 001, 002, 003, 004.
Riassumendo:
•
Una relazione non può avere più di due attributi con lo stesso nome,
indipendentemente dal fatto che abbiano lo stesso dominio o domini distinti.
•
Relazioni diverse, cioè tabelle diverse, possono avere colonne con lo stesso nome,
indipendentemente dal loro dominio.
•
Un attributo è univocamente identificato dalla relazione a cui appartiene. Per
identificarlo, è sufficiente farlo precedere dal nome della relazione. Ad esempio,
l’attributo NOME della relazione IMPIEGATI è univocamente identificato dalla
sequenza IMPIEGATI.NOME.
•
Domini di attributi diversi non devono essere necessariamente distinti. E’ logico
pensare che attributi diversi della stessa relazione possano essere definiti su di uno
stesso dominio.
Esempio
Due attributi (di una relazione) ETA’ e NUM_SCARPA condividono lo stesso dominio,
formato da tutti i numeri di due cifre da 000 a 100. Cambia, invece, l’insieme delle
valorizzazioni per ogni attributo, cioè l’interpretazione dei dati forniti dal dominio: mentre è
accettabile ETA’=78, è inaccettabile NUM_SCARPA=78.
La stessa osservazione è estendibile se gli attributi che condividono lo stesso dominio sono su
tabelle diverse. E’ evidente che è possibile confrontare solo dati omogenei, che condividono,
cioè, lo stesso dominio.
Data Type
Il linguaggio utilizzato dai più diffusi DBMS Relazionali per la ricerca delle informazioni è
chiamato System Query Language (SQL). Questo deve gestire diverse tipologie di dati che
l’utente può assegnare ad un attributo. Si elencano alcune delle più diffuse:
•
INTEGER: Numeri Interi
•
FLOAT: Numeri con la virgola
•
CHARACTER: Singoli caratteri alfanumerici o loro composizione non
interpretati come numero
Pagina 3 di 7
DATABASE: Il modello relazionale
Osservazione
E’ errato associare il data type al concetto di dominio. Il concetto di Dominio è più sofisticato,
perché è legato al significato dell’attributo. Infatti se è definito un attributo di tipo
CHARACTER, non significa che vi appartiene qualunque valida stringa di caratteri.
Se in una relazione l’attributo CITTA’ è di tipo CHAR(15), cioè composto da stringhe di
lunghezza massima di 15 lettere, il DBMS accetta come valore valido anche la stringa “xyzq”,
che però non appartiene al dominio, poiché non è un nome possibile di città.
Tuple
E’ chiaro che un attributo è un insieme di dati omogenei scelti in un insieme più grande detto
dominio.
Una tupla è identificata come una riga della tabella e costituisce l’informazione fornita dalla
relazione. L’informazione è anche detta istanza.
Si dice che una tupla è quella parte della relazione che ne descrive univocamente un’istanza.
Quindi la tupla è una successione di attributi atomici nel numero necessario e sufficiente a
descrive univocamente un’istanza.
Una relazione è allora un insieme di tuple.
Per chiarire ulteriormente il concetto di relazione e tupla è necessario definire l’operazione
matematica di prodotto cartesiano tra insiemi.
Prodotto Cartesiano tra Insiemi (Approfondimento matematico)
La definizione matematica di Relazione è sviluppata partendo dai concetti di
•
Dominio
•
operazione di Prodotto Cartesiano tra insiemi.
Per definire elementarmente il Prodotto Cartesiano tra insiemi, si ricorre ad un esempio.
Esempio
Dati 3 insiemi S={s1, s2}, P={p1, p2, p3} e W={w1, w2}
il prodotto cartesiano SxP è un insieme i cui elementi sono le seguenti coppie ordinate:
SxP={(s1,p1), (s1,p2), (s1,p3), (s2,p1), (s2,p2), (s2,p3)}.
Pagina 4 di 7
DATABASE: Il modello relazionale
Il prodotto cartesiano SxPxW genera invece terne ordinate
Possibili combinazioni
Ogni terna ordinata (si, pj, wk) è un elemento
1
s1
p1
w1
2
s1
p1
w2
3
s1
p2
w1
4
s1
p2
w2
5
s1
p3
w1
6
s1
p3
w2
contiene: 2x3x2=12.
7
s2
p1
w1
12 è il numero massimo di tuple che la
8
s2
p1
w2
relazione può contenere, 12 è quindi la
9
s2
p2
w1
cardinalità massima della relazione.
10
s2
p2
w2
11
s2
p3
w1
12
s2
p3
w2
dell’insieme SxPxW ed è una possibile tupla
della relazione di domini S, P e W.
Il numero massimo di terne ordinate = numero
massimo di tuple è calcolabile dal prodotto tra
i numeri di elementi che ciascun insieme
Definizione di Relazione
Data una collezione di Attributi A1, A2, …, An che hanno rispettivamente i Domini D1, D2,
…, Dn (non necessariamente distinti), una Relazione di grado n è un sottoinsieme del
prodotto cartesiano D1xD2x...xDn.
Quindi una Relazione è un sottoinsieme dell’insieme generato dal Prodotto Cartesiano fra i
Domini dei suoi Attributi.
Il numero degli Attributi della Relazione è detto GRADO e il numero delle tuple è detto
CARDINALITA’ della Relazione.
Dalla definizione di Relazione si evince un’importante proprietà: una relazione non può mai
presentare tuple duplicate.
Nella tabella seguente, alcuni attributi hanno valori duplicati in colonna, però non esiste
alcuna tupla identica.
Cod.Part.
P1
P2
P3
P4
Descrizione
Dado
Vite
Vite
Bullone
Colore
Rosso
Blu
Verde
Blu
Peso
12
17
14
19
Città
Londra
Parigi
Roma
Londra
Pagina 5 di 7
DATABASE: Il modello relazionale
In una Relazione…
NON esistono tuple duplicate
Le Tuple non sono ordinate (dall’alto al basso)
Gli attributi NON sono ordinati (da sinistra a destra)
I valori degli attributi sono atomici
…NON esistono tuple duplicate
Questa proprietà deriva dal fatto che la relazione è un insieme matematico (di tuple) e gli
insiemi matematici, per definizione, non includono elementi duplicati. Da ciò si osserva che
una tabella ed una relazione non sono esattamente la stessa cosa, in quanto una tabella (in
generale) potrebbe contenere righe duplicate, mentre invece una Relazione non può proprio
contenere tuple duplicate (per definizione).
Un’importante conseguenza del fatto che non esistono tuple duplicate è che in una relazione
esiste sempre una “primary key”.
Infatti le tuple sono univoche, ne segue che al più la combinazione di tutti gli attributi della
relazione (l’insieme di tutte le colonne) ha la proprietà di essere univoca e quindi può fungere
da Primary Key.
Nella realtà non è sempre necessario coinvolgere tutti gli attributi, poiché una combinazione
minore è generalmente sufficiente per determinare la Primary Key.
…Le Tuple non sono ordinate (dall’alto al basso)
Questa proprietà deriva dal fatto che la relazione è un insieme matematico (di tuple) e gli
insiemi matematici non sono ordinati.
Pertanto si ha sempre la stessa relazione qualunque sia l’ordine delle sue tuple. Quindi non ha
senso parlare di “quarta tupla”, “prima tupla” o “tupla successiva” di una relazione, perché
non esiste il concetto di posizione della tupla.
Anche questa proprietà ci permette di osservare che una relazione ed una tabella non sono
esattamente la stessa cosa: le righe di una tabella hanno un ordinamento dall’alto al basso,
mentre le tuple di una relazione non lo hanno.
Pagina 6 di 7
DATABASE: Il modello relazionale
…Gli attributi NON sono ordinati (da sinistra a destra)
Anche questa proprietà deriva dal fatto che l’insieme degli attributi di una relazione è un
insieme matematico e che gli insiemi matematici non sono ordinati.
Quindi non ha senso parlare di “quinto attributo”, “primo attributo” o “attributo successivo”
di una Relazione. Gli attributi sono sempre referenziati per nome e mai per posizione. Anche
questa proprietà permette di osservare un’ulteriore differenza tra relazione e tabella: le
colonne di una tabella hanno un ordinamento da sinistra a destra, mentre gli attributi di una
relazione non lo hanno.
…I valori degli attributi sono atomici
Dire che i valori di tutti gli attributi sono “atomici” significa che non sono ulteriormente
decomponibili. È una conseguenza diretta del fatto che i domini contengono valori atomici. I
valori atomici sono anche detti “scalari”.
Questa proprietà delle Relazioni si può anche enunciare nel seguente modo:
“All’incrocio fra una qualunque riga e
una qualunque colonna della Tabella si trova
esattamente uno ed un solo valore e mai una collezione di valori”.
Una Relazione che soddisfa questa condizione si dice “NORMALIZZATA” o “IN PRIMA
FORMA NORMALE”.
Definizione di Database Relazionale
Un Database Relazionale è un database percepito dall’utente come un insieme di Relazioni
Normalizzate di vario grado.
Da quanto detto si deduce che tutte le relazioni sono sempre normalizzate almeno in Prima
Forma Normale.
Nel contesto del Modello Relazionale, il termine “Relazione” deve sempre essere inteso come
“Relazione Normalizzata”.
Pagina 7 di 7
Scarica