78 2. MODELOWANIE BAZ DANYCH
RYSUNEK 2.18
Kontrakty jako połączenie gwiazdy, filmu oraz zbioru studiów
"Ćwiczenie 2.3.1. Na rysunku 2.19 przedstawiono projekt bazy danych dla banku obejmujący klientów i konta. Przyjmijmy, że znaczenie poszczególnych nazw atrybutów i relacji jest zgodne z oczekiwaniem. Należy' skrytykować ten projekt. Które zasady projektowania naruszono? Dlaczego? Jakie zmiany należy wprowadzić?
interface Adres{
artribute string adr; reiationship Set<Klient> mieszkańcy inverse Klient:: mieszkaW;
interface Klient!
attribute string nazwisko; reiationship Adres mieszkaW
inverse Adres:: mieszkańcy; reiationship ZbiorKor.t konta
inverse ZbiorKont:: właściciel;
interface Konto {
attribute real saldo; reiationship set<ZbiorKont> należyDo inverse ZbiorKont:: członkowie;
};
interface ZbiorKont{
attribute string adresWłaściciela; reiationship Klient właściciel;
inverse klient:: konta; reiationship set<Konta> członkowie inverse Konto::należyDo;
};
RYSUNEK 2.19
Kiepski projekt bazy danych dla banku
HĆwiczenie 2.3.2. W następnych dwóch ćwiczeniach rozważymy dwa możliwe modele związków encji opisujące urodzenia. Urodzenie obejmuje jedno dziecko (bliźniaki reprezentuje się jako dwa urodzenia), jedną matkę, dowolnie dużo pielęgniarek oraz dowolnie dużo lekarzy. Załóżmy zatem, ze dysponujemy zbiorami encji Dzieci, Matki, Pielęgniarki oraz Lekarze. Załóżmy ponadto, żc używamy związku Urodzenia, który wiąże te cztery zbiory encji, tak jak to pokazano na rys. 2.20. Zauważmy, że krotka zbioru związków Urodzenia ma postać:
(dziecko, matka, pielęgniarka, lekarz)
RYSUNEK 2.20
Reprezentowanie urodzeń jako związku wjeloargumentowego
Jeśli w związku uczestniczy więcej niż jedna pielęgniarka lub lekarz, to wystąpi więcej krotek z tymi samymi wartościami matki i dziecka, po jednej dla każdej kombinacji pielęgniarki i lekarza.
Chcielibyśmy, aby nasz projekt spełniał pewne założenia. Dla każdego z nich należy dołączyć do diagramu związków encji strzałki lub inne elementy.
a) Każde dziecko ma tylko jedną matkę.