logo

Postać normalna Boyce'a-Codda (BCNF)

Warunek wstępny: Pierwsza postać normalna , Druga postać normalna , Trzecia postać normalna

Zastosowanie ogólnych definicji 2NF i 3NF może zidentyfikować dodatkową redundancję spowodowaną zależnościami naruszającymi jeden lub więcej kluczy kandydujących. Jednak pomimo tych dodatkowych ograniczeń nadal mogą istnieć zależności, które spowodują obecność redundancji w relacjach 3NF. Ta słabość 3NF spowodowała pojawienie się silniejszej postaci normalnej zwanej the Postać normalna Boyce-Codda (Codd, 1974) .



Chociaż 3NF jest odpowiednią postacią normalną dla relacyjnych baz danych, to jednak ta postać normalna (3NF) może nie usunąć 100% redundancji z powodu zależności funkcjonalnej X−>Y, jeśli X nie jest kluczem kandydującym danej relacji. Można to rozwiązać za pomocą postaci normalnej Boyce'a-Codda (BCNF).

Postać normalna Boyce'a-Codda (BCNF)

Forma normalna Boyce’a – Codda (BCNF) opiera się na zależnościach funkcjonalnych, które uwzględniają wszystkie klucze kandydujące w relacji; jednakże BCNF ma również dodatkowe ograniczenia w porównaniu z ogólną definicją 3NF.

Regulamin BCNF

Zasada nr 1: Tabela powinna być w trzeciej postaci normalnej.



Zasada 2: X powinien być superkluczem dla każdej zależności funkcjonalnej (FD) X−>Y w danej relacji.

Notatka: Aby sprawdzić, czy relacja jest w BCNF, identyfikujemy wszystkie wyznaczniki i upewniamy się, że są to klucze kandydujące.

BCNF w DBMS



Natrafiłeś na podobną hierarchię znaną jako Forma normalna Chomsky'ego w teorii obliczeń. Teraz dokładnie przestudiuj powyższą hierarchię. Można tak wywnioskować każda relacja w BCNF jest także w 3NF . Inaczej mówiąc, relacja w 3NF nie musi znajdować się w BCNF. Zastanów się przez chwilę nad tym stwierdzeniem.

Aby wyznaczyć najwyższą postać normalną danej relacji R z zależnościami funkcjonalnymi, w pierwszym kroku należy sprawdzić, czy zachodzi warunek BCNF. Jeśli okaże się, że R należy do BCNF, można bezpiecznie wywnioskować, że relacja również zachodzi 3NF , 2NF, I 1NF jak pokazuje hierarchia. 1NF ma najmniej restrykcyjne ograniczenie – wymaga jedynie, aby relacja R miała wartości atomowe w każdej krotce. 2NF ma nieco bardziej restrykcyjne ograniczenia.

3NF ma bardziej restrykcyjne ograniczenia niż pierwsze dwie normalne formy, ale jest mniej restrykcyjny niż BCNF. W ten sposób ograniczenie wzrasta w miarę przechodzenia w dół hierarchii.

Przykłady

Tutaj omówimy kilka podstawowych przykładów, które pozwolą ci zrozumieć właściwości BCNF. Omówimy tutaj wiele przykładów.

Przykład 1

Rozważmy bazę danych studentów, w której podane są dane studenta.

Ten_ID Ten_oddział Stu_Kurs Numer oddziału Stu_Course_No
101 Informatyka i inżynieria DBMS B_001 201
101 Informatyka i inżynieria Sieć komputerowa B_001 202
102 Inżynieria elektroniki i komunikacji Technologia VLSI B_003 401
102 Inżynieria elektroniki i komunikacji Komunikacja mobilna B_003 402

Zależność funkcjonalna powyższego jest taka, jak wspomniano:

Stu_ID −>Stu_Branch Stu_Course −> {Numer_oddziału, Stu_Course_No}>

Klucze kandydujące powyższej tabeli to: {This_ID, This_Course}

Dlaczego tej tabeli nie ma w BCNF?

Powyższa tabela nie znajduje się w BCNF, ponieważ jak widzimy, ani Stu_ID, ani Stu_Course nie są super kluczem. Ponieważ zasady wymienione powyżej wyraźnie mówią, że aby tabela była w BCNF, musi być zgodna z właściwością, że dla zależności funkcjonalnej X−>Y, X musi znajdować się w super kluczu i tutaj ta właściwość zawodzi, dlatego ta tabela nie jest w BCNF .

Jak zaspokoić BCNF?

