<». W/.IAI.ANIA W MUUbUJ KII.ACYJNYM
cyjna nadaje sens związkom. Jeśli na przykład obiekt (lub encja) A jest połączony więzami z innym obiektem (lub encją) B, to B rzeczywiście musi istnieć. Posługując się terminami z języka ODL. jeśli związek w obiekcie A jest wskaźnikiem, to ten wskaźnik w przy padku nałożenia więzów integralności nic może wskazywać wartości pustej, ale realnie istniejący obiekt.
W modelu relacyjnym więzy integralności referencyjnej działają trochę inaczej. Mogą one na przykład określać, ze jeśli w pewnej krotce relacji R występuje określona wartość v, to z założeń projektowych wynika, żc taka sama wartość v musi występować również jako określona składowa pewnej krotki innej relacji S. W następnym przy kładzie zostanie pokazane, w jaki sposób taki rodzaj więzów z modelu relacyjnego można zapisać w algebrze relacji.
PRZYKŁAD 4.42
Skupimy uwagę na następujących dwóch relacjach „filmowej” bazy danych:
Film( tytuł/ rok, długość, czyKolor, nazwaStudia, pro-
ducentC#)
FilmDyr(nazwisko, adres, cert#, cenaSieci)
Założenie, że wszyscy producenci filmów występują w relacji Fi lrnDyr jest założeniem rozsądnym. Jeśli istnieje taki film, który w relacji FilmDyr nic ma swojego producenta, to oznacza, że coś jest w bazie nic tak. i chcielibyśmy przynajmniej być o tym fakcie informowani przez system.
Powyższe wymaganie można sprecyzować dokładniej w sposób następujący: w każdej krotce relacji Film składowa producentC# musi występować także jako składowa cert# w pewnej krotce relacji F: LmDyr. Tak sformułowany warunek gwarantuje, żc producent filmu występuje jako jeden z dyrektorów filmu, ponieważ wszyscy dyrektorzy są jednoznacznie identyfikowani przez numery certyfikatów. Tak określone więzy można zapisać w postaci następującego warunku typu zawieranie-zbiorów:
ft/)roJuci‘ri« w( Fi lin) (Z 7Tcerit{ FilmDyr)
Lewa strona wyrażenia opisuje zbiór wszystkich numerów' certy fikatów, które występują jako składowe producentC# w krotkach relacji Film. Z kolei wartością wyrażenia z prawej strony jest zbiór wszystkich numerów certyfikatów, które występują jako składowe krotek relacji FilmDyr. Więzy natomiast zapewniają, że każdy element zbioru, występującego z lewej strony wyrażenia, musi także występować w zbiorze zdefiniowanym po prawej stronic tego wyrażenia.
W konwencji przyrównania do zbioru pustego te więzy można przedstawić następująco:
/(Film) - /r „c/(FilmDyr) = 0
□
Teraz z kolei zapiszemy w postaci wyrażeń algebry relacji więzy integralności referencyjnej nałożone na więcej niż jeden atrybut. Można na przykład wy magać, aby wszystkie filmy, które znajdują się w relacji
GwiazdyW(tytułFilmu, rokProdukcji, nazwiskoGwiazdy)
znalazły się także w relacji:
Film( tytuł, rok, długość, czyKolor, nazwaStudia, pro-ducentCt)
W obu relacjach film jest identyfikowany przez parę atrybutów, ustaliliśmy już bowiem wcześniej, żc żaden atrybut samodzielnie nic stanowi wystarczającej identyfikacji filmu. Następujące więzy:
^tyruirilao, rokl<todu>icji(GwiazdyW) C ^tytul, rokC^ilni)
zapewniają spełnienie więzów integralności w ten sposób, że porównuje się pary tytuł-rok przez rzutowanie obu relacji na odpowiednie listy atrybutów.
□
Ta sama konwencja zapisu umożliwia definiowanie dużo więcej warunków, daleko wykraczających poza więzy integralności referencyjnej. W postaci wyrażeń algebraicznych można zapisywać także dowolne zależności funkcyjne, z tym że notacja przyjęta poprzednio dla zależności funkcyjnych dostarcza dużo więcej mechanizmów opisu warunków ograniczeń niż notacja algebraiczna.
PRZYKŁAD 4.44
Zapiszmy w postaci w ięzów algebraicznych następującą zależność funkcyjną: nazwisko —* adres zachodzącą dla relacji:
Gwiazda(nazwisko, adres, płeć, dataUrodzenia)
Zależność ta oznacza, żc jeśli jakiekolwiek dwie krotki (fi,, /.-) relacji Gwiaz-da mają takie same wartości atrybutu nazwisko, to nie mogą w nich występować różne wartości atrybutu adres. W algebrze relacji do określenia zbio-