194 3. RELACYJNY MODEL DANYCH
atrybutów typu B. A oczywiście krotka u jest zgodna sama ze sobą dla wszystkich pozostałych atrybutów. Zatem, jeśli zachodzi zależność funkcyjna, to zachodzi również odpow iadająca jej zależność wielowartościowa.
Reguła dopełnienia jest inną regułą, która zachodzi dla zależności wic-lowartościowych, ale nie dla funkcyjnych:
• Jeśli A)A2... A„ —*-* B-,B2... Bm zachodzi dla relacji R. to w R zachodzi również A\A2... A„ —>-> CjC2... C\, gdzie atrybuty typu C są wszystkimi tymi atrybutami R, które nie są ani typu A, ani typu B.
PR/.YKLAI) 3.46
Rozważmy ponownie relację z rys. 3.39, dla której zachodzi zależność wielowartościowa
nazwisko —*-* ulica miasto Reguła dopełnienia jest następująca:
nazwisko —*-* tytuł rok
i oczywiście jest ona spełniona w naszej relacji, ponieważ w pierwszej zależności nie ma atrybutów tytuł i rok. Tę drugą zależność odczytuje się intuicyjnie w ten sposób, że każdej gwieździe jest przyporządkowany zbiór filmów, w których ona występuje, a który jest niezależny od adresów gwiazdy.
□
Opisaną w p. 3.8.1 redundancję, która wynika z zależności wiclowarto-ściowych, można wyeliminować dzięki nowemu algorytmowi dekompozycji, który' stosuje się dla takich zależności. W bieżącym rozdziale wprowadzimy nową postać normalną nazywaną „czwartą postacią normalną”. W tej postaci nie występują ani nictrywialne (w znaczeniu opisanym poniżej) zależności wiclowartościowc, ani zależności funkcyjne, które naruszają warunek BCNF. Wobec tego, dzięki temu algorytmowi znika zarówno redundancja, wynikająca z zależności funkcyjnych omawianych w p. 3.7.4, jak i redundancja związana z zależnościami wielowartościowymi, którą opisaliśmy w p. 3.8.1.
Zależność wielowartościową w relacji R: A\A2... A„ -*-> B\B2... Bm określamy jako nietrywialną, jeśli:
1. Żaden atrybut typu B nie jest typu A.
2. Każdy atrybut i? jest albo ty pu A, albo typu B.
Warunek czwartej postaci normalnej brzmi tak samo jak warunek BCNF, t\ le że odnosi się do zależności wielowartościowych, a nie do funkcyjnych. Formalnie brzmi on następująco:
• Relacja i? jest w czwartej postaci normalnej (4NF), wtedy i tylko wtedy, gdy:
jest nictrywialną zależnością wielowartościową; {Aj, A2, ...,An} jest nadkluczem w R.
Oznacza to, że w czwartej postaci normalnej każda nictrywialna zależność wielowartościową w istocie jest zależnością funkcyjną z nadkluczem po lewej stronie. Zauważmy, żc pojęcie klucza i nadklucza jest związane tylko z zależnościami funkcyjnymi, pojęcie zależności wielowartościowej nie zmienia bowiem definicji klucza.
PRZYKŁAD 3.47
Relacja z rys. 3.39 nie jest w postaci 4NF. Na przykład, mimo że zależność wielowartościową
nazwisko —*-> ulica miasto
jest nietrywialna, to nazwisko nic stanowi nadklucza. W tej relacji jedynym kluczem są wszystkie atrybuty.
□
Czwarta postać normalna stanowi uogólnienie warunku BCNF. Przypomnijmy, ze każda zależność funkcyjna jest również wielowartościową (była o tym mowa w p. 3.8.3). A zatem, jeśli jakaś zależność nie spełnia warunku BCNF, to tym bardziej nie spełnia warunku 4NF.
Jednakże istnieją takie relacje, które spełniają warunek BCNF, ale nie są w czwartej postaci normalnej. Rysunek 3.39 jest tego dobrym przykładem. Jedynym kluczem przedstawionej tam relacji są wszystkie jej atrybuty i nie ma tam żadnych nietrywialnych zależności funkcyjnych. A zatem ta relacja jest w postaci BCNF. Ale w przykładzie 3.47 wykazaliśmy już, że nie spełnia ona warunku 4NF.
Algorytm dekompozycji 4NF stanowi pełną analogię algorytmu dekompozycji BCNF. Polega on na tym, żc znajdujemy zależność, która nie spełnia 4NF, powiedzmy, że jest to A,A2... A„ —B,B2... Bgdzie {Air A2>..., A„}