su 2. MODELOWANIIi BAZ DANYCH
b) Każda kombinacja dziecko, lekarz i pielęgniarka określa jednoznacznie matkę.
c) Każda kombinacja dziecka i matki określa jednoznacznie lekarza.
IĆwiczenic 2,3.3. Inny projekt modelu związków encji dla problemu z ćwiczenia 2.3.2 polega na połączeniu czterech zbiorów encji Dzieci, Matki, Pielęgniarki i Lekarze poprzez zbiór encji Urodzenia z czterema związkami zdefiniowanymi dla poszczególnych czterech podstawowych zbiorów encji. jak to uczyniono na rys. 2.21. Należy do tego rysunku dodać strzałki (uwzględniając, że niektóre związki są typu wiele do jeden) określające poniższe fakty:
RYSUNEK 2.21
Reprezentowanie urodzeń przez zbiór encji
a) Każde dziecko jest wynikiem dokładnie jednego urodzenia i każde urodzenie dotyczy jednego dziecka.
b) Dodatkowo do (a) każde dziecko ma jedną matkę.
c) Dodatkowo do (a) i (b): z każdym urodzeniem jest związany jeden lekarz.
!!Ćwiczenic 2.3.4. A teraz dopuścimy urodzenia więcej niż jednego dziecka na raz. Stosując metody z ćwiczeń 2.3.2 i 2.3.3, w jaki sposób można przedstawić fakt, że w dalszym ciągu jedno dziecko ma tylko jedną matkę?
IĆwiczenie 2.3.5. Zapisz projekty z ćwiczeń 2.3.2 i 2.3.3 w modelu ODL. Które z warunków zapisuje się w łatwy sposób? Których nie da się ująć w modelu ODL? W jaki sposób zmienić projekt tak, aby dopuszczał urodzenia więcej niż jednego dziecka na raz, o co już pytaliśmy w ćwiczeniu 2.3.4?
Często niektóre obiekty klasy mają specyficzne właściwości, których nie mają inne obiekty tej samej klasy. Wówczas jest wygodnie zaprojektować podklasy, w każdej podklasie określić jej własne atrybuty i/lub związki, dodatkowe do atrybutów i związków zdefiniowanych dla całej klasy. Język ODL zawiera proste mechanizmy definiowania podklasy, które zaraz opiszemy. Następnie zobaczymy, w jaki sposób hierarchie podklas przedstawia się w modelach związków encji, korzystając ze specjalnych związków „isa” (tzn. ,yA is a B” określa związek między podklasą/ł i jej klasą B).
Nasza przykładowa baza danych filmów może obejmować różne ich gatunki np. kreskówki, zagadki kryminalne, filmy przygodowe, komedie i wiele, wiele innych specjalnych typów. Dla tych poszczególnych gatunków można utworzyć oddzielne podklasy klasy Film, opisanej już w przykładzie 2.1. Określenie, że pewna klasa C jest podklasą innej klasy D polega na dopisaniu do deklaracji klasy C dwukropka oraz nazwy D.
PRZYKŁAD 2.18
Zadeklarujemy w języku ODL klasę Kreskówka jako podklasę klasy Film, co zarazem czyni klasę Film nadklasą klasy Kreskówka.
1) incerface Kreskówka: Film {
2) relationship S.et<6wiazda> głosy;
};
W wierszu 1 określono klasę Kreskówka jako podklasę klasy Film. Z kolei w wierszu 2 określa się związek klasy głosy, który obiektom klasy Kreskówka przyporządkowuje osoby udzielające głosów- postaciom kreskówek. Związek odwrotny nie został wprowadzony, chociaż techniczna poprawność wymaga tego. Trzeba bowiem zauważyć, że tylko kreskówki są gatunkiem wymagającym określenia związku głosy, żaden inny gatunek filmowy takiego związku nie potrzebuje i dlatego nie można takiego związku definiować w klasie Fi lm.
□
Podklasa dziedziczy wszystkie właściwości swojej nadklasy (tak czasami nazywa się klasę, na podstawie której zdefiniowano podklasę). A zatem każdy atrybut lub związek nadklasy staje się automatycznie elementem podklasy. W przykładzie 2.18 każdy obiekt klasy Kreskówka ma atrybuty tytuł, rok, długość i typFilmu, odziedziczone z klasy Film (rys. 2.6), a poza własnym związkiem głosy ma także odziedziczone z klasy Fi im związki: gwiazdy oraz należyDo.
Klasa może mieć wiele podklas, z których każda dziedziczy właściwości swoich nadklas, była już o tym mowa w p. 2.4.1. Dodatkowo każda podklasa może mieć swoje podklasy, co prowadzi do struktury hierarchicznej klas.