86 2 MODELOWANIE BAZ DANYCH
mie z rys. 2.23. A nasza przykładowa cncja Królik Roger składałaby się z czterech składowych wchodzących w skład Kreskówko-Kryminał, a oprócz tego byłyby dla niej określone specyficzne właściwości Królika Rogera.
♦Ćwiczenie 2.4.1. Rozważmy bazę danych okrętów wojennych i jej model w języku ODL. Każdy okręt wojenny ma określone wartości następujących danych:
1. Nazwę
2. Wyporność (wagę), w tonach.
3. Typ, np. okręt liniowy, niszczyciel.
Dodatkowo istnieją różne rodzaje okrętów-, dla których określa się inne właściwości:
1. Okręty artyleryjskie, takie jak okręty liniowe lub krążowniki, są wyposażone w ciężkie działa. Dla tych okrętów należy rejestrować liczbę i kaliber głównych dział.
2. Lotniskowce służą do transportu samolotów. Trzeba rejestrować dane o długości pokładu pokładowca oraz. grupach lotnictwa przy pisanych do poszczególnych okrętów.
3. Okręty podwodne, mogą przemieszczać się pod wodą. Trzeba rejestrować dane o ich maksymalnej bezpiecznej głębokości zanurzenia. Można założyć, ze żaden okręt artyleryjski ani lotniskowiec nie jest okrętem podwodnym.
4. Okręty bojowe to okręty artyleryjskie i lotniskowce, wszystkie dane są też z nimi związane1.
Należy odpowiedzieć na następujące pytania:
a) Utworzyć projekt hierarchii klas w języku ODL.
b) Pokazać, w jaki sposób byłby reprezentowany okręt bojowy Ise. Miał on 36 000 ton wyporności, zamontowane 8 czternastocalowych dział, pokład do lądowania 200 stóp długości oraz miał zaokrętowane dywizjony „1 i 2”.
MĆwiczenie 2.4.2. W niektórych podklasach, np. dla okrętów bojowych, typ można określić tylko w jeden sposób, natomiast w; innych, np. dla okrętów- artyleryjskich, może być określona wartość typu jako okręt liniowy lub krążownik. Czy prowadzi to do redundancji? Jeśli tak, to w jaki sposób można ją wyeliminować?
♦Ćwiczenie 2.4.3. Należy wykonać ćwiczenie 2.4.1 tym razem w modelu związków-encji.
'Ćwiczenie 2.4.4. Należy zmienić projekt bazy danych populacji z ćwiczenia 2.1.5 w ten sposób, aby można było rozróżniać następujące typy ludzi:
1. Kobiety.
2. Mężczyźni.
3. Ludzie, którzy są rodzicami.
Można oczywiście dodać jeszcze inne typy ludzi, tak aby powstały związki między podklasami. Projekt zapisać w postaci:
a) Modelu ODL.
b) Modelu E/R.
Dotychczas uczyliśmy się, w jaki sposób modeluje się kawałki świata rzeczywistego za pomocą aparatu pojęciowego ODL: klas i ich właściwości -zarówno atrybutów, jak związków - a także stosując mechanizmy zbiorów cncji i zw iązków z modelu E/R. Duża część tych struktur, które są interesujące pod względem modelowania, może być opisana wr obu tych notacjach. Jednakże istnieją pewne ważne aspekty świata rzeczywistego, których nie da sic modelować żadnym z narzędzi, o których była mowa do tej pory. Tc inne dane często przybierają postać wiązów, których nie w;idać w strukturze typów i ograniczeń wynikających z definicji klas, atrybutów i związków.
Przedstawiamy teraz uproszczoną klasyfikację powszechnie stosowanych więzów. Nie wszystkie z nich omówimy w tym miejscu. Dodatkowe informacje na temat więzów znajdują się w podrozdziale 4.5 przy omawianiu algebry relacji oraz w rozdziale 6 dotyczącym programowania w języku SQL.
1. Klucza (kcys) są takimi atrybutami lub zbiorami atrybutów', które jednoznacznie identyfikują obiekt wewnątrz klasy lub encję wewnątrz zbioru encji. W danej klasie nie występują takie dwa obiekty, które miałyby identyczne wartości atrybutów tworzących klucz.
2. Wiązy jednoznaczności (single-value comtrainls) polegają na wymaganiu, aby wartości w danym polu różniły się. Podstawowym przykładem więzów jednoznaczności są klucze, ponieważ wartości atrybutów- stanowiących klucz muszą jednoznacznie wyróżniać poszczególne encje w zbiorze encji lub obiekty w ramach klasy. Poza tym. jak zobaczymy dalej, istnieją jeszcze inne źródła dla więzów- jednoznaczności.
3. Więzy integralności referencyjnej (referential integrity constrainls) narzucają wymaganie, aby wartość, którą wskazuje jakiś obiekt faktycznie znajdowała się w bazie. Integralność referencyjna ma w pro-
Jeżeli ktoś by się dziwił, taka rzecz, się zdarzyła naprawdę. Ise i Hyuga były' to dwa japońskie okręty liniowe, które przebudowano w 1943 r. w ten sposób, 2c rufowa część miała pokład do lądowania i hangar dla samolotów.