W y k ł a d II Temat: Modelowanie schematu bazy danych za pomocą diagramów związków encji (Entity Relationship Diagrams ERD) Plan wykładu: Cel modelowania konceptualnego i modelu ER Etapy modelowania konceptualnego Model ER Jednostki i typy jednostek Związki i typy związków Związki binarne: :, :, : Związki wieloczłonowe i ich właściwości Związki rekurencyjne Związki z uczestnictwem jednostek zależnych od czasu (zdarzeń) Sposób transformacji diagramów ER do modelu relacyjnego Architektura trójwarstwowa użytkownicy końcowi POZIOM ZEWĘTRZY perspektywa zewnętrzna... perspektywa zewnętrzna POZIOM KOCEPCYJY schemat koncepcyjny schemat wewnętrzny POZIOM WEWĘTRZY SKŁADOWAA BAZA DAYCH 2
Model ER Model zaproponowany w: P.P. Chen, The Entity-Relationship Data Model: toward a unified view of data, ACM Transactions on Database Systems, Vol., 976. Opisuje dziedzinę przedmiotową za pomocą pojęć: encja (ang. entities) (po polsku także: jednostka, obiekt), atrybut (ang. attributes), związek (ang. relationships). 3 Cel modelu ER Model ER służy do nieformalnego przedstawienia projektu bazy danych. Projekt ma postać graficzną zwaną diagramem ER (entity-relationship diagram) diagramem jednostkazwiązek lub diagramem związków encji. Istnieje procedura (pół)automatycznej transformacji diagramu ER do konkretnej implementacji, na przykład do relacyjnej bazy danych. 4
Diagramy ER notacja Chen a encja reprezentuje byt ze świata rzeczywistego (obiekty materialne i niematerialne, zdarzenia i fakty) atrybut Cena opisuje szczegółowe właściwości encji; każda encja musi mieć artybut kluczowy związek reprezentuje powiązania między encjami (klienci kupują towary) azwa Towary Zakup Klienci Kategoria azwisko 5 Diagramy ER notacja uproszczona graficznie TOWARY cena kategoria KLIECI adres 6
Rodzaje związków związek binarny : PRACOWICY POKOJE pietro związek binarny : PRACOWICY POKOJE pietro związki opcjonalne PRACOWICY 0.. 0.. POKOJE pietro 7 Rodzaje związków związek binarny : PRACOWICY PROJEKTY data Problem : gdzie umieścić informację, ile godzin dany pracownik przepracował nad danym projektem? Odpowiedź: jest to atrybut związku PRACOWICY liczba godzin PROJEKTY data 8
Rodzaje związków Inne przykłady: PRACOWICY stopien znajomosci JEZYKI OBCE KSIAZKI Id_ksiazki tytul autor wydawnictwo wypozyczenia data CZYTELICY pesel Atrybut powinien opisywać encję, przy której się go umieszcza! 9 Rodzaje związków Problem 2 y telefonów pracownika - atrybut encji czy nowa encja? Odpowiedź : zakładamy, że każdy pracownik może mieć maksymalnie trzy y telefonów - atrybuty PRACOWICY telefon_dom telefon_kom telefon_praca Odpowiedź 2: zakładamy, że każdy pracownik może mieć dowolną liczbę ów telefonów nowa encja PRACOWICY TELEFOY Atrybut musi przyjmować pojedynczą wartość! 0
Rodzaje związków związek cykliczny OSOBY r Pesel jest współmałżonkiem związek ternarny (n-arny) Rodzaje związków Przykłady: pracownik pracuje w projekcie w określonej roli student chodzi na ćwiczenia prowadzone przez asystenta towar jest sprowadzany od dostawcy do użycia w przedsięwzięciu PRACOWICY PROJEKTY ROLE 2
Specjalizacja - generalizacja SAMOCHODY nr_rejestracyjny marka model OSOBOWE liczba miejsc CIEZAROWE ladownosc 3 Encje słabe TOWARY Id_tow grupa cena SZCZEGOLY sztuk VAT FAKTURY data 4
Przykład PRZEDMIOT idprz Data EGZAMI Ocena UCZEŃ IdUcz AUCZYCIEL Idau. PRZEDMIOT, AUCZYCIEL UCZEŃ Z iloma różnymi uczniami związana jest para (przedmiot, nauczyciel) w typie EGZAMI? Inaczej, Czy nauczyciel z danego przedmiotu może egzaminować więcej uczniów niż jednego? (TAK, może wielu etykieta " przy typie UCZEŃ) 2. PRZEDMIOT, UCZEŃ AUCZYCIEL Z iloma różnymi nauczycielami związana jest para (przedmiot, uczeń) w typie EGZAMI? Inaczej, czy uczeń z danego przedmiotu może zdawać egzamin u więcej niż u jednego nauczyciela? (IE, co najwyżej u jednego etykieta " przy klasie jednostek AUCZYCIEL) 3. AUCZYCIEL, UCZEŃ PRZEDMIOT Z iloma różnymi przedmiotami związana jest para (nauczyciel, uczeń) w typie EGZAMI? Inaczej, czy uczeń u danego nauczyciela może zdawać egzamin z więcej niż z jednego przedmiotu? (TAK etykieta " przy klasie jednostek PRZEDMIOT) 5 Przykład atrybut czasowy EGZAMI IdEgza Data Ocena PRZEDMIOT UCZEŃ idprz IdUcz AUCZYCIEL Idau W poprzednim przykładzie egzamin identyfikowany jest przez trójkę IdPrz, IdUcz, Idau nie można więc pamiętać informacji o kilkakrotnym zdawaniu tego samego egzaminu (wartość klucza musiałaby się powtarzać, co jest niedopuszczalne). Aby modelować taką sytuację tworzymy jednostkę (encję) EGAZMI posiadającą własny atrybut kluczowy (identyfikator). Jednostka ta staje się uczestnikiem związku czteroczłonowego (jak na rysunku). 6
Przykład 2 Baza danych FIRMA ma umożliwiać zarządzanie danymi pracowników, działów oraz realizowanych projektów. ) Firma jest podzielona na działy. Każdy z tych działów ma nazwę, unikatowy oraz przydzielonego konkretnego pracownika, który tym działem kieruje. W bazie należy utrzymywać datę początkową, od której dany pracownik kieruje wskazanym działem. Każdy dział może być rozproszony i znajdować się w wielu miejscach. 2) Dział kontroluje wiele projektów, z których każdy ma unikatową nazwę, unikatowy oraz jedno miejsce realizacji. 3) Dla każdego pracownika przechowywany jest i nr PESEL, adres, wysokość pensji, płeć i data urodzenia. Pracownik musi być przypisany do jednego działu, ale może pracować nad wieloma projektami, które niekoniecznie muszą być kontrolowane przez ten sam dział. W bazie będziemy śledzić liczbę godzin, które pracownicy poświęcają poszczególnym projektom w ciągu tygodnia. Dla każdego pracownika przechowywana jest informacja o bezpośrednim zwierzchniku. 4) Chcemy przechowywać informacje o członkach rodziny pracownika. 7 Przykład 2 0.. kieruje PRACOWICY r_pesel... 0.. CZLOEK_RODZIY plec data_ur stopien_pokrewienstwa pracuje zarządza data_od pracuje_nad godziny 0.. DZIALY nr_dzialu lokalizacja lokalizacja2 lokalizacja3 kontroluje PROJEKTY nr_proj lokalizacja 8
Transformacja modelu ER w schemat relacyjny Transformacja encji azwę encji wyrażoną w liczbie mnogiej przenosimy jako nazwę relacji. Atrybuty encji przenosimy jako nazwy kolumn (atrybuty) relacji. Unikalny identyfikator encji przenosimy jako klucz podstawowy relacji. Obligatoryjność atrybutu encji przenosimy jako ograniczenie OT ULL atrybutu relacji. Opcjonalność atrybutu encji przenosimy jako własność ULL atrybutu relacji. Inne ograniczenia integralnościowe nałożone na atrybuty encji przenosimy w niezmienionej formie na atrybuty relacji. PRACOWICY Pracownicy(,, ) 9 Transformacja modelu ER w schemat relacyjny Transformacja hierarchii encji - do trzech relacji Tworzymy jedną relację zawierającą atrybuty wspólne i atrybut określający typ specjalizacji. Dla każdej specjalizacji tworzymy relację zawierającą jej atrybuty specyficzne i klucz podstawowy dziedziczony z generalizacji. Transformacja hierarchii encji - do dwóch relacji Dla każdej specjalizacji tworzymy relację zawierającą atrybuty wspólne, atrybuty specyficzne danej specjalizacji i klucz podstawowy dziedziczony z generalizacji. Transformacja hierarchii encji - do jednej relacji Tworzymy relację zawierającą atrybuty wspólne, atrybuty specyficzne wszystkich specjalizacji i atrybut określający typ specjalizacji. Wszystkim atrybutom specyficznym poszczególnych specjalizacji nadajemy własność ULL. 20
Transformacja modelu ER w schemat relacyjny Transformacja hierarchii encji - przykład do trzech relacji: SAMOCHODY nr_rej marka model Samochody (nr_rej, marka, model, typ) Osobowe (nr_rej, liczba_miejsc) Ciezarowe (nr_rej, ladownosc) do dwóch relacji: Osobowe (nr_rej, marka, model, liczba_miejsc) Ciezarowe (nr_rej, marka, model, ladownosc) OSOBOWE liczba miejsc CIEZAROWE ladownosc do jednej relacji: Samochody (nr_rej, marka, model, typ, liczba_miejsc, ladownosc) 2 Transformacja modelu ER w schemat relacyjny Transformacja związków : Tworzymy klucz obcy w relacji wiązanej obligatoryjnie na podstawie klucza podstawowego drugiej relacji. a atrybuty klucza obcego nakładamy ograniczenie referencyjne. PRACOWICY POKOJE pietro PRACOWICY (,, ) POKOJE (, pietro, id_prac) 22
Transformacja modelu ER w schemat relacyjny Transformacja związków : Tworzymy klucz obcy w relacji po stronie "wiele" na podstawie klucza podstawowego relacji po stronie "jeden". a atrybuty klucza obcego nakładamy ograniczenie referencyjne. PRACOWICY POKOJE pietro PRACOWICY (,,, ) POKOJE (, pietro) 23 Transformacja modelu ER w schemat relacyjny Transformacja związków : Związek : przenosimy jako nową relację. Tworzymy klucze obce na podstawie kluczy podstawowych dwóch pozostałych relacji. a atrybuty jednego i drugiego klucza obcego nakładamy dwa ograniczenia referencyjne. Wszystkie atrybuty relacji tworzą klucz podstawowy PRACOWICY PROJEKTY data PRACOWICY (,, ) PROJEKTY (,, data) PRACUJE (id_prac, ) 24
Transformacja modelu ER w schemat relacyjny Inne przykłady: PRACOWICY PROJEKTY PRACOWICY (,, ) liczba godz data PROJEKTY (,, data) PRACUJE (id_prac,, liczba_godz) PRACOWICY stopien znajomosci JEZYKI PRACOWICY (id_prac,, ) JEZYKI () ZAJOMOSC (id_prac,, stopien_znajom) 25 Transformacja modelu ER w schemat relacyjny Przykład z encją słabą: TOWARY Id_tow grupa cena SZCZEGOLY sztuk VAT TOWARY (id_tow,, grupa, cena) KLIECI (id_klienta,, adres) FAKTURY (, data, id_klienta) SZCZEGOLY (_fakt, _pozycji, id_towaru, sztuk, VAT) FAKTURY data KLIECI Id_klienta adres 26
Transformacja modelu ER w schemat relacyjny Transformacja związków ternarnych - "wiele" przy wszystkich encjach Związek ternarny przenosimy jako nową relację. Tworzymy klucze obce na podstawie kluczy podstawowych trzech pozostałych relacji, nakładając ogr. referencyjne Tworzymy klucz podstawowy ze wszystkich atrybutów relacji Transformacja związków ternarnych - "jeden" przy jednej encji Związek ternarny przenosimy jako nową relację. Tworzymy klucze obce na podstawie kluczy podstawowych trzech pozostałych relacji, nakładając ogr. referencyjne Tworzymy klucz podstawowy w oparciu o klucze obce o stopniu asocjacji "wiele" 27 Transformacja modelu ER w schemat relacyjny Przykład: PRZEDMIOT idprz Data EGZAMI Ocena UCZEŃ IdUcz AUCZYCIEL Idau PRZEDMIOT (IdPrz, ) UCZE (IdUcz, ) AUCZYCIEL (Idau, ) EGZAMI (IdPrz, IdUcz, Idau, data, ocena) 28
Przykład FIRMA (slajd 8) PRACOWICY (r_pesel,,, kierownik, nr_dzialu) CZLOEK_RODZIY (r_pesel, Imie, plec, data_ur, stopien_pokrewienstwa) DZIALY (nr_dzialu,, lokalizacja, lokalizacja2, lokalizacja3) PROJEKTY (nr_proj,, lokalizacja, nr_dzialu) PRACUJE_AD (r_pesel, r_proj, godziny) ZARZADZA (r_pesel, r_dzialu, data_od) 29 Przykład A Zadaniem tego systemu jest zarządzanie fakturami wystawianymi dla klientów firmy. Klientami firmy są osoby fizyczne i prawne. Klient osoba prawna jest opisany przez: nazwę, IP, adres, i kontakt do osoby reprezentującej klienta. Klient osoba fizyczna jest opisany przez: imię,, adres, telefon. Klienci dokonują w firmie zakupów kosmetyków, z dwóch grup: popularnych i luksusowych. W każdej z tych grup sprzedaje się perfumy, wody toaletowe, mydła, szampony i kremy. Każdy kosmetyk jest dostarczany przez jednego producenta Klient zakupując kosmetyk otrzymuje fakturę. Każda faktura składa się z pozycji określających kosmetyk, jego cenę i liczbę sztuk. 30
Przykład B Wypożyczalnia posiada w swojej ofercie książki, czasopisma i albumy. Wypożyczać mogą tylko te osoby, które zapisały się do wypożyczalni. Każdy czytelnik posiada unikalny karty. Dodatkowo, każdy czytelnik jest opisany niem, nazwiskiem, adresem i em telefonu. Jednorazowo czytelnik może wypożyczyć wiele pozycji. Każda pozycja, tj. książka, czasopismo i album posiada swój tytuł, autora (autorów) i wydawnictwo. Fakt wypożyczenia jest odnotowywany w bazie danych. Wypożyczając daną pozycję literaturową, pracownik wypożyczalni odnotowuje datę wypożyczenia i okres wypożyczenia. Po oddaniu pozycji przez czytelnika, pracownik odnotowuje datę jej oddania. 3 Przykład C Zbuduj model potrzeb informatycznych w postaci diagramów związków encji dla systemu medycznego opisanego następująco: -dla każdego pacjenta chcemy pamiętać następujące informacje: nr. ubezpieczenia,, adres, wiek. r. ubezpieczenia jednoznacznie identyfikuje pacjenta -dla każdego lekarza pamiętamy: nr. ubezpieczenia,, specjalność, wysługa lat. r. ubezpieczenia jednoznacznie identyfikuje lekarza -każda firma farmaceutyczna jest opisana przez nazwę i telefon -dla każdego leku chcemy pamiętać jego nazwę handlową oraz podstawową substancję aktywną. Każdy lek jest sprzedawany przez firmę farmaceutyczną. azwa handlowa leku jednoznacznie identyfikuje ten lek spośród innych produktów tej firmy. Może być lek o tej samej nazwie z innej firmy -każdy pacjent jest prowadzony przez jednego lekarza. Każdy lekarz ma co najmniej jednego pacjenta. -dla każdej apteki chcemy pamiętać jej nazwę, adres, telefonu -każda apteka sprzedaje wiele leków. Każdy lek ma swoją cenę. Lek może być sprzedawany przez wiele aptek po różnych cenach - lekarze przepisują leki pacjentom w postaci recept. Lekarz może przepisać pacjentowi (wielu pacjentom) jeden lub więcej leków. Pacjent może przyjmować leki przepisane przez wielu lekarzy. Każda recepta ma datę i ilość specyfiku (leku) - firmy farmaceutyczne podpisują długoterminowe kontrakty z aptekami na sprzedaż leków. Jedna firma może mieć kontrakty z wieloma aptekami, podobnie apteki mogą mieć kontrakty z wieloma firmami. Dla każdego kontraktu chcemy pamiętać datę rozpoczęcia i datę zakończenia, oraz tekst kontraktu. 32