IOH 3. RELACYJNY MUUfcLUAMUi
Wszystkie 4 krotki mają tę samą wartość składowej H równą 2, a więc każda krotka z jednej relacji może zostać połączona z każdą krotką relacji drugiej. A więc przy próbie odtworzenia relacji R w wyniku połączenia otrzymamy:
A |
B |
C |
1 |
2 |
3 |
1 |
2 |
5 |
4 |
2 |
3 |
4 |
2 |
5 |
Powstało „zbył wiele”, dostaliśmy bowiem dwie fałszywe krotki (1, 2, 5) oraz (4, 2, 3), których nic było w relacji R.
Czasami okazuje się , że schemat relacji oraz zależności nie spełniają warunku BCNF, ale nie przeprowadza się dla nich dekompozycji. Oto typowy przykład takiej sytuacji.
PRZYKŁAD 3.42
Załóżmy, że zdefiniowano relację Zamówienia o następujących atrybutach:
1. tytuł, który jest tytułem filmu.
2. kino jest nazwą kina, w którym ma być wyświetlany film.
3. miasto jest siedzibą kina.
Krotka (m, i, c) określa, że film zatytułowany jest wyświetlany w kinie / w mieście c.
Dadzą się tu wyodrębnić następujące zależności funkcyjne:
kino —► miasto tytuł miasto —► kir.c
Z pierwszej z nich wiadomo, że dane kino znajduje sic w jednym mieście. Druga, być może, nic jest oczywista, ale wynika z praktyki zamówień, która polega na tym, że nie zamawia się jednego filmu do dwóch różnych kin w tym samym mieście. Ta zależność służy nam zresztą tylko jako przykład.
Na początku spróbujemy określić klucze. Żaden pojedynczy atrybut nie jest kluczem. Na przykład tytuł nic jest kluczem, ponieważ film może być wyświetlany w kilku kinach i kilku miastach w tym samym czasie*. Kino
’ W tym przykładzie zakładamy, żc nic ma w danym momencie dwóch różnych filmów o tym samym tytule, mimo że poprzednio rozważaliśmy przypadek współistnienia filmów tak samo tytułowanych, ale produkowanych w innych łatach.
również nie jest kluczem. Mimo że miasto zależy funkcyjnie od atrybutu kino, to przecież istnieją kina z kilkoma salami, gdzie wyświetla się wiele filmów na raz. W końcu samo miasto również nie stanowi klucza, ponieważ na ogół w jednym mieście jest wiele kin i wyświetla się w nich różne filmy.
Ale zbiory z dwoma lub trzema atrybutami są kluczami. Niewątpliwie {tytuł, miasto} jest kluczem, ponieważ jedna z zależności funkcyjnych określa. że wartość trzeciego atrybutu kino jest zależna od tych dwóch wartości.
Również para {kino, tytuł} jest kluczem. Aby stwierdzić dlaczego tak jest, rozważymy zależność kino —» miasto. Zastosowanie zasady rozszerzenia z ćwiczenia 3.6.3 (a) powoduje, że również zależność tytuł, kino -> miasto jest spełniona. Nawet postępując intuicyjnie wiadomo, że jeśli miasto zależy funkcyjnie od atrybutu kino, lo tym bardziej od pary kino i tytuł.
Pozostała jeszcze para atrybutów miasto oraz kino. Ale atrybut tytuł nic zależy od niej funkcyjnie, a więc nie jest to klucz. A zatem jedynymi kluczami są:
{tytuł, miasto}
{kino, tytuł}
Natychmiast można zauważyć naruszenie warunku BCNF. Bowiem została określona zależność funkcyjna kino —► miasto, ale jej lewa strona, kir.o, nie jest nadkluczem. Kusi nas tutaj dekompozycja, która przy zastosowaniu zależności naruszającej warunek BCNF, spowoduje utworzenie dwóch schematów:
{kino, miasto} {kino, tytuł}
Tutaj dekompozycja z zastosowaniem zależności iytu< miasto -> kino staje się problematyczna. Można co prawda utworzyć relacje, które w schemacie po dekompozycji spełnią zależność kino —»* miasto (uwiarygodnioną w relacji {kino, miasto}), ale które po złączeniu nie spełnia zależności tytuł miasto —* kino. Na przykład obie relacje
kino |
miasto |
Wisła |
Warszawa |
Polonia |
Warszawa |
oraz
kino |
tytuł |
Wisła |
W sieci |
Polonia |
W sieci |