logo

Normálna forma Boyce-Codda (BCNF)

Predbežná požiadavka: Prvá normálna forma , Druhá normálna forma , Tretia normálna forma

Aplikácia všeobecných definícií 2NF a 3NF môže identifikovať dodatočnú redundanciu spôsobenú závislosťami, ktoré porušujú jeden alebo viacero kandidátskych kľúčov. Napriek týmto dodatočným obmedzeniam však stále môžu existovať závislosti, ktoré spôsobia, že vo vzťahoch 3NF bude prítomná nadbytočnosť. Táto slabosť v 3NF mala za následok prezentáciu silnejšej normálnej formy tzv a Boyce-Codd Normal Form (Codd, 1974) .



Hoci 3NF je adekvátna normálna forma pre relačné databázy, táto (3NF) normálna forma nemusí odstrániť 100% redundanciu kvôli funkčnej závislosti X->Y, ak X nie je kandidátskym kľúčom daného vzťahu. Toto môže vyriešiť Boyce-Codd Normal Form (BCNF).

Normálna forma Boyce-Codda (BCNF)

Normálna forma Boyce-Codd (BCNF) je založená na funkčných závislostiach, ktoré zohľadňujú všetky kandidátske kľúče vo vzťahu; avšak BCNF má aj ďalšie obmedzenia v porovnaní so všeobecnou definíciou 3NF.

Pravidlá pre BCNF

Pravidlo 1: Tabuľka by mala byť v 3. normálnej forme.



Pravidlo 2: X by mal byť nadkľúčom pre každú funkčnú závislosť (FD) X−>Y v danom vzťahu.

Poznámka: Aby sme otestovali, či je vzťah v BCNF, identifikujeme všetky determinanty a uistíme sa, že ide o kandidátske kľúče.

BCNF v DBMS



Narazili ste na podobnú hierarchiu známu ako Chomského normálna forma v teórii výpočtov. Teraz si pozorne preštudujte vyššie uvedenú hierarchiu. Dá sa z toho usudzovať každý vzťah v BCNF je aj v 3NF . Inak povedané, vzťah v 3NF nemusí byť v BCNF. Na chvíľu sa zamyslite nad týmto tvrdením.

Na určenie najvyššej normálnej formy daného vzťahu R s funkčnými závislosťami je prvým krokom kontrola, či platí podmienka BCNF. Ak sa zistí, že R je v BCNF, možno bezpečne odvodiť, že vzťah je tiež v 3NF , 2NF, a 1NF ako ukazuje hierarchia. 1NF má najmenej obmedzujúce obmedzenie – vyžaduje len vzťah R, aby mal atómové hodnoty v každej n-tici. 2NF má o niečo prísnejšie obmedzenie.

3NF má prísnejšie obmedzenie ako prvé dve normálne formy, ale je menej reštriktívne ako BCNF. Týmto spôsobom sa obmedzenie zvyšuje, keď prechádzame nadol v hierarchii.

Príklady

Tu budeme diskutovať o niekoľkých základných príkladoch, ktoré vám umožnia pochopiť vlastnosti BCNF. Budeme tu diskutovať o viacerých príkladoch.

Príklad 1

Zoberme si databázu študentov, v ktorej sú uvedené údaje o študentovi.

Toto_ID Táto_Pobočka Stu_Course Číslo pobočky Stu_Course_No
101 Počítačová veda a inžinierstvo DBMS B_001 201
101 Počítačová veda a inžinierstvo Počítačové siete B_001 202
102 Elektronika a komunikačné inžinierstvo Technológia VLSI B_003 401
102 Elektronika a komunikačné inžinierstvo Mobilná komunikácia B_003 402

Funkčná závislosť vyššie uvedeného je taká, ako je uvedené:

Stu_ID −>Stu_Branch Stu_Course −> {Branch_Number, Stu_Course_No}>

Kľúče kandidátov vo vyššie uvedenej tabuľke sú: {This_ID, This_Course}

Prečo táto tabuľka nie je v BCNF?

Vyššie uvedená tabuľka nie je v BCNF, pretože ako vidíme, ani Stu_ID ani Stu_Course nie je super kľúč. Keďže pravidlá uvedené vyššie jasne hovoria, že na to, aby bola tabuľka v BCNF, musí spĺňať vlastnosť, že pre funkčnú závislosť X−>Y musí byť X v Super kľúči a tu táto vlastnosť zlyháva, preto táto tabuľka nie je v BCNF .

Ako uspokojiť BCNF?

Aby sme splnili túto tabuľku v BCNF, musíme ju rozložiť na ďalšie tabuľky. Tu je úplný postup, pomocou ktorého transformujeme túto tabuľku na BCNF. Najprv rozdeľme túto hlavnú tabuľku na dve tabuľky Táto_Pobočka a Stu_Course Tabuľka.

