Forme Normali
Dipendenze funzionali, prima, seconda e terza forma normale (1NF, 2NF, 3NF) e forma normale di Boyce-Codd; decomposizione senza perdita per eliminare ridondanza e anomalie.
Una forma normale è una proprietà che deve essere soddisfatta dagli attributi di ogni schema di relazione in un database, esse garantiscono la "qualità" di un database, perchè quando non nomralizzato, un database può contenere ridondanza e crea problemi in fase di aggiornamento dei dati
Le principali problematiche sono date dalla Ridondanza, che da anomalie di aggiornamento, cancellazione e inserimento.
Dipendenza funzionale
Per scoprire e rimuovere le anomalie in uno schema del modello logico si devono scoprire le relazioni dette Dipendenze Funzionali (DF) che fissano ulteriori vincoli di integrità di uno schema di relazione
Lo si nota tramite la sintassi che indica una dipendenza funzionale da Y a Z, dove Y e Z sono attributi di una relazione. Si legge come Y determina Z oppure Z dipende funzionalmente da Y
Consideriamo una relazione e due sottoinsiemi non vuoti , esiste una Dipendenza Funzionale da Y a Z () se per ogni coppia di tuple di r, che hanno gli stessi valori su Y, risulta che hanno gli stessi valori anche in Z, cioè che:
Esempio:

- Lo stipendio dipende dall'impiegato
- Il bilancio dipende dal progetto
Chiavi e attributi
Tutti gli attributi che sono parte di almeno una chiave si dice Attributo primo, mentre uno che non fa parte di alcuna chiave è detto Attributo non primo.
Se è una chiave dello schema allora ogni attributo non primo dipende funzionalmente da , quindi il vincolo di DF , dove , generalizza il vincolo di chiave
Se e risulta che anche , e Y è una chiave per uno schema R, allora anche Z è una chiave. Una dipendenza funzionale è detta completa se Z non dipende da nessun altro sottoinsieme di Y, cioè che se Y è una chiave, se la dipendenza funzionale è completa, Z deve dopendere da tutta la chiave e non anche da parte di essa
Prima forma normale (1NF)
Uno Schema di relazione è detto essere in prima forma normale se ogni attibuto di è un attributo semplice. Nel modello relazionale, è per definizione in 1NF. Quindi ne segue che ogni attributo di non primo dipende funzionalmente da una chiave di
Un esempio di relazione non in 1NF è quando contiene un attributo multivalore, come una lista, per esempio, Corsi e Indirizzo sono dati multivalore e strutturati, quindi non in 1NF

E può essere trasformato in 1NF normalizzando la colonna Corsi e Indirizzo

Seconda forma normale (2NF)
Uno schema di relazione è detto in 2NF, se è in 1NF e ogni attributo non primo dipende completamente da ogni chiave di , cioè ogni dipendenza funzionale dipende solo da un attributo primo, ed in generale, se ogni chiave di ha un solo attributo, allora è in 2NF

DF1: DF2:
In DF1, città dipende funzionalmente da Articolo e Magazzino
Uno schema che non soddisfa la 2NF può essere normalizzato decomponendo le relazioni che non soddisfano la 2NF, cioè viene decomposta in base agli attributi non comuni in modo tale che le relazioni ottenute soddisfino la 2NF e che il contenuto informativo del database sia uguale.

Decomposizione senza perdita
Si dice decomposizione senza perdita se uno schema si decompone in e se per ogni istanza legale r di , il JOIN naturale delle proiezioni di r su e è uguale a r, cioè che:
oppure che valga che , oppure, , cioè che una decomposizione è garantita essere senza perdita se gli attributi comuni contengono una chiave per almeno una delle relazioni decomposte

Terza forma normale (3NF)
Dato uno schema di relazione , un attributo dipende transitivamente dall'insieme di attributi se esiste un altro insieme di attributi tale che:
- e -/->
- e -/->
Uno schema di relazione è in 3NF se è in 2NF e ogni attributo non primo di dipende in modo non transitivo da ogni chiave di , cioè che dipende solo dalle chiavi.
Un altro modo per definirlo è che è in 3NF se per ogni DF definita su
- Y è una superchiave di . Ogni dipendenza funzionale è completa
- Z è un attributo primo. Se è un attributo non primo, Z deve essere un attributo primo
Riassumendo
- 1NF: ogni attributo non primo dipende dalla chiave
- 2NF: ogni attributo non primo dipende da tutta la chiave
- 3NF: ogni attributo non primo dipende solo dalla chiave
Forme normale di Boyce e Codd
Uno schema di relazione è in forma normale di Boyce e Codd se ogni dipendenza funzionale definita su , è una superchiave.
Se uno schema di relazione è in forma normale di Boyce e Codd, allora è anche in 3NF, ma non viceversa