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