Tercera forma normale (3NF) hè un principiu di basa di dati chì sustene l'integrità di i dati basendu annantu à i principii di nurmalizazione di basa di basa tutale da a Prima Forma Normale (1NF) è a Prima Forma Normale (2NF).
Tercera Reforma di Forma Normale
Ci hè dui duminii fundamentali per una basa di dati à esse in terza forma normale:
- A basa di dati sianu chjappi incù i bisogni di u 1NF è 2NF .
- Tutte e cungus di basa di basa dipendenu di a chjave primaria , chì significheghju u valore di qualchì columna si pò derivà da a chjave primaria solu.
Doppu a Custituzione Chjave Primariu
Scopre più ciò chì si dì di u fattu chì tutti i culleghji deve devenu da a chjave primaria.
Se u valore di a cullezione pò esse derivati da a chjave principale è una altra culonna in u tavulinu, viola 3NF. Cunsiderate a Table di l'Impiccia cù e colonnes:
- EmployeeID
- Nome
- Casata
Do both LastName and FirstName dependenu solu di u valore di EmployeeID? Pudete, Pudete Ultimate Depende di FirstName? No, perchè nunda nuddiale in LastName suggeria u valore di FirstName. Could FirstName depende LastName? Ùn tocca à novu, postu chì u listessu hè veru: quantu un LastName puderia esse, ùn puderia micca furnisce una pista di u valore di FirstName. Dunque, sta tavulu hè 3NF cumpletu.
Ma cunsiderate stu Vehicles table:
- VehicleID
- Fabbricatori
- Mudellu
U Fabricante è u Modellu puderanu derive da u VehicleID - ma u Modellu puderà ancu derivà da u Fabricante perché un mudellu di veiculu hè fattu solu da un fabricatore particular. Stu tavulu di tavola hè non-3NF cumpletu, è puderia riesce anomalii di dati. Per esempiu, pudete aghjurnà u pruduttu senza mudificà u mudellu, introduce imprecisioni.
Per fà cumpagnia, avemu bisognu di moviri a colonna dipendente supplementariu à una altra tavola è riferite cù una chjave straniera. Questu resultarà in dui tàvuli:
Vehicles Table
In u tavulu quì sottu, u ModelID hè una chjave straniera à a Table di Models :
- VehicleID
- Fabbricatori
- ModelID
Models Table
Questa nova tabella mudeli mudelli à i fabricatori. Se vulete aghjurnà qualchì veiculu di l'infurmazione nantu à un mudellu, avete da fà in questa mesa, in quantu in a tavula di i Vehicles.
- ModelID
- Fabbricatori
- Mudellu
I Campi Derivati in u Model 3NF
A tavula puderia cuntene un terrenu derivatu - una chì si computa basatu annantu à altri culonni in a tavula. Per esempiu, cunzidi stu tavulu di ordini di widget:
- Ordine Numeru
- Clienti Numeru
- Unità di Prezzi
- Quantità
- Tuttu
U cumpletu tutali di 3NF scansa perchè pò esse derivati multiplatu di u prezzu unitaru da a quantità, invece di esse di modu dipendenu à a chjave primaria. Avemu da scurdà da u tavulu per cumpensà a terza forma normale.
In fatti, siccomu esse derivatu, hè megliu micca di accade micca in a basa di dati.
Pudemu simplificà à calcule "nantu à a mosca" quandu si cumpendenu quistioni di basa di dati. Per esempiu, pudemu avè usatu prima di sta quistione per ricercà numuli di ordine è e totalità:
SELECT OrderNumber, Total FROM WidgetOrdersAvemu aduprà a seguente questa:
SELECT OrderNumber, UnitPrice * Quantità AS Total FROM WidgetOrdersper ottene i stessi risultati senza viulenza di e normi normalizazione.