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.