Aby spełnić tę tabelę w BCNF, musimy ją rozłożyć na dalsze tabele. Oto pełna procedura, dzięki której przekształcamy tę tabelę w BCNF. Najpierw podzielmy tę główną tabelę na dwie tabele Ten_oddział I Stu_Kurs Tabela.

Tabela Stu_Branch

Ten_ID Ten_oddział
101 Informatyka i inżynieria
102 Inżynieria elektroniki i komunikacji

Klucz kandydata do tej tabeli: Ten_ID .

kody kolorów Java

Tabela Stu_Kursów

Stu_Kurs Numer oddziału Stu_Course_No
DBMS B_001 201
Sieć komputerowa B_001 202
Technologia VLSI B_003 401
Komunikacja mobilna B_003 402

Klucz kandydata do tej tabeli: Stu_Kurs .

Stu_ID do tabeli Stu_Course_No

Ten_ID Stu_Course_No
101 201
101 202
102 401
102 402

Klucz kandydata do tej tabeli: {Stu_ID, Stu_Course_No}.

Po rozłożeniu na dalsze tablice, teraz jest w BCNF, gdyż spełnia warunek Super Klucza, że ​​w zależności funkcjonalnej X−>Y, X jest Super klucz.

Przykład 2

Znajdź najwyższą postać normalną relacji R(A, B, C, D, E) z FD ustawionym jako:

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

Wyjaśnienie:

  • Krok 1: Jak widzimy, (AC)+ ={A, C, B, E, D}, ale żaden z jego podzbiorów nie może określić wszystkich atrybutów relacji, więc kluczem kandydującym będzie AC. A lub C nie można wyprowadzić z żadnego innego atrybutu relacji, zatem będzie tylko 1 klucz kandydujący {AC}.
  • Krok 2: Atrybuty pierwsze to te atrybuty, które w tym przykładzie są częścią klucza kandydującego {A, C}, a inne w tym przykładzie nie będą pierwszymi {B, D, E}.
  • Krok 3: Relacja R ma pierwszą postać normalną, ponieważ relacyjny system DBMS nie pozwala na atrybuty wielowartościowe ani złożone.

Relacja jest w 2. postaci normalnej, ponieważ BC->D jest w 2. postaci normalnej (BC nie jest właściwym podzbiorem klucza kandydującego AC), a AC->BE jest w 2. postaci normalnej (AC jest kluczem kandydującym) i B->E jest w drugiej postaci normalnej (B nie jest podzbiorem właściwym klucza kandydującego AC).

Związek jest nie w trzeciej postaci normalnej, ponieważ w BC->D (ani BC nie jest superkluczem, ani D nie jest atrybutem pierwszym) i w B->E (ani B nie jest superkluczem, ani E nie jest atrybutem pierwszym), ale aby spełnić 3. normalną dla , albo LHS FD powinien być superkluczem, albo RHS powinien być atrybutem głównym. Zatem najwyższą normalną formą relacji będzie druga forma normalna.

Notatka: Atrybut główny nie może być przechodnio zależny od klucza w relacji BCNF.

Rozważ te zależności funkcjonalne pewnej relacji R

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

Załóżmy, że wiadomo, że jedynym kluczem kandydującym R jest AB. Wymagana jest uważna obserwacja, aby stwierdzić, że powyższa zależność jest zależnością przechodnią, ponieważ atrybut główny B zależy przechodnio od klucza AB do C. Teraz pierwszy i trzeci FD znajdują się w BCNF, ponieważ oba zawierają klucz kandydujący (lub po prostu KLUCZ) po ich lewej stronie. Druga zależność jednak nie występuje w BCNF, ale na pewno jest w 3NF ze względu na obecność atrybutu pierwszego po prawej stronie. Zatem najwyższą normalną formą R jest 3NF, ponieważ wszystkie trzy FD spełniają warunki niezbędne do znalezienia się w 3NF.

Przykład 3

Rozważmy na przykład relację R(A, B, C)

A ->BC, B -> A>

Oba A i B są super kluczami, więc powyższa relacja jest w BCNF.

Notatka: Rozkład BCNF może nie zawsze być możliwy w przypadku warunku łączenia bezstratnego. Przykładowo relacja R (V, W, X, Y, Z) z zależnościami funkcjonalnymi:

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

Nie spełniałoby to zależności zachowującej rozkład BCNF.

Notatka: W relacji BCNF czasami nadal występują nadmiarowości, ponieważ nie zawsze jest możliwe ich całkowite wyeliminowanie.

Istnieją również pewne formy normalne wyższego rzędu, takie jak czwarta postać normalna i piąta postać normalna.

Więcej informacji można znaleźć w czwartej i piątej formie normalnej.