Lezione VD e VE: Regole di normalizzazione di un data base e l'integrità referenziale
La normalizzazione è un
processo con il quale le tabelle vengono trasformate in modo tale che ogni
tabella corrisponda a un singolo oggetto della realtà rappresentata con il modello di database E/R.
Nella definizione della struttura
di una relazione (o tabella) occorre evitare la ripetizione e la ridondanza
dei dati, per non creare problemi nella fase di trattamento della tabella,
. con operazioni di modifica o cancellazione di righe.
Quindi a partire da una data
relazione, vengono create altre relazioni, secondo un processo che viene
indicato con il termine di normalizzazione:
la definizione di relazioni normalizzate avviene a livelli crescenti di
normalizzazione, a cui corrispondono diverse forme normali della relazione.
Dato lo scopo del corso ci
limiteremo solo alle prime tre regole.
1° Forma Normale
Una relazione è in prima
forma normale (1FN) quando rispetta i seguenti requisiti.
·
Tutte le righe della
tabella contengono lo stesso numero di colonne; .
·
Tutti gli attributi
rappresentano informazioni elementari;
·
i valori che compaiono
in una colonna sono dello stesso tipo, cioè appartengono allo stesso dominio;
·
ogni riga è diversa da
tutte le altre, cioè non ci possono essere due righe con gli stessi valori nelle colonne.
·
l'ordine con il quale
le righe e le colonne compaiono nella tabella è irrilevante.
Esempio : La
Relazione Studenti (Codice,Cognome,Nome, Indirizzo)
Indirizzo non è
un attributo semplice, in quanto è
ulteriormente suddividibile
2° Forma Normale
Una relazione è in seconda forma normale (2FN) quando:
·
E’ in prima forma normale:
·
Tutti i suoi attributi non‑chiave dipendono
dall'intera chiave, cioè non possiede attributi che dipendono soltanto da una
parte della chiave.
La seconda forma normale elimina la dipendenza
parziale degli attributi dalla chiave
e riguarda il caso di chiavi composte, cioè formate da più attributi.
Esempio : La Relazione Merci (Codice,Magazzino,Quantità,LocalitaMagazzino)
In essa l’attributo
LocalitàMagazzino dipende da Magazzino che è parte della
Chiave primaria Codice+Magazzino
.
Conseguentemente la Relazione
non è in 2°FN. Per Portarla in 2FN la Relazione viene sdoppiata in 2
Relazioni.
Merci (Codice,Magazzino,Quantità).
Depositi
(Magazzino,LocalitàMagazzino)
3°
Forma Normale
Una relazione è in terza forma normale (2FN) quando:
·
E’ in seconda forma normale:
·
Tutti gli attributi non‑chiave dipendono
direttamente dalla chiave, cioè non possiede attributi non‑chiave che dipendono
da altri attributi non‑chiave.
La terza forma normale elimina la
dipendenza transitiva degli attributi dalla chiave.
Per
esempio si consideri la gestione anagrafica di un'associazione di studenti di
scuole diverse.
Le
informazioni più importanti sono rappresentate con la seguente relazione:
Studenti
(Nome, Scuola, TelefonoScuola)
In essa
l’attributo non chiave TelefonoScuola è dipendente dall’attributo non chiave
Scuola . La relazione non è in 2FN.
Per Normalizzarla occorre Sdoppiare la Relazione
Studenti in Studenti(
Nome,Scuola) e Istituti (Scuola, TelefonoScuola).
Integrità referenziale.
L'integrità
referenziale (referential integrity) è un insieme di regole del
modello relazionale che garantiscono l'integrità dei dati quando si hanno
relazioni associate tra loro attraverso la chiave esterna:
Queste regole servono per rendere valide le
associazioni tra le tabelle e per eliminare gli errori di inserimento,
cancellazione o modifica di dati collegati tra loro.
L'integrità referenziale viene
rispettata quando per ogni valore non nullo della chiave esterna, esiste un
valore corrispondente della chiave primaria nella tabella associata.
Per esempio in un database relazionale che contiene
la tabella dei clienti e la tabella degli ordini, il codice del cliente della
tabella Ordini è associato alla chiave della tabella Clienti.
Clienti (Codice, RagioneSociale,Indirizzo)
Ordine (NumOrdine, Data,CodiceCliente)
Concetti
Fondamentali del modello Relazionale
RELAZIONE
A1 A2 A5
Dal punto di vista matematico, dati n insiemi Al,
A2, A3, ..., An, si dice relazione un
sottoinsieme dell'insieme di tutte le n‑uple a1, a2, a3, ..., an che si possono
costruire prendendo nell'ordine un elemento a1 dal primo insieme A1, a2 dal secondo
insieme A2, e così via.
Il numero n si chiama grado della relazione. (Numero di colonne o di attributi della
tabella).
Gli insiemi Ai si chiamano domini della relazione.
Il numero delle tuple (indicate anche con il
termine tuple) si chiama cardinalità della relazione.
La relazione viene comunemente rappresentata con
una tabella, avente tante colonne quanti sono i domini (grado della relazione)
e tante righe quante sono le tuple (cardinalità della relazione).
I nomi dei domini sono i nomi delle colonne. i
valori che compaiono in una colonna sono omogenei tra loro, cioè appartengono a
uno stesso dominio.
La relazione è quindi una collezione di n‑uple,
ciascuna delle quali contiene i valori di un numero prefissato di colonne.
La relazione rappresenta un'entità, ogni n‑upla
rappresenta un'istanza dell'entità, le colonne contengono gli
attributi dell'entità.
Il dominio è l'insieme dei valori che
possono essere assunti da un attributo.
La chiave della relazione è un attributo o una combinazione di attributi che
identificano univocamente le tuple all'interno della relazione.
Ogni
riga della tabella possiede valori diversi per l'attributo (o gli attributi)
chiave.
Requisiti fondamentali del Modello E/R
- Tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli attributi.
- Gli attributi rappresentano informazioni elementari (o atomiche), non scomponibili ulteriormente, cioè non ci sono campi di gruppo che contengono per ogni riga un insieme di valori anziché un solo valore.
- I valori assunti da un campo appartengono al dominio dei valori possibili per quel campo, e quindi sono valori omogenei tra loro, cioè sono dello stesso tipo.
- In una relazione, ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori dei campi.
Questo significa che esiste un attributo
o una combinazione di più attributi che identificano univocamente la tupla, e
che assumono la funzione di chiave primaria.
e Le
tuple compaiono nella tabella secondo un ordine
non prefissato, cioè non è rilevante il criterio con il quale le righe sono
sistemate nella tabella.
La chiave (formata da uno o più
attributi) identifica la tupla all'interno della tabella;
Ogni dato elementare contenuto nel modello
relazionale deve essere accessibile attraverso la combinazione di nome della
tabella, nome e valore della chiave, nome della colonna contenente il dato.
Per questo
motivo il modello relazionale fissa una regola di integrità sui dati, detta
integrità sull'entità (entity
integrity), secondo la quale nessuna componente della chiave primaria
può avere valore nullo.
Le
tabelle vengono ricavate dal modello E/R applicando le regole di derivazione
del modello logico, e che riassumiamo.
1. Ogni entità diventa una
relazione;
2. Ogni attributo di un'entità
diventa un attributo della relazione, cioè il nome di una colonna della tabella;
3. Ogni attributo della
relazione eredita le caratteristiche dell'attributo dell'entità da cui deriva;
4. L’ identificatore univoco di
un'entità diventa la chiave primaria della relazione derivata;
5. l'associazione uno a uno
diventa un'unica relazione che contiene gli attributi della prima e della
seconda entità;
6. 1'identificatore univoco
dell'entità di partenza nell'associazione uno a molti diventa chiave esterna o chiave straniera, cioè la sua
chiave primaria diventa attributi nella 2° relazione.
7. L'associazione con grado
molti a molti diventa una nuova relazione (in aggiunta alle relazioni derivate dalle entità) composta
dagli identificatori univoci delle due entità e dagli eventuali attributi dell'associazione.
OPERAZIONI RELAZIONALI
In generale gli operatori relazionali agiscono su una relazione per ottenere una
nuova relazione.
In sostanza
le operazioni relazionali consentono di effettuare le interrogazioni alla base di dati per ottenere le informazioni
desiderate estraendo da una tabella una sottotabella, oppure combinando tra
loro due o più tabelle e generando così nuove relazioni.
SELEZIONE ( Select)
genera una
nuova relazione costituita‑ solo dalle tuple della relazione di partenza che
soddisfano a una determinata condizione; vengono cioè selezionate le righe con
i valori degli attributi corrispondenti alla condizione prefissata,
Grado: la relazione ottenuta
possiede tutte le colonne della
relazione di partenza, e quindi ha
lo stesso grado. (il numero di
colonne resta invariato )
Cardinalità: nella nuova relazione la
cardinalità può essere minore o uguale alla tabella di partenza, ma è
ragionevole pensare che sia solitamente minore. (Il numero di righe è minore)
PROIEZIONE (Project).
La
proiezione genera una nuova
relazione estraendo dalla tabella iniziale due o più
colonne corrispondenti agli attributi prefissati.
La tabella ottenuta potrebbe contenere alcune righe
uguali: in questo caso occorre richiedere che ne venga conservata una sola,
perché il modello relazionale tra i suoi requisiti fondamentali, come già
detto, non consente righe uguali tra loro,
Grado: nella relazione risultante il
grado è minore o uguale al grado della
relazione di
partenza.
Cardinalità: nella relazione risultante la
cardinalità di norma è uguale a quella di partenza.
CONGIUNZIONE (Join)
La congiunzione (join) serve a combinare due relazioni aventi
uno o più attributi in comune generando una nuova relazione che contiene le
righe della prima e della seconda
tabella, che possono essere combinate secondo i valori uguali dell'attributo
comune.
Grado: se i gradi (cioè il numero delle colonne) delle relazioni di
partenza sono rispettivamente NI e N2, il grado della relazione generata è
uguale a N1+N2‑1, perché l'attributo comune compare una sola volta.
Cardinalità: nella
relazione risultante la cardinalità non è prevedibile a priori, in
quanto si ottengono solo le righe che possono
essere combinate attraverso i valori
presenti in entrambe le tabelle per l'attributo
comune.
ESEMPI:
Agente ( CodiceAgente,Nome,Indirizzo,CodiceZona)
Cliente (CCliente,RagioneSociale,CodiceAttività,PIVA,indircliente,Provincia,CodiceAgente)
Se Su cliente effettuiamo una Selezione ad esempio
per PROVINCIA=NU , otterremo una selezione , cioè le sole tuple della
tabella CLIENTE che hanno il valore
Provincia = Nu.
Se si vuole la lista dei soli attributi
CodiceAttività e CodiceAgente della Entità Cliente si otterrà una proiezione
di Clienti su CodiceAttività, CodiceAgente. In tal caso potranno esserci righe
uguali che andranno eliminate
L’elenco dei Clienti e dei relativi agenti si
otterrà con una operazione di Congiunzione fra la Relazione Clienti e la
Relazione Agenti secondo l’attributo comune .
Se le tabelle su cui si opera hanno una struttura
tabellare omogenea, cioè colonne con lo stesso numero di attributi, dello
stesso tipo e nello stesso ordine, si possono applicare le usuali operazioni
sugli insiemi:
UNIONE
l'unione
consente di ottenere una nuova tabella, che contiene
le righe della prima e della seconda tabella con riduzione a una di quelle
ripetute;
C=A+B
L’INTERSEZIONE
L’Intersezione
fra due tabelle consente di ottenere una nuova tabella che contiene le sole
righe comuni.
C=AxB
DIFFERENZA.
La Differenza genera una nuova tabella che contiene
soltanto le righe della prima tabella che non sono contenute nella seconda
tabella.
Ovviamente
quest'ultima operazione non è commutativa.
C=A-B
Progetto di un DBase
Un'organizzazione
internazionale raggruppa gli iscritti di diverse nazioni. Gli iscritti possono
aderire con ruoli diversi: socio ordinario, sostenitore, affiliato, ecc.;
l'importo della quota di iscrizione è libero e viene versato con pagamenti che
possono essere fatti in date diverse
(anche più versamenti nello
stesso anno senza controlli di scadenze).
Costruire il modello E/R, definendo entità, attributi e
associazioni e motivando le scelte effettuate su entità e tipo di associazioni.
Definire la procedura per la gestione dei
dati. Produrre poi con l’uso di Access le
seguenti
Operazioni ed eventuali Report.
• iscritti con cognome, nome,
telefono
• elenco degli iscritti
(cognome, nome, tipo socio) di una Nazione
• tutti i dati degli iscritti di
un determinato tipo
• pagamenti con cognome, data,
importo
• tutti i dati dei pagamenti
effettuati nell'anno in corso
• pagamenti effettuati da un
iscritto.
Analisi.dei Dati.
Le entità che possono essere individuate nel
problema sono:
• Iscritto, per rappresentare le
informazioni riguardanti i soci dell'organizzazione;
• Nazione, per gli Stati di appartenenza
degli iscritti, essendo l'organizzazione di tipo
internazionale;
• TipoAdesione, per i diversi tipi di
ruoli con i quali i soci aderiscono (socio ordinario,
sostenitore, affiliato);
• Pagamento, per i versamenti delle quote
di iscrizione.
Tabelle
TipiAdesione (ChiaveTipo, DescrTipo)
Nazioni (ChiaveNazione, DescrNazione)
Iscritti (ChiaveIscritto, Cognome, Nome, Indirizzo,
Telefono, CodiceTipo, CodiceNazione)
Pagamenti (Numero, Data, Importo, Codicelscritto).
Definizione Caratteristiche degli attributi
TipiAdesione
|
ChiaveTipo
|
Primaria
|
Carattere
|
4
|
DescrTipo
|
Carattere
|
15
|
||
Nazioni
|
ChiaveNazione
|
Primaria
|
Carattere
|
3
|
DescrNazione
|
Carattere
|
20
|
||
Iscritti
|
Chiaveiscritto
|
Primaria
|
Carattere
|
5
|
Cognome
|
Carattere
|
40
|
||
Nome
|
Carattere
|
30
|
||
Indirizzo
|
Carattere
|
30
|
||
Telefono
|
Carattere
|
12
|
||
CodiceTipo
|
Esterna
|
Carattere
|
4
|
|
CodiceNazione
|
Esterna
|
Carattere
|
3
|
|
Pagamenti
|
Numero
|
Primaria
|
Numerico
|
6
|
Data
|
Data/ora
|
8
|
||
Importo
|
Numerico
|
12
|
||
Codicelscritto
|
Esterna
|
Carattere
|
5
|
Commenti
Posta un commento