Normalizzazione

mercoledì 02 aprile 2008 - 18.52

gasp84 Profilo | Newbie

Buonsera a tutti,

volevo avere un parere sulla convenienza di normalizzare una relazione dati.
La mia situazione è la seguente:

ho un'unica tabellona da 26000 righe (quindi relativamente poche).
Poniamo caso che questa tabellona contenga l'elenco di tutti i comuni d'italia (è un esempio) con i seguenti campi:

Id_Comune|Nome_Comune|N_Abitanti|Sigla|Id_Provincia|Nome_provincia|Id_Regione|Nome_Regione|Id_Nazione|Nome_Nazione

La sorgente dati arriva dall'anagrafica del cliente...al fine di sviluppare un applicazione web è stato creato un db ad hoc in cui periodicamente verranno importati i dati provenienti da questa tabellona piatta.

Vista la struttura della tabella avevo pensato di normalizzare il tutto scindendo il "tabellone" in 4 tabelle (Comune,Provincia,regione,nazione)...(so che la tabella nazione non ha senso ma ripeto è solo un esempio)
Facendo in questo modo il numero di righe delle 4 tabelle diventerebbe 26000,750,45,15 (questi sono dati reali).

Sono piuttosto sicuro che per questioni di chiarezza e di manutenibilità del db è sicuramente meglio applicare il processo di normalizzazione. Se invece si considera semplicemente l'aspetto "performance", ho letto in giro, che la denormalizzazione porta dei vantaggi non trascurabili.

La domanda è: considerata anche la dimensione delle tabelle in questione mi consigliereste di normalizzare o no (considerando che l'applicazione web non dovrà sopportare grossi carichi di lavoro)?

grazie

Roberto

lbenaglia Profilo | Guru

>Sono piuttosto sicuro che per questioni di chiarezza e di manutenibilità
>del db è sicuramente meglio applicare il processo di normalizzazione.
>Se invece si considera semplicemente l'aspetto "performance",
>ho letto in giro, che la denormalizzazione porta dei vantaggi
>non trascurabili.
>
>La domanda è: considerata anche la dimensione delle tabelle in
>questione mi consigliereste di normalizzare o no (considerando
>che l'applicazione web non dovrà sopportare grossi carichi di
>lavoro)?

Ciao Roberto,

Quando si progetta lo schema di un database OLTP, si procede SEMPRE a normalizzarne la struttura almeno fino alla 3a forma normale, in modo da eliminare la ridondanza dei dati.
Nel momento in cui un eventuale test di carico metta in evidenza problemi di performance non risolvibili con una corretta politica di indicizzazione, di isolation level o con la riscrittura del codice critico, allora si procede ad una OCULATA denormalizzazione, prevedendo in modo conscio alla gestione delle informazioni duplicate (generalmente tramite triggers).

Personalmente non mi sono quasi mai scontrato con questo genere di problemi, prediligendo una struttura normalizzata.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5