Lezione VD e VE: Regole di normalizzazione di un data base e l'integrità referenziale



REGOLE di NORMALIZZAZIONE

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


  1. Tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti  agli attributi.
  2. 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.
  3. 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.
  4. 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 rispet­tivamente 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

fonte: http://spol.unica.it/spol/

Commenti