Stu_Branch Table

Toto_ID Táto_Pobočka
101 Počítačová veda a inžinierstvo
102 Elektronika a komunikačné inžinierstvo

Kandidátsky kľúč pre túto tabuľku: Toto_ID .

zahŕňajú programovanie c

Stu_Course Table

Stu_Course Číslo pobočky Stu_Course_No
DBMS B_001 201
Počítačové siete B_001 202
Technológia VLSI B_003 401
Mobilná komunikácia B_003 402

Kandidátsky kľúč pre túto tabuľku: Stu_Course .

Stu_ID do tabuľky Stu_Course_No

Toto_ID Stu_Course_No
101 201
101 202
102 401
102 402

Kandidátsky kľúč pre túto tabuľku: {Stu_ID, Stu_Course_No}.

Po rozklade na ďalšie tabuľky je teraz v BCNF, keďže spĺňa podmienku Super kľúča, že vo funkčnej závislosti X−>Y je X Super kľúč.

Príklad 2

Nájdite najvyššiu normálnu formu vzťahu R(A, B, C, D, E) s FD nastaveným ako:

{ BC->D, AC->BE, B->E}>

Vysvetlenie:

  • Krok 1: Ako vidíme, (AC)+ ={A, C, B, E, D}, ale žiadna z jeho podmnožín nemôže určiť všetky atribúty vzťahu, takže AC bude kandidátsky kľúč. A alebo C nemožno odvodiť zo žiadneho iného atribútu vzťahu, takže bude existovať iba 1 kandidátsky kľúč {AC}.
  • Krok 2: Prvotriedne atribúty sú tie atribúty, ktoré sú v tomto príklade súčasťou kandidátskeho kľúča {A, C} a ostatné v tomto príklade nebudú prvočíslo {B, D, E}.
  • Krok 3: Vzťah R je v 1. normálnej forme, pretože relačný DBMS neumožňuje viachodnotové alebo zložené atribúty.

Vzťah je v 2. normálnej forme, pretože BC->D je v 2. normálnej forme (BC nie je správnou podmnožinou kandidátskeho kľúča AC) a AC->BE je v 2. normálnej forme (AC je kandidátsky kľúč) a B->E je v 2. normálnej forme (B nie je správnou podmnožinou kandidátskeho kľúča AC).

Vzťah je nie v 3. normálnej forme, pretože v BC->D (ani BC nie je superkľúč, ani D nie je prvočíslo) a v B->E (ani B nie je superkľúč ani E nie je prvočíslo), ale na splnenie 3. normály pre , buď LHS FD by mal byť super kľúč alebo RHS by mal byť hlavný atribút. Takže najvyššia normálna forma vzťahu bude 2. normálna forma.

Poznámka: Prvotriedny atribút nemôže byť prechodne závislý od kľúča vo vzťahu BCNF.

Zvážte tieto funkčné závislosti nejakého vzťahu R

AB ->C C ->B AB ->B>

Predpokladajme, že je známe, že jediným kandidátskym kľúčom R je AB. Je potrebné starostlivé pozorovanie, aby sme dospeli k záveru, že vyššie uvedená závislosť je tranzitívnou závislosťou, keďže primárny atribút B tranzitívne závisí od kľúča AB až C. Teraz je prvý a tretí FD v BCNF, pretože oba obsahujú kandidátsky kľúč (alebo jednoducho KEY) na ich ľavej strane. Druhá závislosť však nie je v BCNF, ale určite je v 3NF kvôli prítomnosti primárneho atribútu na pravej strane. Takže najvyššia normálna forma R je 3NF, pretože všetky tri FD spĺňajú potrebné podmienky na to, aby boli v 3NF.

Príklad 3

Uvažujme napríklad vzťah R(A, B, C)

A ->BC, B -> A>

A aj B sú super kľúče, takže vyššie uvedený vzťah je v BCNF.

Poznámka: Rozklad BCNF nemusí byť vždy možný pri bezstratovom spojení. Napríklad vzťah R (V, W, X, Y, Z) s funkčnými závislosťami:

V, W ->X Y, Z -> X W -> Y>

Nespĺňalo by to závislosť zachovávajúcu rozklad BCNF.

Poznámka: Prebytočnosť je niekedy stále prítomná vo vzťahu BCNF, pretože nie je vždy možné ich úplne odstrániť.

Existujú aj niektoré normálne formy vyššieho rádu, napríklad 4. normálna forma a 5. normálna forma.

Ďalšie informácie nájdete v 4. a 5. normálnom formulári.