ż/0 <- DZ1AI.AW1A W MODELU RI1ACYJNYM
PRZYKŁAD 4 54
Załóżmy, żc relacja H została określona dwiema regułami:
HU, y) 4- S (x, y) AND x > 1 H(x, y) ♦- S(x, y) AND y < 5
W relacji S występują wartości takie same jak na rys. 4.30 (b), tzn.:
jl
2
4
4
C
3
5
5
Po przetworzeniu pierwszej reguły do // zostają włączone wszystkie krotki relacji S, ponieważ w każdej krotce pierwsza składowa jest większa od 1. Z zastosowania drugiej reguły do relacji // zostaje dołączona tylko krotka (2, 3), ponieważ krotka (4, 5) nic spełnia warunku y < 5. A zatem w wynikowej relacji H są dwie kopie krotki (2, 3) oraz dwie kopie krotki (4, 5).
□
•Ćwiczenie 4.6.1. Załóżmy, żc relacja PC jest określona tak samo jak na rysunku 4.IO(a), a trzeba obliczyć wartość rzutowania Jaki wynik otrzymuje się.
gdy wyrażenie jest obliczane w konwencji zbiorów. A jaki w konwencji wiclozbio-rów? Jaka jest wartość średnia krotek otrzymana w przypadku obliczenia w konwencji zbiorów? A jaka, gdy przyjmujemy konwencję wielozbiorow?
Ćwiczenie 4.6.2. Należy wykonać polecenia z ćwiczenia 4 6 1, gdy operacją rzutowania jest **XPC).
Ćwiczenie 4.6.3. W tym ćwiczeniu korzystamy z relacji „okręty”, zdefiniowanej w ćwiczeniu 4.1.3.
a) Wyrażenie ^jt^Klasy) określa jednokolumnową relację, w której są zapisane kalibry dział poszczególnych klas okrętów. Określić wartości tej relacji w przypadku traktowania wyrażenia jako zbioru oraz jako wielozbioru. Wartość należy obliczać z danych zawartych w ćwiczeniu 4.1.3.
!b) Należy utworzyć wyrażenie algebry relacji, dzięki któremu można uzyskać wartości kalibru największych dział poszczególnych okrętów (nic klas okrętów). Relacje należy traktować jako wielozbiory, tzn. że liczba wystąpień pewnej wartości b określa, ile okrętów ma dany typ działa.
!( wiczenie 4.6.4. Pewne prawa algebry relacji prawdziwe dla zbiorów są spełnione również, gdy relacje traktuje się jako wielozbiory. Należy uzasadnić dlaczego poniższe prawa obowiązują zarówno dla zbiorów, jak i dla wiclozbiorów.
•a) Prawo łączności dodawania: (/? kj S) w T■ R o (S u 7).
b) Prawo łączności mnożenia: (R ^ S) r> T s R r\ (S r* T).
c) Prawo łączności dla złączenia naturalnego: (R txi S) cxj T R tx (S tx T).
d) Prawo przcmicnności dodawania: (R u .9) a (5 u R). c) Prawo przcmicnności mnożenia (Rr\S)u(Sr\ R).
0 Prawo przcmicnności złączenia naturalnego: (R c*a S ■ (S c*j R). g) rr,{R u 5) ■ */.(/?) u *i,(S). /. jest listą dowolnych atrybutów •h) Rozdzielność dodawania względem mnożenia: R \u(S n 7) *• (R vj .V) u 7).
i) °c and «(/?) «* ^(</0 ^ gdzie C i f) oznaczają dowolne warunki
nałożone na krotki relacji R.
!!Ć w leżenie 4.6.5. Prawa algebraiczne, które zdefiniowano poniżej, zachodzą w przypadku zbiorów, ale nie w przypadku wielozbiorów. Należy uzasadnić, dlaczego zachodzą one dla zbiorów, oraz podać kontrprzykłady, które wykażą, że te prawa nie obowiązują dla wielozbiorów.
*a) (Rr\S)-TmRry(S-T).
b) Prawo rozdzielności mnożenia względem dodawania: R o {S u'/) = (/? o S) yj(Rr\T).
c) °c o« iXR) ■ a(<R) v ati.R)> gdzie C i D oznaczają dowolne warunki nałożone na krotki relacji R.
Istnieją pojęcia i operacje formalnie nic należące do modelu relacyjnego, ale ze względu na swoją użyteczność zostały wprowadzone do języków zapytań. W bieżącym rozdziale omówimy operacje, które modyfikują relacje, tw orzą agregacje danych, takie jak suma danych z kolumn, a także służą do tworzenia „perspektyw” lub nazywanych funkcji działających na relacjach. Każde z tych pojęć i operacji ma swój odpowiednik w języku zapytań do baz danych SQL, będą one omówione w rozdziale 5. Części z nich poświęcimy także uwagę przy okazji omawiania języka OQL w rozdziale 8.
Algebrę relacyjną oraz Datalog można traktować jako języki zapytań, ponieważ można w nich określić relację lub uzyskać wartość funkcji zastosowanej do określonej relacji. Zapytania są bardzo ważne, ale taka baza danych, której zawartości nic można by zmieniać, nic byłaby interesująca. Z tego powodu wszystkie języki systemów' ba/ danych zaw ierają zarówno mechanizmy do zapisu zapytań do bazy danych, jak i do modyfikowania jej zawartości. Minimalny zbiór powinien zawierać następujące rozkazy: