mogą być zaprzeczone lub arytmetyczne. W rozważanej regule występuje tylko jedno takie podzadanic: NOT Q(x, y). Przy tym przypisaniu otrzymuje ono postać NOT Q(l, 3). Krotka(1,3) występuje w relacji Q, zatem to pod-zadaniejest fałszywe, a krotka, powstająca z przypisania (1), nie zostaje dołączona do nagłówka.
Jako ostatni pozostał wariant (4). Przypisanie jest niesprzeczne: zmiennym x,y, : odpowiadają kolejno wartości: 1, 1 i 3. Podzadanie NOT Q<x, y) przybiera postać NOT Q(i, 1). Ponieważ krotka (1,1) nic należy do relacji Q, więc to podzadanie jest prawdziwe. Dla tego przypisania wartości otrzymujemy /*(l, l)jako wartość nagłówka P(x, y). Krotka (1,1) należy więc do relacji P. Ponieważ zostały zbadane już wszystkie przypisania wartości do zmiennych, więc jest to jedy na krotka wyniku.
□
Często okazuje się, że jest warto odróżniać:
• Predykaty ekstcnsjonalne, czyli tc. których relacje są przechowywane w bazie danych, od
• Predykatów intensjonalnych, których relacje są wyliczane przez stosowanie jednej lub wielu reguł Datalogu.
Różnica polega na tym samym co różnica między operandami w wyrażeniach algebry relacji, które są ekstcnsjonalne (tzn. zdefiniowane przez ich ekstensje, inne określenie dla bieżącej instancji relacji), a relacjami wyliczonymi jako wynik pośredni lub końcowy pewnych podwyrażeń; te ostatnie nazywa się intensjonalnymi (tzn. zdefiniowanymi przez programistę).
Mówiąc o regułach Datalogu, będziemy określać relacje jako intensjo-nalne lub ekstcnsjonalne w zależności od tego, czy odpowiadający im predykat jest odpowiednio intensjonalny lub ekstensjonalny. Będziemy także używać skrótu IDB od „intensjonalna baza danych”, przy wskazywaniu intensjo-nalnych predykatów albo odpow iadających im relacji. W analogiczny sposób oznaczy my skrótowo EDB od „ekstensjonalna baza danych” przy predykatach lub relacjach ekstensjonalnych.
W przykładzie 4.16 Fi lm jest relacją EDB, zdefiniowaną przez swoją ekstensję. Podobnie predykat Film jest predykatem EDB. Predykat i relacja DługicFilmy są intcnsjonalne. Predykat EDB nie może występować w nagłówku reguły, chyba żc występuje również w jej treści. Z kolei predykat IDB może wystąpić w nagłówku reguły i w jej treści oraz w obu miejscach jednocześnie. Często tworzy się jedną relację przez szereg reguł, / tym samym predykatem w nagłówku każdej z nich. To postępowanie zostało zilustrowane w przy kładzie 4.21, przy opisywaniu sumy relacji.
Zastosowanie ciągu predykatów intensjonalnych umożliwia tworzenie coraz to bardziej skomplikowanych funkcji dla relacji EDB. Ten proces jest podobny do tworzenia wyrażeń algebry relacji za pomocą różnych operatorów. W następnych ro/działach poznamy również kilka przykładów stosowania predykatów intensjonalnych.
Ćwiczenie 4.2.1. Każde zapytanie z ćwiczenia 4.1.1 należy zapisać w Datalogu Należy korzystać wyłącznic z reguł bezpiecznych, ale można także korzystać z predykatów IDB. które są odpowiednikami podwyraźeń w bardziej skomplikowanych wyrażeniach algebry relacji.
Ćwiczenie 4.2.2. Wszystkie zapytania z ćwiczenia 4.1.3 należy zapisać w Datalogu Tak samo jak poprzednio należy stosować ty lko reguły bezpieczne, ale można także stosować predykaty IDB.
HĆwiczcnic 4.2.3. Warunek, za pomocą którego definiuje się bezpieczeństwo reguły, wystarcza do tego, aby predykatowi nagłówka odpowiadała relacja skończona, jeśli tylko predykatom podzadań odpowiadają relacje skończone. Ale sam warunek bezpieczeństwa jest mocniejszy. Należy podać taki przykład reguły z Datalogu, która nie spełnia warunku bezpieczeństwa, ale jeśli relacje podzadań tej reguły są skończone, to i relacja utworzona dla wynikowego predykatu tej reguły też jest skończona.
Działanie wszystkich operatorów algebry relacji można przedstawił równoważnie w postaci jednej lub kilku reguł Datalogu. W bieżącym roz dziale po kolei omówimy pod ty m kątem wszystkie operatory. Potem opisze my sposób takiego połączenia reguł Datalogu. które pełni te same funkcje c< wy'rażę nie algebraiczne.
Przecięcie dwóch relacji można przedstawić jako regułę, w której wystę pują podzadania odpowiadające relacjom z tymi samymi zmiennymi jaki argumentami.
PRZYKŁAD 4.20
Skorzystamy tu z relacji R i S, przedstawionych na rys. 4.1. Ich schemat składają się z czterech atrybutów: nazwisko, adres, płeć oraz datiaUro dzenia. Przecięcie R i Sopisuje następująca reguła Datalogu.