Forma normală Boyce -Codd (abreviată ca BCNF din engleză. Forma normală Boyce-Codd ) este una dintre formele normale posibile ale unei relații într-un model de date relaționale .
Uneori forma normală Boyce-Codd este numită a treia formă normală puternică deoarece este mai puternică (mai strictă) în toate privințele în comparație cu 3NF definită anterior [1] .
Numit după Ray Boyce și Edgar Codd , deși Christopher Date subliniază că, de fapt, o definiție strictă a „a treia” formă normală, echivalentă cu cea a formei normale Boyce-Codd, a fost dată pentru prima dată de Ian Heath în 1971 , așa că această formă ar trebui să fie numită „forma normală a lui Heath” [1] .
O variabilă de relație este în BCNF dacă și numai dacă fiecare dintre dependențele sale funcționale netriviale și ireductibile la stânga are ca determinant o cheie potențială [1] .
Mai puțin formal, o variabilă de relație este în formă normală Boyce-Codd dacă și numai dacă determinanții tuturor dependențelor sale funcționale sunt chei candidate.
Pentru a defini BCNF, ar trebui să înțelegem conceptul de dependență funcțională a atributelor relației.
Fie R o variabilă relație, iar X și Y subseturi arbitrare ale setului de atribute ale variabilei relație R . Y este dependent funcțional de X dacă și numai dacă, pentru orice valoare validă a variabilei relației R , dacă două tuple ale variabilei relației R se potrivesc în valoarea lui X , ele se potrivesc și în valoarea lui Y . Submulțimea X se numește determinant , iar Y este partea dependentă .
O dependență funcțională este trivială dacă și numai dacă partea sa dreaptă (dependentă) este o submulțime a părții sale stângi (determinant).
Se spune că o dependență funcțională este lăsată ireductibilă dacă niciun atribut nu poate fi omis din determinantul său fără a încălca dependența (cu alte cuvinte, determinantul este iredundant).
Situația în care relația va fi în 3NF, dar nu în BCNF apare, de exemplu, dacă relația are două (sau mai multe) chei candidate care sunt compuse și există o dependență funcțională între atributele individuale ale acestor chei. Deoarece dependența descrisă nu este tranzitivă, o astfel de situație nu se încadrează în definiția 3NF. În practică, astfel de relații sunt destul de rare; pentru toate celelalte relații, 3NF și BCNF sunt echivalente.
Să presupunem că luăm în considerare o relație care reprezintă date privind rezervările de terenuri de tenis pentru ziua respectivă:
Numărul tribunalului | Timpul de începere | Sfârșitul timpului | Rată |
---|---|---|---|
unu | 09:30 | 10:30 | „Tribunalul 1 pentru membrii clubului” |
unu | 11:00 | 12:00 | „Tribunalul 1 pentru membrii clubului” |
unu | 14:00 | 15:30 | „Tribunalul 1 pentru non-membrii clubului” |
2 | 10:00 | 11:30 | „Tribunalul 2 pentru non-membrii clubului” |
2 | 11:30 | 13:30 | „Tribunalul 2 pentru non-membrii clubului” |
2 | 15:00 | 16:30 | „Tribunalul 2 pentru membrii clubului” |
Astfel, sunt posibile următoarele chei potențiale compuse: { Numărul tribunalului , Ora începerii }, { Numărul tribunalului , Ora sfârșitului }, { Tariful , Ora începerii } , { Tariful , Ora sfârșitului }.
Relația este în a doua ( 2NF ) și a treia ( 3NF ) formă normală. Cerințele celei de-a doua forme normale sunt satisfăcute, deoarece toate atributele sunt incluse într-una dintre cheile potențiale și nu există atribute non-cheie în relație. De asemenea, nu există dependențe tranzitive, ceea ce îndeplinește cerințele celei de-a treia forme normale. Cu toate acestea, există o dependență funcțională Tarif → Număr de instanță în care partea stângă (determinantul) nu este o cheie potențială a relației, adică relația nu este în forma normală Boyce-Codd .
Dezavantajul acestei structuri este că, de exemplu, este posibil să se atribuie în mod eronat tariful „Membrii Curții 1” rezervării celei de-a doua instanțe, deși se poate aplica doar primei instanțe.
Puteți îmbunătăți structura prin descompunerea relației în două, obținând relații care satisfac BCNF (atributele incluse în cheia primară sunt subliniate). Pentru o mai mare claritate, atributul Pentru membrii clubului a fost adăugat la informațiile despre tarife :
Rată | Numărul tribunalului | Pentru membrii clubului |
---|---|---|
„Tribunalul 1 pentru membrii clubului” | unu | da |
„Tribunalul 1 pentru non-membrii clubului” | unu | Nu |
„Tribunalul 2 pentru membrii clubului” | 2 | da |
„Tribunalul 2 pentru non-membrii clubului” | 2 | Nu |
Rată | Timpul de începere | Sfârșitul timpului |
---|---|---|
„Tribunalul 1 pentru membrii clubului” | 09:30 | 10:30 |
„Tribunalul 1 pentru membrii clubului” | 11:00 | 12:00 |
„Tribunalul 1 pentru non-membrii clubului” | 14:00 | 15:30 |
„Tribunalul 2 pentru non-membrii clubului” | 10:00 | 11:30 |
„Tribunalul 2 pentru non-membrii clubului” | 11:30 | 13:00 |
„Tribunalul 2 pentru membrii clubului” | 15:00 | 16:30 |
Rusă
Transferabil
străin
forme normale | |
---|---|