A treia formă normală ( eng. Third normal form ; prescurtat ca 3NF ) este una dintre formele normale posibile ale unei relații într-o bază de date relațională . 3NF a fost formulat inițial de E. F. Codd în 1971 .
O variabilă de relație R este în 3NF dacă și numai dacă sunt adevărate următoarele condiții:
Explicații pentru definiție:
Un atribut non-cheie al unei relații R este un atribut care nu aparține niciunei dintre cheile candidate ale lui R .
Dependența funcțională a unui set de atribute Z de un set de atribute X (scris X → Z , pronunțat „x determină z”) este tranzitivă dacă există un set de atribute Y astfel încât X → Y și Y → Z. În același timp, niciuna dintre mulțimile X , Y și Z nu este o submulțime a celeilalte, adică dependențele funcționale X → Z , X → Y și Y → Z nu sunt triviale și nu există nici o dependență funcțională Y. → X.
O definiție a 3NF echivalentă cu cea a lui Codd, dar formulată diferit, a fost dată de Carlo Zaniolo în 1982 . Potrivit acesteia, o variabilă de relație este în 3NF dacă și numai dacă fiecare dintre dependențele sale funcționale X → A satisface cel puțin una dintre următoarele condiții:
Definiția lui Zaniolo definește clar diferența dintre 3NF și forma normală Boyce-Codd (BCNF) mai strictă: BCNF elimină a treia condiție (" A este un atribut cheie").
Un rezumat memorabil și tradițional descriptiv al definiției lui Codd 3NF a fost oferit de Bill Kent : fiecare atribut non-cheie „ar trebui să ofere informații despre cheie, cheia completă și nimic altceva decât cheia” [1] .
Condiția de a depinde de „cheia completă” a atributelor non-cheie asigură că relația este în a doua formă normală; iar condiția ca aceștia să depindă de „nimic decât cheia” este ca ei să fie în a treia formă normală.
Chris Date vorbește despre rezumatul lui Kent ca pe o „trăsătură intuitivă atractivă” a 3NF și observă că, cu o ușoară modificare, poate servi și ca o definiție a formei normale Boyce-Codd mai stricte : „fiecare atribut trebuie să ofere informații despre o cheie. , o cheie plină și nimic altceva decât cheia. Versiunea lui Kent a definiției 3NF este mai puțin strictă decât versiunea normală Boyce-Codd a formulării Data, deoarece prima afirmă doar că atributele non-cheie depind de chei. Atributele primare (care sunt chei sau părți ale acestora) nu trebuie să fie deloc dependente funcțional; fiecare dintre ele oferă informații despre cheie prin furnizarea cheii în sine sau a unei părți a acesteia. Trebuie remarcat aici că această regulă este valabilă numai pentru atributele non-cheie, deoarece aplicarea acesteia tuturor atributelor va dezactiva complet toate cheile alternative complexe, deoarece fiecare element al unei astfel de chei va încălca condiția „cheie completă”.
Luați în considerare variabila relație R1 ca exemplu:
Angajat | Departament | Telefon |
---|---|---|
Grishin | Contabilitate | 11-22-33 |
Vasiliev | Contabilitate | 11-22-33 |
Petrov | Livra | 44-55-66 |
Fiecare angajat aparține exclusiv unui departament; fiecare departament are un singur telefon. Atributul Angajat este cheia primară. Angajații nu au telefoane personale, iar numărul de telefon al angajatului depinde exclusiv de departament.
În exemplu, există următoarele dependențe funcționale: Angajat → Departament , Departament → Telefon , Angajat → Telefon .
Variabila de relație R1 este în a doua formă normală deoarece fiecare atribut are o dependență funcțională ireductibilă de potențialul cheie Employee .
Relația Angajat → Telefon este tranzitivă, deci relația nu este în a treia formă normală.
Împărțirea R1 are ca rezultat două variabile de relație care sunt în 3NF:
Departament | Telefon |
---|---|
Contabilitate | 11-22-33 |
Livra | 44-55-66 |
Angajat | Departament |
---|---|
Grishin | Contabilitate |
Vasiliev | Contabilitate |
Petrov | Livra |
Relația inițială R1, dacă este necesar, se obține ușor ca urmare a operației de unire a relațiilor R2 și R3.
forme normale | |
---|---|