Zaawansowane Modelowanie I Analiza Systemów Informatycznych ORM mapowanie do schematu relacyjnego mgr. inż. Tomasz Pieciukiewicz tomasz.pieciukiewicz@gmail.com
Zasady mapowania Predykaty mające role funkcjonalne związane z tym samym typem obiektu grupujemy do jednej tabeli Identyfikator typu obiektu zostaje kluczem głównym Nazwa tabeli zazwyczaj taka, jak nazwa obiektu
Zasady mapowania Pracownik(nr, nazwisko, [telefon])
Zasady mapowania Predykaty ze złożonymi ograniczeniami unikalności mapujemy do osobnych tabel Nazwa tabeli semantycznie związana z predykatem Klucz główny kolumny wynikające z ograniczenia unikalności (jeśli jest kilka, wybieramy jedno)
Zasady mapowania Pracownik(nr, nazwisko, [telefon]) Prowadzi (nr, nrrej)
Zasady mapowania Dobrym pomysłem jest używanie zawsze tej samej nazwy kolumny jako klucza obcego reprezentującego dany obiekt Chyba, że dany obiekt odgrywa różne role w ramach jednego predykatu
Zasady mapowania Część(nr,...) Zawiera(nadczęść, podczęść, ilość)
Mapowanie asocjacji 1:1 Jeśli jeden z obiektów nie pełni innych ról najlepiej połączyć oba obiekty wchodzące w asocjację w jednej tabeli W wypadku ról opcjonalnych (1:0..1) pozwalamy nullować odp. kolumnę/kolumny
Mapowanie asocjacji 1:1 Klient(nrKlienta, płeć, dataurodzenia, [nrkarty])
Mapowanie asocjacji 1:1 W przeciwnym wypadku tworzymy oddzielne tabele W wypadku ról opcjonalnych klucz realizujący relację umieszczamy po stronie obowiązkowej W wypadku opcjonalności po obu stronach preferujemy rozwiązanie dające mniej nulli
Mapowanie asocjacji 1:1 Klient(nrKlienta, płeć, dataurodzenia) KartaID(nrKarty, nrklienta, dataważności)
Mapowanie asocjacji 1:1 Czasem przy potencjalnie dużej liczbie nulli korzystne bywa zastosowanie trzech tabel
Mapowanie asocjacji 1:1 Pracownik(nrPracownika,...) Używa (nrpracownika, nrrejestracyjny) Samochód(nrRejestracyjny,...)
Zewnętrzne ograniczenia unikalności Przy braku innego schematu referencyjnego, wartości unikalne stają się kluczem głównym W przeciwnym wypadku wymuszamy unikalność wykorzystując możliwości oferowane przez BD (w ramach jednej lub więcej tabel)
Zewnętrzne ograniczenia unikalności Pracownik(Nazwisko, Inicjały,...)
Zewnętrzne ograniczenia unikalności Pracownik(nrPracownika, Nazwisko, Inicjały,...)
Zagnieżdżone encje Traktujemy zagnieżdżony obiekt jak zwykły, zastępując jego schemat referencyjny jakimś symbolem Grupujemy fakty w normalny sposób Zastępujemy symbol odpowiednimi atrybutami zagnieżdżonego obiektu
Zagnieżdżone encje Zadanie (x, datastartu,[datakońca]) Zadanie (nr, nazwa, datastartu,[datakońca])
Obiekty niezależne Niezależne obiekty (zagnieżdżone lub nie) mapujemy do osobnych tabel z identyfikatorem obiektu jak kluczem głównym Pozostałymi atrybutami opcjonalnymi
Obiekty niezależne Przypisanie(nr, nazwa) Praca(nr, nazwa, faza,data)
Mapowanie podtypów Trzy podstawowe techniki Absorpcja Separacja Partycjonowanie
Podtypy - absorpcja Absorbujemy podtypy do nadtypu Przeprowadzamy mapowanie jak zwykle Implementujemy ograniczenia wynikające z podtypów
Podtypy - absorpcja Pacjent(nr, nazwisko, płeć, [kod],[liczbaciąż]) Kod jeśli płeć= M liczbaciąż jeśli płeć= K
Podtypy - separacja Tworzymy osobne tabele dla danych specyficznych dla podtypów
Podtypy - separacja Pacjent(nr, nazwisko, płeć) Prostata(nr, kod) LiczbaCiąż(nr,ilość) Prostata jeśli płeć= M LiczbaCiąż jeśli płeć= K
Podtypy - partycjonowanie Tworzymy osobne tabele dla każdego z podtypów Możliwe do wykorzystania tylko jeśli przecięcie populacji podtypów jest puste, a suma daje pełną populację typu
Podtypy - partycjonowanie PacjentKobieta(nr, nazwisko, płeć,[liczbaciąż]) PacjentMężczyzna(nr, nazwisko, płeć,[kod]) PacjentKobieta płeć= K PacjentMężczyzna płeć= M
PYTANIA?