Modelowanie związków encji

Transkrypt

Modelowanie związków encji
Modelowanie związków encji
Instrukcja
1. Projekt danych metodą modelowania związków encji
Do projektowania struktury bazy danych wykorzystuje się metodę Modelowania Związków Encji Jest
to powszechnie stosowana metoda inżynierii informacji autorstwa Chen'a (I976r), służąca do
konstruowania wysokiej jakości modeli danych.
Metoda Modelowania Związków Encji obejmuje identyfikację:
– rzeczy ważnych w świecie rzeczywistym, za pomocą obiektów (encji),
–
–
sposobów jakimi te obiekty są powiązane tzw. związków
własności tych obiektów i własności powiązań tj. ich atrybutów.
Obiekt (encja) to rzecz istotna, rzeczywista bądź wyobrażona, o której informacje muszą być znane
lub przechowywane. Informacje te to np. wartości atrybutów obiektu oraz zależności, w jakich pozostaje
dany obiekt z innymi obiektami. Graficzną reprezentacją obiektów jest prostokąt z umieszczoną
w środku jego nazwą.
NAZWA
Związek jest nazwanym, istotnym powiązaniem, jakie istnieje między dwoma lub więcej obiektami.
W szczególnym przypadku może być powiązaniem tego samego obiektu z samym sobą (związek
rekurencyjny). Związek jest przedstawiany za pomocą rombu z przypisaną mu nazwą etykiety.
Version 2.0
Gliwice 2009
NAZWA
Każdy związek ma przypisaną liczebność (liczbę wystąpień). Mogą istnieć związki 1:1, związki
M:N, oraz związki 1:N.
Atrybut jest to odwzorowanie typu obiektu lub typu związku w zbiór wartości. Atrybuty możemy
podzielić na:
–
atrybuty pojedyncze,
– atrybuty wielowartościowe.
Atrybuty są reprezentowane przez elipsy przyłączone do odpowiedniego obiektu bądź związku.
NAZWA
Za pomocą tych symboli tworzy się logiczny model danych (Entity Relationship Diagram),
przedstawiający informację przetwarzaną w modelowanym wycinku rzeczywistości, abstrahując od
ograniczeń narzuconych przez implementację.
Aby przekształcić model logiczny utworzony metodą Modelowania Związków Encji w schemat
relacyjnej bazy danych (czyli zbiór schematów relacji) należy zastosować następujący algorytm:
1. Utworzyć schemat relacji dla każdego typu obiektu
Do schematu wchodzą wszystkie atrybuty pojedyncze opisujące ten obiekt. Trzeba wyróżnić
atrybuty w tym atrybuty kluczowe, identyfikujące w sposób jednoznaczny wystąpienie danego obiektu.
Klucz obiektu jest kluczem schematu.
2. Utworzyć dodatkowy schemat relacji dla każdego atrybutu wielowartościowego
Do schematu tego wchodzi klucz obiektu oraz atrybut wielowartościowy. Kluczem jest cały
schemat relacji.
3. Utworzyć schemat relacji dla każdego typu związku
Do schematu tego wchodzą atrybuty własne związku oraz klucze obiektów wchodzących w związek.
2
–
jeśli związek jest typu 1: N, to kluczem relacji jest atrybut kluczowy tego obiektu, który
wchodzi przez krawędź N,
–
–
jeśli związek jest typu M:N, to kluczem staje się złożenie kluczy obu encji.
jeśli związek jest typu 1:1, to kluczem jest dowolny z kluczy obiektów wchodzących
w związek.
4. Dokonać optymalizacji schematów, które powstają dla związków 1:N i 1:1, scalić schematy
o identycznych kluczach
3
2. Przykład
Rozważmy następujący problem (który jest z konieczności uproszczeniem analizowanego wycinka
rzeczywistości): Mała spółdzielnia lekarska zamówiła projekt bazy danych mającej usprawnić jej
działalność. Baza ma przechowywać dane o wizytach pacjentów – lekarza, datę wizyty, rozpoznaną
jednostkę chorobową (może być kilka) oraz zaordynowane medykamenty wraz z dawkami (jak często
i ile). Dla pacjenta przechować: nazwisko, imię i adres; dla lekarza: numer, imię i nazwisko; dla
lekarstwa: kod i nazwę; dla jednostki chorobowej: numer, nazwę, krótki opis i symptomy. Pacjenci nie są
przypisani do lekarzy – umawiają się na wizyty, obsługiwane przez dostępnych lekarzy. Baza powinna
przechowywać katalog lekarstw.
Dalsze analiza ujawniła, że użyteczne byłoby przechowanie opisu objawów i standardowego leczenia
poszczególnych chorób oraz rekomendowanych lekarstwach i ich dawkach. Również interakcje pomiędzy
lekami byłyby interesujące. Można przy tym założyć, że wystarczy zapamiętać interakcje pomiędzy
parami lekarstw.
Jak wspomniano w rozdziale pierwszym, na początku należy zidentyfikować obiekty (ang. entities),
a w następnym kroku określić związki między nimi. Dla omawianego przykładu uzyskuje się diagram
przedstawiony na rysunku 1.
Kolejnym krokiem jest wyznaczenie atrybutów poszczególnych obiektów i związków, co
zaprezentowano na rysunku 2. Na diagramie tym warto zauważyć, że dawka jaką zaleca się konkretnemu
pacjentowi przy zażywaniu określonego leku umieszczona została w związku między obiektem Pacjent
oraz obiektem Lekarstwo.
Następnie model logiczny przekształcony zostaje do modelu fizycznego. Związki o liczności 1:N są
implementowane jako klucze obce (ang. foreign keys) a związki z licznością M:N zostaną razem
z obiektami przekształcone w tabele bazy danych. Model fizyczny stanowiący podstawę opisujący
wszystkie tabele i kolumny, które mają być utworzone w bazie danych przedstawiony jest na rysunku 3.
4
Fig. 1. Logiczny (koncepcyjny) model danych bez atrybutów
5
Fig. 2. Logiczny (koncepcyjny) model danych z atrybutami
.
6
Fig. 3. Fizyczny model danych
Na podstawie fizycznego modelu danych można utworzyć skrypt tworzący bazę danych.
Całość prezentowanego procesu może być wspomagana przez narzędzia klasy CASE (ang. ComputerAided Software Engineering). Przykładem takiego programu może być opisany dalej program
EasyCASE, w którym wygenerowane zostały wszystkie rysunki oraz poniższy skrypt.
CREATE TABLE PACJENCI
(NR_UBEZPIECZENIA
NAZWISKO
ADRES
TELEFON
PRIMARY KEY (NR_UBEZPIECZENIA));
CHAR
CHAR
CHAR
CHAR
(30) NOT NULL,
(50) NOT NULL,
(100),
(20),
CREATE TABLE LEKARZE
(NR_LEKARZA
NAZWISKO
ADRES
TELEFON
PRIMARY KEY (NR_LEKARZA));
CHAR
CHAR
CHAR
CHAR
(6) NOT NULL,
(50) NOT NULL,
(100),
(20),
7
CREATE TABLE WIZYTY
(NR_WIZYTY
INTEGER NOT NULL,
NR_UBEZPIECZENIA
CHAR (30) NOT NULL,
NR_LEKARZA
CHAR (6) NOT NULL,
DATA_WIZYTY
DATE NOT NULL,
CZAS_WIZYTY
TIME NOT NULL,
OBJAWY
CHAR (200) NOT NULL,
NOTATKI
CHAR (200),
PRIMARY KEY (NR_WIZYTY),
FOREIGN KEY (NR_UBEZPIECZENIA) REFERENCES PACJENCI,
FOREIGN KEY (NR_LEKARZA) REFERENCES LEKARZE);
CREATE TABLE LEKARSTWA
(KOD_LEKARSTWA
DRUG_NAME
SKLAD
PRZECIWSKAZANIA
SKUTKI_UBOCZNE
PRIMARY KEY (KOD_LEKARSTWA));
CHAR
CHAR
CHAR
CHAR
CHAR
(12) NOT NULL,
(70) UNIQUE NOT NULL,
(200) NOT NULL,
(200),
(200),
CREATE TABLE CHOROBY
(KOD_CHOROBY
NAZWA_CHOROBY
OBJAWY
LECZENIE
PRIMARY KEY (KOD_CHOROBY));
CHAR
CHAR
CHAR
CHAR
(12) NOT NULL,
(100) NOT NULL,
(200) NOT NULL,
(200),
CREATE TABLE PRZEPISANE
(NR_WIZYTY
INTEGER NOT NULL,
KOD_LEKARSTWA
CHAR (12) NOT NULL,
DAWKA
NUMERIC (12,6) NOT NULL,
JEDNOSTKA_MIARY
CHAR (3),
DAWKOWANIE
CHAR (30) NOT NULL,
OKRES
CHAR (20) NOT NULL,
PRIMARY KEY (NR_WIZYTY, KOD_LEKARSTWA),
FOREIGN KEY (NR_WIZYTY) REFERENCES WIZYTY,
FOREIGN KEY (KOD_LEKARSTWA) REFERENCES LEKARSTWA);
CREATE TABLE LECZY
(KOD_LEKARSTWA
CHAR (12) NOT NULL,
KOD_CHOROBY
CHAR (12) NOT NULL,
TYPOWA_DAWKA
NUMERIC (12,6),
JEDNOSTKA_MIARY
CHAR (3),
TYPOWE_DAWKOWANIE
CHAR (200),
TYPOWY_OKRES
CHAR (20),
PRIMARY KEY (KOD_LEKARSTWA, KOD_CHOROBY),
FOREIGN KEY (KOD_LEKARSTWA) REFERENCES LEKARSTWA,
FOREIGN KEY (KOD_CHOROBY) REFERENCES CHOROBY);
CREATE TABLE INTERAKCJE
(KOD_LEKARSTWA1
KOD_LEKARSTWA2
CHAR (12),
CHAR (12),
8
DESCRIPTION
CHAR (200),
PRIMARY KEY (KOD_LEKARSTWA1, KOD_LEKARSTWA2),
FOREIGN KEY (KOD_LEKARSTWA2) REFERENCES LEKARSTWA,
FOREIGN KEY (KOD_LEKARSTWA1) REFERENCES LEKARSTWA);
3. Podstawy korzystania z programu EasyCASE
Program EasyCASE jest prostym narzędziem klasy CASE (ang. Computer-Aided Software Engineering),
tzn. narzędziem wspierającym analizę, projektowanie, implementację, testowanie i ewolucję
oprogramowania. Obejmuje zarówno modelowanie danych (w tym w notacji Chen’a) jak i strukturalne
modelowanie procesów. Na laboratorium będzie wykorzystywane tylko modelowanie danych.
3.1. Tworzenie projektu
Program EasyCASE przechowuje wszystkie elementy projektu, w tym diagramy, w jednej kartotece
systemu operacyjnego tworzonej podczas tworzenia nowego projektu. Operacja ta przebiega
w następujących krokach:
1. wybór z menu File pozycję Project.
2. wskazanie w oknie dialogowym lokalizacji projektu podając jego nazwę na końcu ścieżki w polu
Directory.
3. akceptacja tworzenia projektu przyciskiem Open.
4. potwierdzenie chęci utworzenia kartoteki z projektem.
Następnie EasyCASE wyświetla okno dialogowe Create New Project Configuration umożliwiające
konfigurację projektu. EasyCASE ułatwia utrzymanie spójności projektu poprzez wybór metodyki
modelowania danych i procesów, co w konsekwencji ograniczy wybór elementów do zdefiniowanych
w wybranych metodykach.
9
Fig. 4. Konfiguracja nowego projektu
Podczas konfiguracji nowego projektu musi zostać notacja Chena.
3.2. Tworzenie diagramów
Wszystkie tworzone elementy są przechowywane w repozytorium projektu. Graficzne reprezentacje
wybranych elementów są umieszczane na diagramach.. Aby utworzyć diagram typu ERD (Entity
Relationship Diagram) należy:
1. Wybrać New... z menu File lub kliknąć przycisk New Chart w pasku narzędzi.
2. EasyCASE wyświetli okno dialogowe New Chart (fig.9).
3. Z listy Chart Type należy wybrać Entity Relationship Diagram i podać jego nazwę w polu Chart
Name.
Fig. 5. Tworzenie diagramu ERD
10
3.3. Tworzenie encji i związków
Encje i związki należy dodawać rysując je na diagramie z użyciem palety przedstawionej na rysunku 6.
Tryb edycji
Encja
Encja słaba
Split Entity
Związek
Związek identyfikujący
Atrybut
Atrybut klucza głównego
Atrybut klucza obcego
Atrybut wielowartościowy
Atrybut wywiedziony
Asocjacja
Podtyp / Nadtyp
Blok tekstu
Fig. 6. Paleta obiektów (ang. Object palette) wykorzystywana na diagramach ERD w notacji Chen’a
Dodanie elementu do diagramu powoduje zapisanie go w słowniku danych z nadaną mu podczas
tworzenia nazwą. Nazwa ta jest ograniczona do 32 znaków. Usunięcie nazwy powoduje usunięcie
związanego z nią obiektu.
Łączenie elementów na diagramach polega na przeciąganiu łączących ich linii, nazywanych w programie
EasyCASE asocjacjami. Linie te można przeciągać pomiędzy portami obiektów oznaczanymi małymi
prostokątami. Narzędzie sprawdza poprawność tworzonych połączeń.
3.4. Definiowanie rekordów
Symbol obiektu jest połączony ("explodes") z obiektem rekordu, który definiuje strukturę tabeli bazy
danych. W notacji Chen’a także związki M:N oraz związki n-arne powinny być związane z rekordem .
W rekordzie definiujemy nazwę tabeli, nazwę indeksu (jeśl istnieje taka potrzeba) oraz listę kolumn
tabeli. Każda kolumna definiowana jest poprzez nazwę (do 32 znaków) i odnosi się do element słownika
danych, który umożliwia uszczegółowienie danych o kolumnie, takich jak: typ, długość czy ograniczenia.
Aby połączyć obiekt lub związek z definicją rekordu należy:
1. Wybrać:
a. Define Child... z menu Edit
b. lub z Edit menu prawego klawisza myszy ,
c. lub kliknąć przycisk Define Child w oknie Toolbar.
EasyCASE wyświetla okno dialogowe Define Child (rysunek 7).
11
Fig.7. Rozwijanie encji lub związku w rekord
2. Wybrać Record z listy Child Type. EasyCASE automatycznie wypełni pole Child Name nazwą
obiektu.
3. Nazwę tę można zaakceptować lub wprowadzić własną i zatwierdzić przyciskiem OK.
4. Przejść do definicji rekordu przez wybór Goto Child z menu Explodes. EasyCASE wyświetli
okno dialogowe Record DDE Screen.
Fig.8. Definiowanie kolumn (komponentów rekordu)
12
3.5. Tworzenie kolumn, kluczy głównych, kluczy alternatywnych i kluczy obcych
Kolumny odpowiadające atrybutom obiektów lub związków powinny być definiowane jako komponenty
rekordu. Nazwa kolumny może być wprowadzone we własnym zakresie lub wybrana z listy Component
Name. W pierwszym należy zdefiniować pozostałe cechy elementu w edytorze elementu dostępnym po
dwukrotnym klknięciu kolumny lub wybraniu przycisku Explode.
Fig.9. Definiowanie właściwości kolumny (elementu rekordu)
Po zdefiniowaniu kolumn dla tabeli można określić klucze główne (primary key PK), klucze alternatywne
(alternate keys AK) oraz klucze obce (foreign keys FK).
1. Aby utworzyć klucz główny należy wybrać właściwą kolumnę lub kolumny i w polu PK wpisać Y
2. Aby utworzyć kolumnę klucza obcego należy dodać ją samodzielnie do tabeli wybierając z listy
komponentów i połączyć ją za pomocą przycisku Link z właściwą tabelą. Dodatkowo kolumna ta
musi zostać oznaczona za pomocą dwuznakowego kodu FK uzupełnionego opcjonalnie numerami od
1 do 99. Numer ten jest obowiązkowy, jeśli w tabeli znajduje się więcej niż jeden klucz obcy.
Podobna zasada nazewnictwa dotyczy kluczy alternatywnych.
13

Podobne dokumenty