172 3. RELACYJNY MODEL DANYCH
a w innych krotkach Gwiezdnych wojen — nie, wystąpi anomalia modyfikacji. Otóż założenia, dotyczące zależności funkcyjnych, nie zabraniają wystąpienia filmu o takiej samej nazwie i innym roku produkcji, czyli innych Gwiezdnych Wojen, wyprodukowanych na przykład w 1997 roku zCarrie Fisher w charakterze gwiazdy. A zatem nie należy wprowadzać mechanizmów- uniemożliwiających tego typu modyfikacji, a dodatkowo, taka zmiana wcale nie musi być błędem.
Zadanie dekompozycji polega na zastąpieniu relacji równoważnym jej zbiorem relacji, których struktura uniemożliwia wystąpienie anomalii. Okazuje się, żc istnieje prosty warunek, którego spełnienie zapewnia, że w schemacie nie występują anomalie, które powyżej omówiliśmy. Warunek ten nazywa się postacią normalną Boyce’a-Codda lub w skrócie BCNF (Boyce--Codd nor mai form).
• Relacja R jest w postaci BCNF wtedy i tylko wtedy, gdy dla każdej nietrywialnej zależności Au Au -,An —* B zbiór {Au A2, ...,A„} jest nadkluczem R.
To znaczy, że lewa strona każdej zależności nietrywialnej musi być nadkluczem. Przypomnijmy, że nadklucz nic musi spełniać warunku minimalności. Można sformułować więc warunek równoważny do BCNF, który stwierdza, że lewa strona każdej nietrywialnej zależności funkcyjnej musi zawierać klucz.
Jeśli odnajdzie się zależność, która narusza warunek BCNF, to czasami warto odszukać wszystkie inne zależności o takiej samej lewej stronie, bez względu na to czy one też naruszają ten warunek, czy nie. Poniżej przedstawiamy alternatywną definicję BCNF, w której poszukuje się wszystkich zależności o takich samych lewych stronach, z których co najmniej jedna jest nietrywialna i narusza warunek BCNF.
• Relacja 7? jest w- postaci BCNF wtedy i tylko wtedy, gdy dla każdej nietrywialnej zależności A\ A2...A„ —* B\B2...Bm zachodzącej w R, zbiór [A], A2,..., An} jest nadkluczem R.
Powyższy warunek jest równoważny pierwszej definicji BCNF. Przypomnijmy, że zapis A\ A2... A,, —> B\B2... Z?* jest skrótem zapisu A\A2... A„ —* Bir dla /= 1, 2,..., m. Ponieważ musi istnieć co najmniej jedno i takie, że B, nie jest typu A (w przeciwnym przypadku zależność A, A2... A» —► B\B2... Bm byłaby trywialna), zatem A,A2...Ar —* B; naruszałoby warunek BCNF według pierwotnej definicji.
PRZYKŁAD 3.33
Relacja Film z rys. 3.30 nie jest w postaci BCNF. Aby uzasadnić to stwierdzenie, najpierw wyodrębnimy zbiór atrybutów tworzących klucz. W przykładzie 3.21 podaliśmy powody tego, że zbiór {tytuł, rok, nazwisko-Gwiazdy) stanowi klucz. A zatem każdy zbiór zawierający wymienione trzy atrybuty jest nadkluczem. Te same argumenty, których użyliśmy w przykładzie 3.21, mogą posłużyć do uzasadnienie tego, że żaden zbiór, który nie zawiera wszystkich trzech atrybutów . nie może być nadkluczem. Stąd wynika więc, że atrybuty {tytuł, rok, nazwiskoGwiazdy} są jedynym kluczem relacji Film.
Ale rozważmy z kolei zależność funkcyjną:
tytuł rok —* długość typFiimu nazwaStudia
która zachodzi w relacji Film. Przypomnijmy, że wynikła ona z faktu, że w projekcie w języku ODL kluczem był zbiór {tytuł, rok}, a poza tymi zawierał on atrybuty jednowartościowe długość i typFiimu oraz jedno-wartościowy związek należyDo, który prowadził do studia producenta.
Ale lewa strona tej zależności nie jest nadkluczem. Wiadomo przecież, że atrybuty tytuł i rok nic wyznaczają jednoznacznie szóstego atrybutu nazwiskoGwiazdy. A zatem ta zależność stanowi naruszenie warunku BCNF, a stąd wynika, że relacja Film nie jest w postaci BCNF. A co więcej, jeśli zastosujemy pierwotną definicję BCNF, gdzie po prawej stronie występuje jeden atrybut, to możemy wskazać aż trzy zależności takie jak np. tytuł rok —» długość, które są naruszeniem warunku BCNF.
□
PRZYKŁAD 3.34
Relacja Filml, przedstawiona na rys. 3.31, jest w postaci BCNF. Ponieważ zależność
tytuł rok —► długość typFiimu nazwaStudia
zachodzi dla tej relacji, ale ani atrybut rok, ani atrybut tytuł samoistnie nic wyznaczają jednoznacznie pozostałych atrybutów', więc jedynym kluczem relacji filml może być zbiór {tytuł, rok}. Ponadto jedyna nietrywialna zależność funkcyjna musi mieć z lewej strony co najmniej tytuł i rok, co prowadzi do wniosku, że jej lewe strony muszą być nadkluczem. Stąd też wynika, że Filml jest w postaci BCNF.
□
PRZYKŁAD 3.35
Każda relacja binarna (o dwóch atrybutach) jest w postaci BCNF. Aby uzasadnić takie twierdzenie, sprawdzimy wszystkie nietrywialne zależności, któ-