Przejście do pierwszej części wykładu


Modelowanie danych hierarchicznych

Jednym z powtarzających się wzorców modelowania danych są ich hierarchie. Rozważmy na przykład hierarchiczną strukturę organizacyjną firm.

Alternatywną reprezentację stanowi model, w którym wszystkie jednostki organizacyjne są modelowane za pomocą jednej encji. Powiązanie do encji nadrzędnej jest realizowane przez pętlę wokół encji jednostki organizacyjnej.

Model ten jest krótszy i bardziej elastyczny np. w sytuacji zmiany struktury organizacyjnej firmy. Zwróćmy uwagę, że związek rekurencyjny dla hierarchii musi być opcjonalny, aby móc zakończyć przechodzenie hierararchii na najwyższej jednostce organizacyjnej nazywanej korzeniem hierarchii.

W encji jednostki organizacyjnej występuje atrybut Typ, którego wartością jest typ jednostki organizacyjnej np. "Departament", "Wydział". Zbiór takich wartości jest mało-liczny i rzadko ulega modyfikacji. Aby ułatwić kontrolę poprawności wprowadzanych przez użytkownika wartości tego atrybutu, wprowadza się osobną encję nazywaną encją słownikową. Na poniższym diagramie jest to encja TypJednostki.

Zbiór komponentów (części) samochodu tworzy hierarchię opartą na związku: "jedna część samochodu jest składnikiem drugiej części". Podaj diagram związków encji modelujący tę hierarchię.

 

Modelowanie czasu

Problemem, przed którym często staje projektant schematu bazy danych,  jest uwzględnienie w modelu danych zmian w czasie. Nie tylko interesuje nas, ile zarabia aktualnie pracownik, na jakim jest zatrudniony stanowisku, w którym aktualnie pracuje departamencie, ale również ile zarabiał w zeszłym roku, jakie piastował stanowiska, w jakich departamentach pracował od początku zatrudnienia.

Stosowana metoda jest podobna jak przy wprowadzaniu encji asocjacyjnych – dodajemy encję "temporalną", której zadaniem jest reprezentowanie zmian w czasie – dotyczących albo wartości atrybutów albo związków z inną encją. Najpierw rozwiążemy problem wprowadzenia historii zmian w wartościach atrybutów tzn. problem uwzględnienia historii zarobków (atrybut Zarobki) i piastowanych stanowisk (atrybut Stanowisko). W tym celu wprowadzimy nowe encje zależne: Historia_Zarob– do reprezentowania zmian zarobków oraz Historia_Stanow – do reprezentowania zmian w piastowanych stanowiskach. Wprowadzimy także do obu nowych encji atrybut Od_kiedy reprezentujący czas, w którym zaszło odpowiednie zdarzenie. Atrybut ten umieszczamy w kluczu głównym. (Ewentualnie można też wprowadzić drugi atrybut reprezentujący czas Do_kiedy.)

 

Teraz rozwiążemy problem wprowadzenia historii przypisania pracowników do departamentów w firmie (związek między encjami Osoba i Departament). W tym celu wprowadzimy nową encję zależną Historia_Przypisan – do reprezentowania zmian przypisań pracownika do departamentu. Wprowadzimy także do nowej encji atrybut Od_kiedy reprezentujący czas, w którym zaszło przypisanie departamentu. Atrybut ten umieszczamy w kluczu głównym. (Ewentualnie, tak jak poprzednio, można wprowadzić drugi atrybut reprezentujący czas Do_kiedy.)

Opisaliśmy w ten sposób zmiany w czasie wartości atrybutów i związków. Zachodzi pytanie, czy jest sens mówić o zmienności instancji encji? Zmiany wartości atrybutów w istniejących instancjach encji moglibyśmy reprezentować tak jak poprzednio z wyjątkiem być może zmian wartości klucza głównego (oznaczających zmianę "tożsamości" instancji encji). Taką zmianę moglibyśmy interpretować jako zastąpienie jednej instancji przez inną (usunięcie i wstawienie) – być może z przeniesieniem wartości pewnych atrybutów. 

W szczególnym przypadku może tu chodzić tylko o usunięcie instancji encji – ale z pozostawieniem jej w historii instancji encji. Faktycznie w bazie danych pracowników pozostawia się zwykle o nich informacje, mimo że przestają być pracownikami. Oto możliwe rozwiązanie tego problemu polegające na wprowadzeniu atrybutu "Status", którego wartość powinna pozwolić rozstrzygnąć czy dana osoba jest aktualnie pracownikiem firmy:

Inne rozwiązanie problemu mogłoby polegać na przeniesieniu informacji o usuwanych obiektach do osobnych encji stanowiących pewnego rodzaju historyczne archiwum bazy danych. Szczególnie przy dużych rozmiarach zbiorów instancji encji takie rozwiązanie jest wskazane ze względu na efektywność operacji wyszukiwiania w bazie danych.

 
Podaj model dla danych zmiennych w czasie dotyczący związku nieruchomości z ich właścicielami. Uwzględnij, że nieruchomość może ulec zniszczeniu oraz że właściciel może umrzeć.

 


Przejście do trzeciej części wykładu