Relazione secondo Codd e forme normali
Relazione secondo Codd:
Normalizzazione: tecnica di controllo che controlla la bontà del database
1^ forma normale
Una relazione è in prima forma normale: se
- Rispetta la definizione di relazione secondo Codd
2^ forma normale
Una relazione è in seconda forma normale: se
- È in prima forma normale
- Tutti i sui attributi non chiave dipendono dalla chiave
3^ forma normale
Una relazione è in terza forma normale: se
- È in seconda forma normale
- Tutti gli attributi non chiave dipendono dalla chiave e non da altri attributi
- Per ogni dipendenza funzionale X → Y almeno una delle due condizioni è verificata:
- X contiene una chiave
- Ogni attributo di Y è contenuto in almeno una chiave
Normalmente i DB vengono progettati in 3^ forma normale
Forma normale Boyce-Codd
Una relazione è in prima forma normale: se
- È in seconda forma normale
- Data una dipendenza funzione X → Y X è detto determinante e deve valere:
- Ogni determinante è una chiave candidata
- Se una relazione ha una sola chiave corrisponde alla terza forma normale
Non è sempre raggiungibile
Altre forme normali
Nella teoria dei database relazionali esistono forme normali di ordine superiore al terzo che
risolvono situazioni di anomalia nelle operazioni sulle tabelle.
Più precisamente la quarta e la quinta forma normale risolvono i problemi che si possono creare
quando nella relazione sono presenti attributi multivalore, cioè attributi che possono assumere
più valori in corrispondenza dello stesso valore di un altro attributo. Queste forme inoltre
servono a rendere minimo il numero degli attributi che formano le chiavi composte.
Sebbene sia possibile definire tabelle anche in quarta (4FN) e quinta forma normale (5FN), di
solito è sufficiente rappresentare le relazioni nel livello di normalizzazione 3FN che, come si può
dimostrare, ha il pregio di essere sempre ottenibile senza perdita di informazioni e senza perdita
di dipendenze funzionali. Non è così invece per la forma normale di Boyce-Codd: ci sono
relazioni che non possono essere normalizzate nella forma di Boyce-Codd senza perdita di
dipendenze funzionali.
Una buona decomposizione è se:
Decomporre senza perdita: Una relazione R si decompone senza perdita nelle relazione R' e R'' se effettuando il JOIN tra R' e R'' è possibile ottenere R. La condizione sufficiente per una decomposizione senza perdita è la presenza nella relazione R di un attributo in comune ad R' e R''
Una decomposizione con perdita può generare tuple spurie.
Riuscire a decomporre rispettando i vincoli di integrità presenti sui dati. Una decomposizione rispetta i vincoli di integrità dei dati solamente se essi coinvolgono solo gli attributi che appaiono in una sola delle relazioni decomposte.
Non è sempre possibile.
.