- wprowadzenie do modelowania i projektowania systemów informatycznych,
- model związków-encji, jako jeden z fundamentalnych modeli wykorzystywanych przy projektowaniu relacyjnych baz danych.
W szczególności, zostaną omówione obiekty modelu związków-encji, czyli encje i ich atrybuty i różnego typu związki pomiędzy encjami oraz hierarchie encji.
Wyróżnia się dwa podstawowe rodzaje modeli, tj. konceptualne i implementacyjne. Model konceptualny umożliwia reprezentowanie obiektów w uniwersalnym modelu niezależnym od modelu implementacyjnego. Wśród modeli konceptualnych najpopularniejszymi są model związków-encji i model UML.
Model implementacyjny (zwany również modelem danych) jest wykorzystywany na etapie implementacji systemu. Odzwierciedla on model konceptualny w konkretne struktury danych. Wśród modeli danych najpopularniejszymi obecnie są: relacyjny, obiektowy, obiektowo-relacyjny i semistrukturalny.
Etap analizy polega na zebraniu wymagań użytkowników odnośnie struktury i funkcjonalności SI. Wynikiem tej fazy są abstrakcyjne modele konceptualne. Modele te opisują najczęściej rodzaje i struktury informacji przetwarzanych w informatyzowanej instytucji oraz funkcjonalność oprogramowania przetwarzającego te informacje.
Etap projektowania polega na przejściu od abstrakcyjnych modeli konceptualnych do modeli implementacyjnych bazy danych i aplikacji.
Etap implementacji polega na zbudowaniu bazy danych w wybranej technologii implementacyjnej i zaimplementowaniu aplikacji.
Po przetestowaniu systemu jest on wdrażany u użytkownika. Po wdrożeniu do użytkowania, system należy utrzymywać w ciągłej, efektywnej i niezawodnej pracy.
Model ER można przedstawić w wielu różnych notacjach graficznych. Najpopularniejszymi są tu notacja Chena i notacja Barkera (wykorzystywana w produktach Oracle). Notacja Barkera będzie wykorzystywana na wykładzie.
Konkretny obiekt świata rzeczywistego jest reprezentowany jako wystąpienie encji (instancja encji).
"Firma zatrudnia pracowników. Chcemy przechowywać informacje nt. danych personalnych pracowników (imię, nazwisko, adres i numer telefonu)."
Na podstawie tego opisu można zbudować prosty model encji. Ponieważ chcemy przechowywać dane na temat pracowników, obiektem modelu będzie encja o nazwie Pracownik. Ponieważ wszyscy pracownicy firmy mają takie same cechy, więc encja będzie posiadała 4 atrybuty: imię, nazwisko, adres, nr_telefonu. Encja ta będzie reprezentowała wszystkich pracowników firmy i aktualnie zatrudnionych i zatrudnianych w przyszłości. Wystąpieniami tej encji są konkretni pracownicy firmy, jak pokazano na slajdzie.
"Parking firmy jest przeznaczony do parkowania wielu różnych samochodów. Chcemy przechowywać informacje o samochodach (marka, model, numer rejestracyjny), które mogą parkować na parkingu firmy."
Z tego opisu wynika, że najważniejszym obiektem modelu tego mikro-świata jest samochód opisany marką, modelem i numerem rejestracyjnym. Każdy samochód będzie więc reprezentowany za pomocą encji o nazwie Samochód z 3 atrybutami: marka, model, nr_rejestracyjny. Konkretne samochody na parkingu firmy będą wystąpieniami tej encji.
1. Każda encja posiada unikalną nazwę.
2. Każda encja posiada zbiór cech (atrybutów).
3. Encje wchodzą w związki z innymi encjami (wyjątkiem są encje reprezentujące dane słownikowe i konfiguracyjne).
4. Dowolna rzecz lub obiekt może być reprezentowana tylko przez jedną encję.
5. Nazwa encji powinna być rzeczownikiem w liczbie pojedynczej.
Identyfikator encji jest to atrybut lub zbiór atrybutów jednoznacznie identyfikujący wystąpienie encji. W skład identyfikatora mogą wchodzić również atrybuty i związki lub same związki.
Wyróżnia się identyfikatory naturalne np. PESEL, NIP, nr dowodu, nr paszportu, nr rejestracyjny, ISBN i identyfikatory sztuczne, np. numer pozycji katalogowej, identyfikator pracownika.
- nazwę,
- dziedzinę definiującą: typ danych i maksymalny rozmiar, zbiór dozwolonych wartości lub zakres dozwolonych wartości,
- informację czy są dozwolone / niedozwolone wartości puste,
Opcjonalnie, dla atrybutu można zdefiniować unikalność wartości.
"Pracownicy firmy posiadają różne samochody. Chcemy przechować informację na temat faktu posiadania samochodu przez pracownika."
Na podstawie tego opisu można zbudować prosty model związków-encji. Ponieważ chcemy przechowywać dane na temat pracowników i samochodów, obiektami modelu będą encje Pracownik i Samochód. Encje te będą połączone związkiem. Na slajdzie jest on reprezentowany jako linia przerywana łącząca obie encje. Dodaktowo, oba końce związku są opisane tekstami. Związek ten należy interpretować następująco: pracownik posiada samochód; samochód jest własnością pracownika. Opisy związków powinny być krótkie, zwykle powinny to być czasowniki lub rzeczowniki odczasownikowe.
Chcielibyśmy dodatkowo wiedzieć:
Ile samochodów może posiadać pracownik?
Ilu pracowników może posiadać ten sam samochód?
Czy każdy samochód musi do kogoś należeć?
Czy każdy pracownik musi posiadać samochód?
"Pracownicy firmy posiadają samochody. W celu udostępnienia miejsca parkingowego należy zarejestrować pracownika i jego samochód. Każdy pracownik ma prawo parkować tylko jeden konkretny samochód. Nie każdy pracownik ma samochód. Zarejestrowany w rejestrze parkingowym samochód na pewno jest własnością jednego pracownika."
Na diagramie opcjonalność związku jest oznaczana linią przerywaną, a obowiązkowość - liną ciągłą.
"Każdy dział musi mieć kierownika, natomiast pracownik może być kierownikiem co najwyżej jednego działu."
Związek ten łączy encję Pracownik z encją Dział. Jest to związek 1:1 opcjonalny od strony pracownika (linia przerywana) i obowiązkowy - od strony działu (linia ciągła). Oznacza to, że spośród wszystkich pracowników tylko jeden jest kierownikiem konkretnego działu. Istnieją pracownicy, którzy nie są kierownikami żadnych działów. Z drugiej strony, każdy dział musi mieć dokładnie jednego kierownika, którym jest pracownik.
"Każdy pracownik pracuje dokładnie w jednym dziale. Dział może zatrudniać (ale nie koniecznie) wielu pracowników."
Związek ten łączy encję Pracownik z encją Dział. Jest to związek 1:M obowiązkowy od strony pracownika i opcjonalny - od strony działu. Oznacza to, że każdy pracownik musi pracować w jakimś dziale. Wielu pracowników pracuje w tym samym dziale. Z drugiej strony, każdy dział może zatrudniać przynajmniej jednego pracownika. Mogą istnieć działy, które nikogo nie zatrudniają.
Typ asocjacji "wiele" jest oznaczony na diagramie w postaci rozwidlającej się linii dochodzącej do encji, w naszym przykładzie - Pracownik. Jak się domyśliliśmy z poprzednich przykładów, typ asocjacji "jeden" jest reprezentowany jako normalna linia dochodząca do encji, w naszym przykładzie - Dział.
"Pracownik może brać udział w jednym lub wielu projektach; może też nie brać udziału w żadnym projekcie. Każdy projekt realizuje przynajmniej jeden pracownik."
Związek ten łączy encję Pracownik z encją Projekt. Jest to związek M:N opcjonalny od strony pracownika i obowiązkowy - od strony projektu. Oznacza to, że każdy pracownik może realizować jeden lub wiele projektów. Mogą również istnieć pracownicy nie realizujący żadnego projektu. Z drugiej strony, każdy projekt musi być realizowany przez jednego lub wielu pracowników.
- każdy student może należeć do jednej lub wielu organizacji studenckich,
- mogą istnieć studenci nie należący do żadnej organizacji,
- dana organizacja może zrzeszać jednego lub wielu studentów,
- mogą istnieć organizacje, które nie zrzeszają żadnego studenta.
"Pracownik może brać udział w jednym lub wielu projektach; może też nie brać udziału w żadnym projekcie. Każdy projekt realizuje przynajmniej jeden pracownik. Dla pracowników, którzy biorą udział w projektach należy zapamiętać ich funkcję, wynagrodzenie oraz daty początku i końca ich udziału w projekcie."
Z poniższego opisu wynika konieczność wprowadzenia encji Pracownik i Projekt powiązanych tak jak poprzednio związkiem M:N opcjonalnym od strony pracownika i obowiązkowym od strony projektu. Dodatkowo, udział pracownika w projekcie jest opisany funkcją pracownika, wynagrodzeniem oraz datą początku i końca uczestnictwa. Są to cechy związku.
W naszym przykładzie, należy wprowadzić encję Realizacja z atrybutami: funkcja, wynagrodzenie, od, do, reprezentującymi cechy związku. Do encji Realizacja dochodzą związki typu wiele, oba obowiązkowe od strony tej encji. Interpretacja obowiązkowości tych związków jest następująca:
- jeśli istnieje wystąpienie encji Realizacja, to musi ono dotyczyć jakiegoś projektu i pracownika,
- nie może istnieć realizacja bez pracownika i projektu.
Przykładem takiego związku jest model zależności służbowych, w których pracownicy posiadają swoich kierowników. Z jednej strony pracownik może mieć kierownika, tj. nie wszyscy pracownicy mają kierowników. Przykładowo, kierownik nie ma nad sobą kierownika. Z drugiej strony istnieją pracownicy, którzy nie są kierownikami.
Tego typu związek modelujący zależności hierarchiczne musi być opcjonalnym z obu stron. W przeciwnym przypadku, powstałaby hierarchia nieskończona.
"Istnieją podzespoły elementarne, niedekomponowalne i podzespoły złożone. Podzespół złożony składa się z kolejnych podzespołów. Każdy z kolejnych podzespołów może być złożony z innych podzespołów. Poziom złożoności podzespołów może być dowolny."
W modelu ze slajdu, encja Podzespół jest powiązana sama z sobą związkiem 1:M opcjonalnym z obu stron. Oznacza to, że każdy podzespół może się składać z wielu innych podzespołów. Z drugiej strony, każdy podzespół może być częścią innego podzespołu złożonego.
"Kierowca może otrzymać mandat za popełnione wykroczenie. Mandat jest wystawiany przez konkretnego policjanta."
W modelu dla tego opisu należy wykorzystać trzy encje: Kierowca, Policjant, Wykroczenie. Związek ternarny łączy wystąpienia tych trzech encji, jak pokazano na slajdzie.
"Firma zatrudnia pracowników kontraktowych i godzinowych. Wszyscy pracownicy posiadają pewien zbiór wspólnych atrybutów (PESEL, imię, nazwisko, adres). Pracownicy kontraktowi i godzinowi posiadają specyficzne dla siebie atrybuty. Dla pracowników kontraktowych jest to numer kontraktu, a dla pracowników godzinowych są to: liczba godzin pracy w tygodniu i stawka godzinowa."
W proponowanym modelu wyróżnia się encję generalizacji o nazwie Pracownik i dwie encje specjalizacji: Kontraktowy i Godzinowy. Encja generalizacji Pracownik posiada atrybuty wspólne dla wszystkich pracowników, tj. i kontraktowych i godzinowych. Atrybutami wspólnymi są: PESEL, Imię, Nazwisko. Encja Kontraktowy posiada jeden atrybut, który jest specyficzny wyłącznie dla pracowników kontraktowych, tj. numer kontraktu. Encja Godzinowy posiada dwa atrybuty specyficzne tylko dla pracowników godzinowych, tj. atrybut liczba godzin i stawka.
- podencje dziedziczą wszystkie atrybuty swojej nadencji,
- każde wystąpienie nadencji jest zawsze wystąpieniem jednej podencji,
- semantyka związku generalizacji oznacza, że każde wystąpienie podencji JEST wystąpieniem nadencji; przykładowo, pracownik kontraktowy JEST pracownikiem, pracownik godzinowy JEST pracownikiem,
- identyfikator nadencji jest wspólny dla wszystkich jej podencji,
- podencje nie posiadają swoich identyfikatorów.
Związek encji KLIENT z encją DYSPONENT dotyczy zarówno klientów osoby fizyczne jak i klientów osoby prawne. Jest więc związkiem wspólnym dla wszystkich podencji encji KLIENT. Podobnie jest w przypadku związku encji RACHUNEK z encją DYSPONENT.
Ponadto, podencje mogą wchodzić w związki specyficzne wyłącznie dla siebie. Związek podencji ROR z encją HIST_OPERACJI jest związkiem specyficznym dla ROR, tj. obowiązuje tylko dla tej podencji.
Przypadek 2, czyli związek rekursywny 1:M obustronnie obowiązkowy jest niepoprawny ponieważ modeluje hierarchię nieskończoną "w górę" i "w dół". Gdyby zamodelować hierarchię jednostek organizacyjnych w taki sposób, wówczas każda jednostka musiałaby mieć jednostkę nadrzędną i podrzędną. Każda z jednostek nadrzędnych musiałaby mieć kolejną jednostkę nadrzędną itd. Podobnie byłoby w przypadku jednostek podrzędnych.
Przypadek 3 ilustruje błędny model hierarchii nieskończonej "w dół", a przypadek 4 ilustruje błędny model hierarchii nieskończonej "w górę".