Visualizzazioni totali

lunedì 21 febbraio 2011

Normalizzazione - Denormalizzazione - Query - SQL

Il processo di normalizzazione è finalizzato ad eliminare le ridondanze e le anomalie presenti all'interno di un database. La normalizzazione va utilizzata come tecnica di verifica dei risultati della progettazione di una base di dati. Non costituisce quindi una metodologia di progettazione.
Si tratta di un procedimento di tipo graduale, che realizza un'ottimizzazione progressiva a partire da relazioni non normalizzate fino a raggiungere un certo livello di normalizzazione.
Possiamo dunque individuare diverse forme di normalizzazione:  

Prima forma normale (1NF): Una relazione si dice in prima forma normale se e solo se tutti i suoi attributi sono valori atomici. Ciò implica che né gli attributi, né i valori da questi assunti possono essere scomposti ulteriormente.

Seconda forma normale (2NF): Una relazione è in seconda forma normale se e solo se soddisfa la 1NF e inoltre ciascun attributo che non fa parte della chiave è indipendente funzionalmente da una qualunque chiave candidata. Per normalizzare la relazione è necessario estrarre la dipendenza funzionale riscontrata tra un sottoinsieme della chiave e l’attributo in questione, che darà luogo ad un’altra relazione.
Terza forma di normalizzazione (3NF): La terza forma normale ha come scopo l’eliminazione dalla relazione delle dipendenze funzionali transitive. Una relazione è in terza forma normale (3NF) se, oltre ad essere in 2NF, ciascun attributo che non partecipa alla chiave non è transitivamente dipendente da una qualunque chiave candidata.
Alcuni vantaggi derivanti dalla normalizzazione sono:
Integrità dei dati (poiché non sono presenti dati ridondanti)
Query ottimizzate (poiché con le tabelle normalizzate vengono generati join veloci ed efficienti)
Operazioni più rapide di ordinamento e creazione degli indici (poiché le tabelle presentano un numero minore di colonne)
Migliori prestazioni per le istruzioni UPDATE (poiché è presente un numero minore di indici per tabella)
Migliore risoluzione della concorrenza (poiché i blocchi di tabella interessano una minore quantità di dati)

Il processo opposto alla normalizzazione è la denormalizzazione, che porta ad una ripetizione o all'aggiunta di dati non necessari, accorpando attributi appartenenti a relazioni diverse in un'unica relazione per garantire prestazioni migliori alle ricerche effettuate sulla base di dati. Lo svantaggio legato a tale processo è l’aumento della complessità del software che utilizza il database, poiché sarà direttamente responsabile dell'aggiornamento dei dati, e di conseguenza aumentano i rischi di inconsistenza dei dati conservati. Tuttavia, la presenza dell'informazione denormalizzata rende però molto più rapida la ricerca e la presentazione dei dati, in quanto l'informazione è più accessibile e più facilmente fruibile rispetto a quella ottimizzata per la gestione: le tecniche concernenti tale procedimento infatti comprendono la duplicazione dei dati, la possibilità di disporre di dati di riepilogo, la suddivisone di tabelle in partizioni orizzontali o verticali e la creazione di visualizzazioni denormalizzate che semplificano la creazione di report, lasciando invariato il database normalizzato.
La denormalizzazione è una delle tecniche più utilizzate, soprattutto nel contesto dei datawarehouse, per accelerare le performance delle query. 

Le query sono operazioni di interrogazione sui dati provenienti da una o più tabelle e che consentono di visualizzare, modificare e analizzare tali dati in modi diversi. Solitamente una query viene interpretata dal linguaggio SQL (Structured Query Language ) per renderla più comprensibile al DBMS. 



SQL è un linguaggio universale, che serve per eseguire varie operazioni sia sui dati che sulle strutture che li contengono, ad esempio per definire la struttura delle relazioni del db, per leggere, modificare e gestire i dati contenuti in una base di dati con le operazioni di inserimento, variazione e cancellazione, per creare e modificare schemi di database, per porre interrogazioni, per creare e gestire strumenti di controllo ed accesso ai dati. E’ dunque un linguaggio per la gestione di database relazionali, che assolve alle funzioni di Data Description Languge (linguaggio di descrizione dei dati e delle strutture che li conterranno), di Data Manager Language (linguaggio per la manipolazione dei dati) e di linguaggio di interrogazione.

Nessun commento:

Posta un commento