domenica 2 novembre 2008

A proposito di DBMS: normalizzazione, Relazioni, Ridondanza e Integrità Referenziale

- La normalizzazione può essere definita come il processo di organizzazione dei dati in un database. Un simile processo comprende la creazione di tabelle e la definizione di relazioni tra queste sulla base di regole progettate in modo da proteggere i dati e rendere il database più flessibile, tramite l'eliminazione della ridondanza e delle dipendenze incoerenti. Infatti, la presenza di dati ridondanti comporta uno spreco di spazio su disco nonché problemi di manutenzione.

Per la normalizzazione dei database si seguono alcune regole, ciascuna delle quali viene definita "forma normale". Se si osserva la prima regola, il database sarà nella "prima forma normale". Se si osservano le prime tre regole, il database sarà nella "terza forma normale". Sebbene siano possibili altri livelli di normalizzazione, la terza forma normale è considerata il livello massimo necessario per la maggior parte delle applicazioni. Più nello specifico è possibile precisare che:
  1. La "prima forma normale" richiede l’eliminazione dei gruppi e dei dati ripetuti nelle singole tabelle; creare delle tabelle separate per ciascun insieme di dati correlati; ed, infine, associare una chiave primaria a ciascun set di dati correlati.
  2. La "seconda forma normale" consiste nell'eliminare dalla tabella principale tutto ciò che è ridondante, creando tabelle diverse per insiemi di valori validi per più record e correlando queste tabelle ad una chiave esterna.
  3. La "terza forma normale" consiste in una ulteriore eliminazione delle ridondanze eliminando i campi che non dipendono dalla chiave.

- Le Relazioni. In ambito informatico e soprattutto nello specifico in quello delle basi di dati il concetto di relazione è strettamente connesso al modello relazionale.
Il Modello Relazionale è fondamentalmente un modello logico di rappresentazione dei dati che viene ad essere utilizzato come base per l'implementazione dei DBMS, che vengono perciò detti RDBMS. Tale modello si basa sostanzialmente sull'algbra relazionale e sulla teoria degli insiemi e ruota ovviamente attorno al concetto di realzione (intesa come tabella). Infatti, il postulato alla base di un tale disegno è che tutti i dati siano rappresentati come relazioni e manipolati con gli operatori dell'algebra relazionale.


- La Ridondanza. Questo termine, che di per sè è traducibile come superfluo o eccessivo, con riferimento ad un database è una caratteristica negativa che allude alla duplicazione di dati che saranno perciò presenti in più archivi dello stasso DB con conzeguenze negative sul processo di normalizzazione ovvero efficienza stessa di quest'ultimo.


- L'integrità Referenziale o Referential integrity è una delle regole fondamentali del Modello Relazionale dei DB che garantisce l'integrità dei dati quando si hanno relazioni tra tabelle associate tra loro attraverso la chiave esterna. Queste regole, più nello specifico, hanno la funzione di validare le associazioni tra le tabelle ed eliminare gli errori di inserimento, cancellazione o modifica di dati collegati tra loro.
Essa viene fondamentalmente osservata qualora per ogni valore non nullo della chiave esterna esista un valore corrispondente della chiave primaria della tabella associata.

Volendo fare un ESEMPIO, prendiamo un DB relazionale che contenga una tabella Clienti e una Ordini: il codice del cliente dalla tabella Ordini sarà associato alla chiave della tabella Clienti.


Le regole fondamentali da seguire per far sì che l'integrità referenziale venga rispettata sono le seguenti:
  • Non è concesso riscontrare la presenza di un valore nella chiave esterna di una tabella associata se tale valore non esiste tra le chiavi della tabella primaria. E', invece, possibile mettere un valore nullo nella chiave esterna, volendo con ciò indicare che le righe non sono correlate;
  • Non è possibile eliminare una tupla della tabella primaria, se esistono delle righe legate ad essa tramite la chiave esterna nella tabella correlata;
  • Non è, ovviamente, possibile modificare il valore alla chiave primaria se ad essa corrispondono delle righe nella tabella correlata.

Nessun commento: