Předpoklad: První normální forma , Druhá normální forma , Třetí normální forma
Aplikace obecných definic 2NF a 3NF může identifikovat další redundanci způsobenou závislostmi, které porušují jeden nebo více kandidátských klíčů. Navzdory těmto dodatečným omezením však stále mohou existovat závislosti, které způsobí přítomnost redundance ve vztazích 3NF. Tato slabost v 3NF vyústila v prezentaci silnější normální formy tzv a Boyce-Codd Normal Form (Codd, 1974) .
Ačkoli 3NF je adekvátní normální forma pro relační databáze, přesto tato (3NF) normální forma nemusí odstranit 100% redundanci kvůli funkční závislosti X−>Y, pokud X není kandidátním klíčem daného vztahu. To lze vyřešit pomocí Boyce-Codd Normal Form (BCNF).
Normální forma Boyce-Codda (BCNF)
Boyce–Codd Normal Form (BCNF) je založen na funkčních závislostech, které berou v úvahu všechny kandidátské klíče ve vztahu; nicméně BCNF má také další omezení ve srovnání s obecnou definicí 3NF.
Pravidla pro BCNF
Pravidlo 1: Tabulka by měla být ve 3. normální formě.
Pravidlo 2: X by měl být superklíč pro každou funkční závislost (FD) X−>Y v daném vztahu.
Poznámka: Abychom otestovali, zda je vztah v BCNF, identifikujeme všechny determinanty a ujistíme se, že jde o kandidátské klíče.
BCNF v DBMS
Narazili jste na podobnou hierarchii známou jako Chomského normální forma v teorii počítání. Nyní si pečlivě prostudujte výše uvedenou hierarchii. Z toho lze usuzovat každý vztah v BCNF je také v 3NF . Jinými slovy, vztah v 3NF nemusí být v BCNF. Přemýšlejte chvíli nad tímto tvrzením.
K určení nejvyšší normální formy daného vztahu R s funkčními závislostmi je prvním krokem kontrola, zda platí podmínka BCNF. Pokud se zjistí, že R je v BCNF, lze bezpečně odvodit, že vztah je také v 3NF , 2NF, a 1NF jak ukazuje hierarchie. 1NF má nejméně omezující omezení – vyžaduje pouze vztah R, aby měl atomové hodnoty v každé n-tice. 2NF má o něco více restriktivní omezení.
3NF má restriktivnější omezení než první dvě normální formy, ale je méně restriktivní než BCNF. Tímto způsobem se omezení zvyšuje, když procházíme hierarchií dolů.
Příklady
Zde probereme některé základní příklady, které vám umožní pochopit vlastnosti BCNF. Probereme zde několik příkladů.
Příklad 1
Podívejme se na databázi studentů, ve které jsou uvedeny údaje o studentovi.
Toto_ID | Tato_Pobočka | Stu_Course | Číslo pobočky | Stu_Course_No |
---|---|---|---|---|
101 | Počítačová věda a inženýrství | DBMS | B_001 | 201 |
101 | Počítačová věda a inženýrství | Počítačové sítě | B_001 | 202 |
102 | Elektronika a komunikační inženýrství | Technologie VLSI | B_003 | 401 |
102 | Elektronika a komunikační inženýrství | Mobilní komunikace | B_003 | 402 |
Funkční závislost výše uvedeného je taková, jak je uvedeno:
Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>
Klíče kandidátů ve výše uvedené tabulce jsou: {This_ID, This_Course}
Proč tato tabulka není v BCNF?
Výše uvedená tabulka není v BCNF, protože jak vidíme, ani Stu_ID ani Stu_Course nejsou Super klíč. Jak výše zmíněná pravidla jasně říkají, že aby tabulka byla v BCNF, musí splňovat vlastnost, že pro funkční závislost X−>Y musí být X v Super klíči a zde tato vlastnost selhává, proto tato tabulka není v BCNF .
Jak uspokojit BCNF?
Pro splnění této tabulky v BCNF ji musíme rozložit na další tabulky. Zde je úplný postup, pomocí kterého transformujeme tuto tabulku na BCNF. Rozdělme nejprve tuto hlavní tabulku na dvě tabulky Tato_Pobočka a Stu_Course Stůl.
Stu_Branch Table
Toto_ID | Tato_Pobočka |
---|---|
101 | Počítačová věda a inženýrství |
102 | Elektronika a komunikační inženýrství |
Kandidátský klíč pro tuto tabulku: Toto_ID .
včetně programování c
Stu_Course Table
Stu_Course | Číslo pobočky | Stu_Course_No |
---|---|---|
DBMS | B_001 | 201 |
Počítačové sítě | B_001 | 202 |
Technologie VLSI | B_003 | 401 |
Mobilní komunikace | B_003 | 402 |
Kandidátský klíč pro tuto tabulku: Stu_Course .
Stu_ID do tabulky Stu_Course_No
Toto_ID | Stu_Course_No |
---|---|
101 | 201 |
101 | 202 |
102 | 401 |
102 | 402 |
Kandidátský klíč pro tuto tabulku: {Stu_ID, Stu_Course_No}.
Po rozkladu na další tabulky je nyní v BCNF, jelikož splňuje podmínku Super Key, že ve funkční závislosti X−>Y je X Super klíč.
Příklad 2
Najděte nejvyšší normální tvar vztahu R(A, B, C, D, E) s FD nastaveným jako:
{ BC->D, AC->BE, B->E}>
Vysvětlení:
- Krok 1: Jak vidíme, (AC)+ ={A, C, B, E, D}, ale žádná z jeho podmnožin nemůže určit všechny atributy vztahu, takže AC bude kandidátním klíčem. A nebo C nelze odvodit z žádného jiného atributu vztahu, takže bude existovat pouze 1 kandidátský klíč {AC}.
- Krok 2: Prvotřídní atributy jsou atributy, které jsou v tomto příkladu součástí kandidátského klíče {A, C} a ostatní v tomto příkladu nebudou prvočíslo {B, D, E}.
- Krok 3: Relace R je v 1. normální formě, protože relační DBMS neumožňuje vícehodnotové nebo složené atributy.
Vztah je ve 2. normální formě, protože BC->D je ve 2. normální formě (BC není vlastní podmnožinou kandidátského klíče AC) a AC->BE je ve 2. normální formě (AC je kandidátský klíč) a B->E je ve 2. normální formě (B není správná podmnožina kandidátského klíče AC).
Vztah je ne ve 3. normální formě, protože v BC->D (ani BC není superklíč, ani D není prvočíslo) a v B->E (ani B není superklíč ani E není prvočíslo), ale pro splnění 3. normálu pro , buď LHS FD by měl být super klíč nebo RHS by měl být primární atribut. Takže nejvyšší normální forma vztahu bude 2. normální forma.
Poznámka: Prvotřídní atribut nemůže být přechodně závislý na klíči ve vztahu BCNF.
Uvažujme tyto funkční závislosti nějaké relace R
AB ->C C ->B AB ->B>
Předpokládejme, že je známo, že jediným kandidátním klíčem R je AB. Je třeba pečlivého pozorování, abychom dospěli k závěru, že výše uvedená závislost je tranzitivní závislostí, protože primární atribut B tranzitivně závisí na klíči AB až C. Nyní jsou první a třetí FD v BCNF, protože oba obsahují kandidátský klíč (nebo jednoduše KEY) na jejich levé straně. Druhá závislost však není u BCNF, ale rozhodně je u 3NF kvůli přítomnosti primárního atributu na pravé straně. Nejvyšší normální formou R je tedy 3NF, protože všechny tři FD splňují nezbytné podmínky, aby byly v 3NF.
Příklad 3
Uvažujme například vztah R(A, B, C)
A ->BC, B -> A>
A i B jsou super klíče, takže výše uvedený vztah je v BCNF.
Poznámka: Rozklad BCNF nemusí být vždy možný při bezeztrátovém spojení. Například vztah R (V, W, X, Y, Z) s funkčními závislostmi:
V, W ->X Y, Z -> X W -> Y>
Nesplňovalo by to závislost zachovávající rozklad BCNF.
Poznámka: Redundance jsou někdy stále přítomny ve vztahu BCNF, protože není vždy možné je úplně odstranit.
Existují také některé normální formy vyššího řádu, jako je 4. normální forma a 5. normální forma.
Více viz 4. a 5. normální formulář .