Diagram Związków Encji
Modelowanie informacji jest techniką organizacji przechowywania danych. Modele
danych można opracowywać na różnych poziomach szczegółowości wykorzystując technikę
diagram związków encji (ang. Entity Relationship Diagram – ERD). Podstawowymi
pojęciami tego modelu są: encja, atrybut i związek (tabela 12).
Tabela 1. Komponenty diagramu związków encji
Komponent
Opis
Encja
Rzecz mająca znaczenie, rzeczywista lub wymyślona,
o której informacje należy znać lub przechowywać.
Atrybut
Element informacji służący do klasyfikowania,
identyfikowania, kwalifikowania, określania ilości lub
wyrażania stanu encji.
Związek
Znaczący sposób, w jaki mogą być ze sobą powiązane
dwie rzeczy tego samego typu lub różnych typów.
Przykład prostego
diagramu
związków encji
KLIENT
* Nazwa
* Adres
o e_mail
FAKTURA
Atrybuty
Encja
Zwi
ą
zek
Encja (ang. entity) – jest to jednoznacznie identyfikowany składnik badanej
rzeczywistości, o którym informacja jest lub może być zbierana i przechowywana.
Przykładami encji są: PRACOWNIK, KLIENT, DOSTAWCA, ZAMÓWIENIE,
MAGAZYN, FAKTURA, POZYCJA, PRZECENA, KONTO. Encja jest urzeczywistniona
poprzez wystąpienie. Przykładowo, wystąpieniami encji KLIENT są: Nowak, Dobrowolski,
Kwiatkowski itd.
Uwaga: encje opisuje się za pomocą rzeczowników lub wyrażeń rzeczownikowych
w liczbie pojedynczej.
Atrybut – jest cechą, elementem charakteryzującym encje i związki w badanej
dziedzinie przedmiotowej. Atrybut ma jedno z pięciu zadań: identyfikować, opisywać,
klasyfikować, określać ilość lub wyrażać stan encji (tabela 13).
Tabela 2. Rodzaje atrybutów
Przykład
Przeznaczenie
numer zamówienia
identyfikacja
opis towaru
opis werbalny
typ towaru
klasyfikacja
ilość towaru w magazynie
określenie ilości
status płatności za zamówienie
wyrażenie stanu
Zestaw atrybutów, który jednoznacznie opisuje encję, nazywa się wiązką atrybutów.
Wiązka powinna składać się, z co najmniej dwóch atrybutów opisujących daną encję.
Szczególną rolę z zakresie atrybutów encji pełni klucz, zwany identyfikatorem. Pozwala on
na jednoznaczne określenie wystąpienia encji. Jeśli używa się jednego atrybutu dla określenia
encji, to mamy do czynienia z kluczem pojedynczym, a jeśli w tym celu używa się więcej niż
jednego atrybutu, to z kluczem złożonym. Znak kratki (# - hash) z lewej strony atrybutu
oznacza, że ten atrybut jest unikalnym identyfikatorem dla encji lub wchodzi w jego skład.
Wymagania dla atrybutu można przedstawić następująco:
•
nazwa atrybutu musi być unikalna w ramach encji;
•
atrybut musi być obowiązkowy (tzn., że wartość atrybutu musi być zawsze
określona) lub opcjonalny (tzn., że atrybut nie musi mieć wartości). Symbolu „*”
używa się dla atrybutu obowiązkowego, zaś symbolu „○” dla opcjonalnego;
•
atrybut musi mieć format lub typ;
Uwaga: w danym modelu konceptualnym należy używać różnych nazw dla tych
samych lub podobnych atrybutów, przypisanych różnym encjom. Przykładowo atrybut
nazwisko przypisany encjom NABYWCA, PRACOWNIK, ODBIORCA można nazwać –
n_nazwisko, p_nazwisko, o_nazwisko.
Z każdym atrybutem związana jest dziedzina atrybutu, stanowiąca zbiór wartości, które
są jemu podporządkowane oraz zbiór reguł walidacji. Atrybut jest, więc funkcją, wiążącą
encje lub związki z dziedzinami wartości. Dana dziedzina może przybrać postać wartości (np.
z przedziału liczb naturalnych), skończonego zestawu wartości (np. rodzaje stawek podatku
VAT: zw, 0%, 7%, 12%, 22%) lub wartości binarnych (np. T lub N, O lub 1). Każdemu
atrybutowi w danym wystąpieniu encji lub związku przyporządkowaną jest tylko jedna
wartość z jego dziedziny.
Rysunek 24 przedstawia ilustrację graficzną encji wraz z jej atrybutami
i przykładowymi wystąpieniami encji.
Encja – STUDENT
Wystąpienia encji:
STUDENT
# nr albumu
* imi
ę
* nazwisko
* data urodzenia
* miejsce urodzenia
Encja – SAMOCHÓD
Wystąpienia encji:
SAMOCHÓD
# nr rejestracyjny
* typ
* rok produkcji
* cena
* kolor
* pojemno
ść
silnika
aaaaolx
Rysunek 1. Przykładowe atrybuty dla encji STUDENT i SAMOCHÓD
Związek stanowi naturalne powiązanie pomiędzy dwoma lub więcej encjami w badanej
dziedzinie przedmiotowej. W identyfikowaniu i modelowaniu związków encji bierze się pod
uwagę następujące cechy: stopień związku (lub liczebność związku) i opcjonalność (lub
uczestnictwo encji).
Stopień związku – oznacza stosunek ilościowy między liczebnością wystąpień
poszczególnych encji, uczestniczących w danym związku. Stopień związku mówi o tym, ile
wystąpień encji jednego rodzaju jest powiązanych z iloma wystąpieniami encji innego rodzaju
(tabela 14).
Tabela 3. Przykłady związków encji
Stopień
Przykład
Znaczenie
Mat/123/04
Jan
Kowalski
14-05-1990
Dobre Miasto
Mat/345/04
Anna
Nowak
21-05--1986
Dobre Miasto
OLX 2361
Nissan Almera
2000
55000
Czerwony
1,6 m
3
OM- 2388
Renault
2004
62000
Złoty
1,4 m
3
związku
1:1
Dziekan-Wydział
Każde wystąpienie encji Dziekan jest
powiązane tylko z jednym wystąpieniem encji
Wydział. Zatem jeden Dziekan kieruje
jednym Wydziałem
1:M
1: wiele
Wydział-Student
Każde wystąpienie encji Wydział powiązane
jest jednym lub wieloma wystąpieniami encji
Student, przy czym każde wystąpienie encji
Student
powiązane
jest
tylko
jednym
wystąpieniem encji Wydział.
Zatem Wydział posiada wielu Studentów,
natomiast Student studiuje wyłącznie na
jednym Wydziale
M:N
Wiele : wiele
Książka - Autor
Każde wystąpienie encji Książka powiązane
jest z wieloma wystąpieniami encji Autor
i odwrotnie każde wystąpienie encji Autor
powiązane jest z wieloma wystąpieniami encji
Książka.
Jest to sytuacja, gdzie Książka może być
napisana przez jednego lub wielu autorów
i jeden Autor jest podpisany pod jednym lub
wieloma tytułami Książek.
Opcjonalność dotyczy zaangażowania encji w związek (rysunek 25). Z uwagi na tę
cechę wyróżnia się dwa typy związków:
•
wymagane (obowiązkowe) – zachodzi wówczas, jeśli wszystkie wystąpienia encji
muszą uczestniczyć w związku;
•
opcjonalne - zachodzi wówczas, jeśli istnieje, co najmniej jedno wystąpienie
encji, które nie uczestniczy w związku.
Typ zwi
ą
zku
(opcjonalno
ść
)
Stopie
ń
zwi
ą
zku
jeden - do - jednego
jeden - do - wielu
wiele - do - wielu
zwi
ą
zek
wymagany
(obowi
ą
zkowy)
zwi
ą
zek
opcjonalny
Rysunek 2. Cechy związków encji (notacja Martina)
Odczytywanie związku poprawia zrozumienie sytuacji i umożliwia weryfikację modelu
z użytkownikami końcowymi. Rysunek 26 przedstawia zasadę odczytywania związku.
Przykład:
Ka
ż
da Encja 1
musi by
ć
lub
mo
ż
e by
ć
nazwa zwi
ą
zku
jeden lub wiele
lub
jeden I tylko jeden
Encja 2
Ka
ż
dy Klient mo
ż
e zło
ż
y
ć
jedno lub wiele Zamówie
ń
.
Ka
ż
de Zamówienie musi by
ć
zlecone przez jedngo i tylko jednego Klienta.
Zamówienia
Klient
jest zlecone
składa
Rysunek 3. Reguły czytania związków encji
Tworzenie diagramu związków encji najlepiej rozpocząć od wskazania encji oraz
określić związki między encjami występującymi w danej dziedzinie przedmiotowej. Istnieje
kilka najbardziej rozpowszechnionych notacji graficznych diagramu ERD. Należą do nich
notacje Chena, Bachmana, Martina, Shlaer_Mellora. Ponieważ w zasadzie notacje te są
równoważne i różnią się jedynie wyglądem symboli graficznych, do opisu wybrano
najbardziej rozpowszechnioną notację Martina. Rysunek 25 przedstawia symbole graficzne
typów związków używane w tej notacji natomiast tabela 15 przedstawia typy encji
wynikające z reguł istnienia encji w związku.
Tabela 4. Typy encji ERD (notacja Martina)
Typy encji
Notacja Martina
Encja regularna– oznacza dowolny znaczący element,
o którym informacja powinna być znana albo
utrzymywana (częściowe uczestnictwo w związku).
Pracownik
Encja słaba – jest to encja, która może istnieć tylko
wtedy, gdy jest związana z innymi encjami lub też nie
posiada własnych atrybutów kluczowych (całkowite
uczestnictwo w związku)
Sprz
ę
t
Encja – obiekt asocjacyjny – przechowuje informacje
o związku pomiędzy dwiema encjami.
Wypo
ż
yczenie
Uwaga: Istnieją trzy metody klasyfikowania związków: jako całkowite lub częściowe,
opcjonalne lub obowiązkowe oraz uzależnione od kategorii encji słabych lub regularnych.
Rysunek 27 przedstawia przykładowy prosty diagram ERD zawierający różne typy
encji opisane w tabeli 15. Każda z encji PRACOWNIK (id_pracownik, imię, nazwisko) i TYP
(id_typ, nazwa) jest encją regularną. Zatem stanowi ona obiekt o cechach w postaci
atrybutów, wśród, których wyróżniony jest klucz główny oraz atrybuty ją opisujące. Encja
SPRZĘT (nr_ewidencyjny, nazwa, id_typ) jest encją słabą, ponieważ nie może samodzielnie
istnieć bez zdefiniowania obiektu TYP przechowującego informacje o typie sprzętu.
Natomiast encja WYPOŻYCZENIE (id_pracownik, id_sprzęt, data_wypożyczenia) jest
obiektem asocjacyjnym, ponieważ przechowuje informacje o związku pomiędzy encją
PRACOWNIK i SPRZĘT.
Pracownik
Sprz
ę
t
Typ
Wypo
ż
yczenie
wypo
ż
ycza
zwi
ą
zane jest
rejestruje
dotyczy
nale
ż
y
okre
ś
la
Rysunek 4. Diagram ERD z wyróżnionymi typami encji
Diagramu ERD jest narzędziem do komunikowania za pomocą, którego osiąga się
z użytkownikiem końcowym porozumienie, co do wymagań biznesowych. Identyfikuje
i opisuje on dane wymagane przez system oraz pokazuje jak w systemie powiązane są ze sobą
elementy danych. Dodatkowo należy również sformułować ograniczenia nałożone na
związek, które noszą nazwę reguł integralności. Stanowi on podstawę do projektowania bazy
danych.
Uwaga: z innymi metodami projektowania ERD można się spotkać np. używając
narzędzi Oracla. Rysunek 28 zawiera przykładowa notację związków.
Rysunek 5. Typy połączeń encji (notacji Oracla)
Konceptualny model danych, którego odzwierciedleniem są diagramy ERD,
przekształcany jest w jeden z modeli baz danych: relacyjny, sieciowy, hierarchiczny. Nazywa
się to projektowaniem logicznym danych. W skrypcie podamy sposoby przekształcania
logicznego modelu danych w relacyjny model danych.
Podstawową terminologię relacyjną zawiera tabela 16.
Tabela 5. Terminologia relacyjna
Pojęcie
Opis
Relacja
Jest to podzbiór iloczynu kartezjańskiego reprezentowany przez
zbiór krotek. Reprezentacją relacji jest tablica.
Krotka
Oznacza wiersz tablicy. Reprezentacją krotki w tablicy jest rekord.
Atrybut
Oznacza kolumnę tablicy (a dokładnie są to różne wystąpienia tego
samego atrybutu). Reprezentacją atrybutu w tablicy jest pole.
Stopień relacji
Liczba typów atrybutów w relacji.
Liczebność relacji
Liczba krotek w relacji.
Klucz główny
Kolumna lub kombinacja kolumn, których wartości jednoznacznie
identyfikują wiersze w tablicy.
Klucz obcy
Kolumna lub kombinacja kolumn, których wartości określają klucz
główny innej tablicy.
Dziedzina (atrybutu)
Lista dostępnych wartości atrybutu, wszystkie tego samego typu.
Stworzenie relacyjnego modelu danych polega na wykonaniu następujących kroków
(rysunek 29):
•
każda encja staje się tablicą, której nazwa jest nazwą encji w liczbie mnogiej;
•
każdy atrybut staje się komuną, a jego nazwa odpowiednio nazwą tej kolumny.
Natomiast właściwości atrybutu stają się odpowiadającymi im właściwościami
w projekcie danych. Atrybuty obowiązkowe stają się kolumnami NOT NULL (co
oznacza, że nie jest możliwe by wartość kolumny przyjmowała wartość NULL);
•
unikalny identyfikator encji staje się kluczem głównym tabeli;
•
każdy związek jest przekształcany w dwa obiekty. Kolumnę klucz obcego, zgodną
z kluczem głównym (lub unikalnym) tabeli, której dotyczy. Dziedziczy ona typ
i rozmiar danego klucz głównego. Opcjonalność kolumny zależy od tego, czy
związek jest obowiązkowy czy opcjonalny. Więzy klucza obcego związane są
z kolumną klucza obcego.
Klienci
# id_klient
* nazwa
* adres
Klient
# id_klient
* nazwa
* adres
Logiczny model danych
Relacyjny model danych
Encja
Klient
Atrybuty
nazwa
unikalny identyfikator
Tabela
Klienci
Kolumny
nazwa
klucz głowny
Przekształcanie encji
Przekształcanie zwi
ą
zków
Klient
# id_klient
* nazwa
* adres
Klienci
# id_klient
* nazwa
* adres
Zamówienie
# id_zamówienia
* data zamówienia
…
Zamówienia
# id_zamowiania
* data-zamówienia
* id_klienta
...
Not NULL
Rysunek 6. Przekształcanie logicznego modelu danych w model relacyjny
Przykład 1. Zastosowanie reguł czytania związków do budowy logicznego modelu
danych
Stosując omówioną wyżej regułę czytania związków narysuj odpowiedni model danych
do przedstawionego kontekstu.
a) Kontekst: Stanowisko w firmie musi być obsadzone przez jednego lub wielu
pracowników. Pracownik musi być zatrudniony na dokładnie jednym stanowisku. Rysunek
30 przedstawia konstrukcję modelu danych tej sytuacji.
Stanowisko
Pracownik
jest zatrudniony
jest obsadzone
Rysunek 7. Typ związku encji wymagane - wymagane (obligatoryjny)
b) Kontekst: Producent może wytwarzać wiele produktów. Produkt musi mieć
ustalonego Producenta. Rysunek 31 przedstawia konstrukcję modelu danych tej sytuacji.
Producent
Produkt
wytwarza
ma
Rysunek 8. Typ związku wymagane – opcjonalne
c) Kontekst: Stowarzyszenie musi posiadać jednego lub wielu członków. Osoba może
należeć do jednego Stowarzyszenia. Rysunek 32 przedstawia konstrukcję modelu danych tej
sytuacji.
Stowarzyszenie
Osoba
posiada
nale
ż
y
Rysunek 9. Typ związku opcjonalne - wymagane
d) Kontekst: Osoba może wykupić wiele dodatkowych szczepień. Każde szczepienie
może dotyczyć wielu osób. Rysunek 33 przedstawia konstrukcję modelu danych tej sytuacji.
Osoba
Szczepienia
wykupuje
dotyczy
Rysunek 10. Typ związku opcjonalne – opcjonalne
Przykład 2. System Zamówień – budowa logicznego modelu danych
Firma LOS zajmuje się sprzedażą towarów i posiada na obecną chwile 2500 klientów.
Zamówienie towaru odbywa się poprzez wypełnienie formularza zamówienie przez klienta.
Każdy klient może złożyć jedno lub wiele zamówień. Zamówienie musi zawierać potrzebne
dane o kliencie i przyjmującym to zamówienie pracowniku. W dziale obsługi klienta
zatrudnionych jest wielu pracowników. Pojedyncze zamówienie musi dotyczyć jednego lub
wielu towarów. Towary dostarczane do firmy pochodzą od różnych dostawców.
a) Na podstawie analizy tekstu sporządź listę potrzebnych encji dla systemu
informatycznego ewidencjonującego zamówienia klienta.
b) Zaproponuj związki między tymi encjami.
c) Zaproponuj model związków encji w postaci ogólnego diagramu ERD.
d) Dla ogólnego diagramu ERD stwórz diagram szczegółowy z określeniem typów
encji.
Rozwiązanie:
„Firma LOS zajmuje się sprzedażą towarów i posiada na obecną chwile 2500 klientów.
Zamówienie towaru odbywa się poprzez wypełnienie formularza zamówienie przez klienta.
Każdy klient może złożyć jedno lub wiele zamówień. Zamówienie musi zawierać potrzebne
dane o kliencie i przyjmującym to zamówienie pracowniku. W dziale obsługi klienta
zatrudnionych jest wielu pracowników. Pojedyncze zamówienie musi dotyczyć jednego lub
wielu towarów. Towary dostarczane do firmy pochodzą od różnych dostawców.”
a) W analizowanym tekście zaznaczamy (pogrubiona czcionka) rzeczowniki jako
potencjalne encje.
Spośród wyróżnionych rzeczowników ustalamy kandydatów na encje (czyli obiekty
o których musimy przechowywać informację). W związku z tym powstaje następująca lista
encji: Klient, Pracownik, Zamówienie, Towar, Dostawca.
b) Natomiast wyróżnione (podkreślenie) czasowniki łączące rzeczowniki odpowiadać
będą związkom. Spośród zaznaczonych czasowników odszukujemy te, które dotyczą relacji
między wyróżnionymi obiektami (encjami) oraz wnioskujemy z tekstu ich krotność
i opcjonalność (wyrazy wyróżnione falą). W związku z tym powstaje następująca lista
związków dotyczących relacji pomiędzy encjami:
Każdy klient może złożyć jedno lub wiele zamówień.
Każde Zamówienie musi być zlecone przez jednego i tylko jednego klienta.
Pracownik może przyjąć zamówienie.
Zamówienie musi być załatwione przez pracowniku.
Zamówienie musi dotyczyć jednego lub wielu towarów.
Towar może występować na zamówieniu.
Dostawca musi posiadać w ofercie jeden lub wiele towarów
Towar musi pochodzić od jednego dostawcy.
c) Diagram ERD (notacja Martina):
Klient
Zamówienie
Towar
Dostawca
Pracownik
składa
przyjmuje
dotyczy
dostarcza
Rysunek 11. Diagram ogólny ERD systemu zamówień (notacja Martina)
d) Diagram ERD po usunięciu związku N:M (notacja Martina):
Klient
Zamówienie
Towar
Dostawca
Pracownik
składa
przyjmuje
składa si
ę
dostarcza
Pozycja
zamówienia
dotyczy
Rysunek 12. Diagram szczegółowy ERD (notacja Martina)