PROJEKT DANYCH METODĄ MODELOWANIA ZWIĄZKÓW ENCJI materiały do laboratorium Baz Danych dla AiR 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 identyfikowanie: 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. 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 1 Za pomocą tych symboli tworzy się logiczny model danych (Entity Relationship Diagrams), 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. – 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 2 Przykład wykorzystania metody Modelowania Związków Encji. Zaprojektować schemat bazy danych dla przychodni lekarskiej. W przychodni tej jeden pacjent jest leczony przez jednego lekarza ale jeden lekarz może leczyć kilku pacjentów. Różnym pacjentom przepisywane są różnego typu lekarstwa. W bazie danych należy przechowywać następujące informacje: – o lekarzu – nr_lekarski, PESEL, Nazwisko, Imię – o pacjencie – PESEL, Imię, Nazwisko, choroba(Nazwa i Typ), na którą choruje oraz zestaw przepisanych mu lekarstw do danej choroby (Nazwa i dawka). Na podstawie warunków zadania określone zostały cztery obiekty – Lekarz, Pacjent, Choroby i Lekarstwa. PESELP nr_lekarza N 1 Leczy Pacjent Lekarz M Leczy się K Lekarstwa nr_lekarstwa Między tymi obiektami zachodzą następujące związki: – lekarz leczy Npacjenta w związku 1:N (jeden lekarz leczy N pacjentów, dany pacjent dawka leczony jest przez 1-go lekarza) nr_choroby – pacjent leczy się na kilka chorób, wykorzystując do tego kilka typów lekarstw – obiekty te Choroby więc związane są jednym związkiem Leczy się M:N:K (kilku pacjentów może chorować na tę samą chorobę, jeden pacjent może chorować na kilka chorób M:N; jeden pacjent może pobierać kilka lekarstw, dane lekarstwo może być aplikowane kilku pacjentom K:M; i wreszcie dane lekarstwo może być stosowane do kilku chorób, a do jednej choroby może być stosowanych kilka lekarstw N:K) – dla zachowania czytelności rysunku, do obiektów dołączono po jednym, kluczowym atrybucie oraz do związku Leczy się dołączono atrybut dawka, określający jaką dawkę lekarstwa powinien zażywać dany pacjent chorujący na daną chorobę. Tworząc, na podstawie diagramu, schemat bazy danych otrzymujemy następujące relacje: – dla obiektów: Lekarz (nr_lekarza, nazwisko, imię, PESELL) Pacjent(PESELP, nazwisko, imię) Choroby(nr_choroby, nazwa, typ) Lekarstwa(nr_lekarstwa, nazwa) 3 – dla związków Leczy(nr_lekarza, PESELL) Leczy_się(PESELP, nr_choroby, nr_lekarstwa, dawka) Klucze schematów zostały podkreślone. Kolejnym krokiem jest przeprowadzenie optymalizacji, polegającej na scaleniu schematów o tych samych kluczach. W omawianym przykładzie są to: Pacjent i Leczy. W efekcie otrzymujemy schemat bazy danych o postaci: Lekarz (nr_lekarza, nazwisko, imię, PESELL) Pacjent(PESELP, nazwisko, imię, nr_lekarza) Choroby(nr_choroby, nazwa) Lekarstwa(nr_lekarstwa, nazwa) Leczy_się(PESELP, nr_choroby, nr_lekarstwa, dawka) 4