122
3 RP.I-ACYJNYMODEL DANYCH
nazwisko |
ulica |
miasto |
data Urodzenia |
Carrie Fischer |
123 Map_e St. |
Hollywood |
9/9/99 |
Carrie Fischer |
5 Locus Ln. |
Malibu |
9/9/99 |
Mark Hanili |
>5 56 Ocik Rd. |
Brentwood |
8/8/88 |
RYSUNEK 3.10 Dołączenie dat urodzenia
\'a rysunku 3.10 znajdują się dwa niekorzystne elementy. Po pierwsze data urodzenia Carrie Fischer powtarza się w każdej krotce. A zatem relacja zawiera redundancję. Jej nazwisko jest co prawda również powtórzone, ale nie wytwarza to redundancji, ponieważ bez. tego nazwiska nie wiedzielibyśmy, że oba adresy należy wiązać z Carrie Fischer. Różnica polega tu na tym, że nazwisko, powtarzające się w każdej krotce, jest kluczem obiektu reprezentowanego w relacji i dlatego musi wystąpić we wszystkich krotkach dotyczących tej gwiazdy. W przeciwieństwie do tego data urodzenia jest daną o gwieździe i nic stanowi części klucza reprezentowanego obiektu, a zatem powtórzenie tej daty jest redundancją.
Drugi problem polega na tym, że ponieważ stowarzyszony z Harrisoncm Fordem zbiór adresów jest pusty, więc utraciliśmy o nim wszelkie dane. W szczególności jego data urodzenia nic pojawi się w relacji, nawet jeśli istnieje obiekt Ford w klasie Gwiazda. Trzeba pamiętać, że żaden z tych dwóch problemów nie dyskwalifikuje naszej metodologii przekształcania schematów ODI. do postaci relacyjnej. Jednak trzeba dostrzegać zagrażające niebezpieczeństwa i poprawiać schematy relacyjne za pomocą technik normalizacji, opisanych w podrozdziale 3.7.
□
Jeśli w definicji klasy kilka atrybutów zdefiniowano jako kolekcje (będziemy je nazywać atrybutami wielowartościowymi), to liczba krotek reprezentujących jeden obiekt będzie się mnożyć. Trzeba bowiem tworzyć osobne krotki dla każdej kombinacji wartości atrybutów wiclowartościowych. Powrócimy do tego zagadnienia w p. 3.2.5 w kontekście związków między zbiorami.
Poza strukturami rekordów oraz zbiorami w definicji klasy w języku ODL można stosować konstruktory P.og, Array oraz List. Przy reprezentowaniu wielozbioru (bag), w którym dana wartość może występować n razy, nie możemy po prostu wprowadzić do relacji n identycznych krotek’. Zamiast
’ Ściślej, w abstrakcyjnym modelu relacyjnym, który opisujemy w bieżącym ro/dzialc. nic jest dopuszczalne, aby w relacji występowały identyczne krotki. Jednak w relacyjnych
tego proponujemy dołączyć do schematu relacji nowy atrybut licznik, okre ślający, ile razy dany element występuje w wielozbiorzc. Przyjmijmy n; przykład, że adres z rys. 3.7 jest wielozbiorcm, a nie zbiorem. Wóweza można by określić, żc 123 Mapie $t., Hollywood jest adresem Carrie Fische dwukrotnie, a z kolei 5 Locust Ln., Malibu jest jej adresem trzykrotnie, sto sując następujący zapis:
nazwisko |
ulica |
miasto |
licznik |
Carrie Fischer |
123 Mapie Sr. |
Hollywood |
2 |
Carrie Fischer |
5 Locus Ln. |
Malibu |
3 |
Lista adresów może być reprezentowana przez nowy atrybut pozycja wskazujący pozycję w obrębie listy'. Na przykład możemy przedstawić list adresów Carrie Fischer, z adresem w Hollywood na pierwszym miejsci w postaci następującej relacji:
nazwisko |
ulica |
miasto |
pozycja |
Carrie Fischer |
123 Mapie St. |
Hollywood |
1 |
Carrie Fischer |
5 Locus Ln. |
Malibu |
2 |
W końcu macierz adresów, która ma ustaloną długość, może być reprt zentowana przez atrybuty utworzone dla każdej pozycji w macierzy. Jeś zatem adres miałby być tablicą zawierającą dwie struktury miasto-ulica, t jeden obiekt typu Gwiazda byłby przedstawiony jako:
nazwisko |
ulica1 |
miasto I |
u!ica2 |
miasto2 |
Carrie Fischor |
123 Mapie St. |
Hollywood |
b Locus Ln. |
Malibu |
Zdarza się często, że definicja pewnej klasy w ODL zawiera związl z innymi klasami w tym modelu. Jako przykład rozważmy pełną definic klasy Film z rys. 2.6, którą powtarzamy na rys. 3.11.
Najpierw skoncentrujmy uwagę na związku na leży Do, wiążącym każ( film zc studiem, które go wyprodukowało. Pierwsza myśl, jaka się nasuwa, potraktowanie związku tak samo jak atrybutu. Moglibyśmy w relacji określ atrybut lub zbiór atrybutów, aby reprezentować atrybuty obiektów powiązań klasy, podobnie jak to czyniliśmy w przypadku, gdy atrybuty w modelu OD
systemach wyposażonych w $QL dopuszcza się powtarzanie się krotek, tzn. w języku SC relacje są wielozbiorami. a nie zbiorami (patrz podrozdz. 4.6 i 5.4). Jeśli liczba krotek zaczy być znacząca, to jednak doradzamy korzystanie ze schematów opisywanych w bieżącym rc dziale, nawet jeśli rzeczywisty DBMS dopuszcza powtarzanie się krotek.