4 DZIAŁANIA W MODELU RELACYJNYM
A teraz można wprowadzić spójnik NOT do porównania, czego wynikiem jest następujące wyrażenie:
Gjlu&M < 100 AMP nonMNStadto r 'fonK fi lm)
To wy rażenie można już przedstawić jako następującą regułę Datalogu:
S(t, y, 1, c, a, p) *- Film. {t, y, I, c, a, p) AND 1 < 100 AND s * *Fox#
□
PRZYKI.AD 4.27
Teraz rozważmy podobne wyrażenie, w którym występuje warunek wyboru w postaci negacji koniunkcji. Zastosujemy z kolei drugie prawo De Morgana, z którego wynika, żc negacja koniunkcji jest równoważna alternaty wie negacji. Zaczniemy od następującego wyrażenia algebraicznego:
&UOT {iMhro-W i 100 ANnnarwa$ru<Aa-'fox')(^ i -m)
Oznacza to. że trzeba wybrać te filmy, które ani nie są długie, ani nie wyprodukowane w studio *Fox\
Po zastosowaniu prawa De Morgana otrzymujemy równoważną postać: O|>i0T {dUpoU! i 100)) 0« (wor<*»*r»uSri«/M - Fi lm)
Po wkomponowaniu spójnika NOT do warunku powstaje kolejne wyrażenie równoważne:
0#ygok < 100 OR i lm)
W końcu można już utworzyć reguły, które są składnikami sumy logicznej. Przyjmują one następującą postać:
1. S(t, y, 1, c, s, p) <- Film{t, y, 1, c, s, p) AND 1 < 100
2. S(t, y, 1, c, a, p} <- Film(t, y, 1, c, s, p) AND a 'Fox'
□
Iloczyn kartezjański dwóch relacji R x S można wyrazić przez jedną regułę w notacji Datalogu Obejmuje ona dwa podzadania, jedno dla S, drugie dla R. W każdym podzadaniu występują różne zmienne, odpowiadające poszczególnym atrybutom relacji R oraz S. W predykacie, występującym w nagłówku (jest on ty pu 1DB), znajdują się wszy stkie zmienne z obu podzadań. przy czym zmienne / podzadania R są umieszczone przed zmiennymi / podzadania S.
PRZYKI.AD 4.28
Rozważmy dwie relacje R i S / przykładu 4.20. Każda ma cztery atrybuty. Poniżej przedstawiamy regułę wyznaczającą relację P, która jest iloczynem kartezjańskim relacji R i S:
P(a, b, c, d, w, x, y, z) «- R(a, b, c, d) AND S(w, x, y, z)
Nazwy zmiennych w podzadaniaeh wybrano arbitralnie z początku alfabetu do podzadania R i z końca alfabetu do podzadania S. Wszystkie te zmienne występują w nagłówku reguły.
□
Reguła, która w Datalogu opisuje złączenie naturalne dwóch relacji R i S, bardzo przypomina regułę wyznaczającą iloczyn kartezjański tych relacji Różnica między nimi polega na tym, żc w regule wyznaczającej złączenie RbdS trzeba konsekwentnie używać tych samych nazw zmiennych oznaczających atry buty, które powtarzają się w R i w S. Możemy zatem stosować nazwy atrybutów jako nazwy zmiennych. W predy kacie nagłówka, który jest typu IDU, każda zc zmiennych występuje tylko jeden raz.
PRZYKŁAD 4.29
Rozważmy dwie relacje R i S o schematach R(A, S) oraz S(B, C. D). Złączenie naturalne można opisać następującą regułą:
J(a, b, c, d) — R(a/ b) AND S(b, c, d)
Nazwy zmiennych użyte w podzadaniaeh w naturalny sposób odpowiadają nazwom poszczególnych atrybutów relacji R oraz. S
C
W naturalny sposób można także przedstawić w Datalogu opis złączeni; teta. Przypomnijmy tu, ż.c złączenie teta można przedstawić jako iloczyn kar tezjański połączony z selekcją; opisano to już w p. 4.1.9. Jeśli warunek wybo ru jest koniunkcją, tzn. są to porównania połączone spójnikiem AND, to możni rozpocząć tworzenie reguły od zapisu iloczynu kartezjańskiego, a potem dl; każdego porównania dołączyć odpowiadające mu podzadanic arytmetyczne.