Faza projektowania bazy danych: Modelowanie związków encji

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Joanna Sawicka Wydział Nauk Ekonomicznych, Uniwersytet Warszawski
Projektowanie baz danych
Modelowanie logiczne (dla relacyjnych SZBD)
Związki w UML.
Modelowanie przypadków użycia
Relacyjny model danych
Kamil Łącki Dominik Strzelichowski
MS Access 2000 Normalizacja Paweł Górczyński 2005.
Projektowanie Aplikacji Komputerowych
Wymagania do projektu i realizacji baz danych:
POWTÓRZENIE Techniki zbierania informacji : Analiza dokumentacji
POWTÓRZENIE Normalizacja: Pojęcia: redundancja danych;
POWTÓRZENIE Architektura trójwarstwowa ANSI-SPARC (zewnętrzna, konceptualna i wewnętrzna); Schemat bazy danych; Logiczna i fizyczna niezależność danych.
Normalizacja : Głównym celem projektowania bazy przeznaczonej dla systemu relacyjnego jest właściwa reprezentacja danych, związków i więzów. W identyfikowaniu.
POWTÓRZENIE Dane; Baza danych - BD;
POWTÓRZENIE Metodologia : Pojęcia:
Projektowanie i programowanie obiektowe II - Wykład II
Modele baz danych - spojrzenie na poziom fizyczny
Język SQL (Structured Query Language) DDL (Data Definition Language)
Projektowanie struktury logicznej (schematu) relacyjnych baz danych
Wykład 3 Analiza i projektowanie strukturalne
Zadania Bazy danych.
Teoria relacyjnych baz danych
Bazy Danych II prowadzący: mgr inż. Leszek Siwik
Zależności funkcyjne.
Wykonawcy:Magdalena Bęczkowska Łukasz Maliszewski Piotr Kwiatek Piotr Litwiniuk Paweł Głębocki.
DIAGRAMY ER 2 (ENTITY-RELATIONSHIP DIAGRAMS 2) Ćwiczenia 2.
Bazy danych.
ANNA BANIEWSKA SYLWIA FILUŚ
Budowanie tabel i relacji
Andrzej Macioł Bazy danych – model relacyjny – cz. 1 Andrzej Macioł
Wybrane zagadnienia relacyjnych baz danych
Model relacyjny.
Komendy SQL do pracy z tabelami i bazami
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Modelowanie obiektowe Diagramy UML – diagram przypadków użycia
Modelowanie obiektowe Diagramy klas
Projektowanie relacyjnych baz danych – postacie normalne
UML W V ISUAL S TUDIO Mateusz Lamparski. UML D EFINICJA Unified Modeling Language (UML) to graficzny język do obrazowania, specyfikowania, tworzenia i.
Projektowanie bazy danych
Łódź 2008 Banki danych WYKŁAD 2 dr Łukasz Murowaniecki T-109.
Temat 3: Integralność danych. Integralność danych, określana również mianem spójności danych, jest to funkcja SZBD, która gwarantuje, że dane nie zostaną.
Michał Krawczykowski kl. IIIB
Definiowanie kluczy w tabelach RBD
Model obiektowy bazy danych
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
Proces tworzenia oprogramowania Proces tworzenia oprogramowania jest zbiorem czynności i związanych z nimi wyników, które prowadzą do powstania produktu.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Elementy geometryczne i relacje
Projektowanie relacyjnych baz danych – diagramy związków encji
Projektowanie bazy danych z użyciem diagramów UML Obiektowe projektowanie relacyjnej bazy danych Paweł Jarecki.
Projektowanie postaci formularza:
Modelowanie model związków encji
1 Metodologia : to kompleksowe podejście wykorzystujące procedury, techniki, narzędzia oraz metody tworzenie dokumentacji służące realizacji i uproszczeniu.
1 © copyright by Piotr Bigosiński DOKUMENTACJA SYSTEMU HACCP. USTANOWIENIE, PROWADZENIE I UTRZYMANIE DOKUMENTACJI. Piotr Bigosiński 1 czerwiec 2004 r.
Modelowanie Danych (ERD) – część 1 (Wspomaganie Modelowania danych)
1 SYSTEMY BAZ I HURTOWNI DANYCH Wstęp. 2 Literatura: 1.„Podstawowy wykład z systemów baz danych” – J.Ullman, J.Widom, WNT, „Systemy baz danych.
Temat: Tworzenie bazy danych
1 Instrukcja SELECT : SELECT[DISTINCT  ALL] {*  [wyrażenie_kolumnowe [AS nowa_nazwa]],[…]} FROMNazwaTabeli [alias],[...] [WHEREwarunek_selekcji_wierszy]
Wybieranie wierszy: 1 Warunek WHERE Rodzaje warunków: - liczbowe - liczbowe z zakresu - znakowe.
Transformacja modelu EER do modelu relacyjnego
Inżynieria systemów informacyjnych
Nieprawidłowo zaprojektowana tabela
SYSTEMY BAZ I HURTOWNI DANYCH
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Faza projektowania bazy danych: Modelowanie związków encji POWTÓRZENIE Faza projektowania bazy danych: Modelowanie związków encji Zbiór encji; Wystąpienie encji; Związek; Wystąpienie związku; Stopień związku; Związki rekurencyjne; Atrybuty encji: proste, złożone, jednowartościowe, wielowartościowe, pochodne; Atrybuty związków; Więzy strukturalne: wzajemnie jednoznaczne, typu „jeden do wielu”, typu „wiele do wielu”; Więzy liczności i uczestnictwa; Problemy występujące w modelach ER: pułapka wachlarzowa, pułapka szczelinowa; Rozszerzone modelowanie związków encji: Specjalizacja, Generalizacja, Agregacja, Kompozycja.

Normalizacja: Głównym celem projektowania bazy przeznaczonej dla systemu relacyjnego jest właściwa reprezentacja danych, związków i więzów. W identyfikowaniu właściwych relacji pomaga technika nazywana normalizacją, która można powiedzieć jest techniką wstępującą projektowania bazy danych. Normalizacja – to technika służąca do wyznaczania zbioru relacji o pożądanych na podstawie wymagań względem danych przedsiębiorstwa cechach.

1972 – po raz pierwszy przedstawiony proces normalizacji przez E. F 1972 – po raz pierwszy przedstawiony proces normalizacji przez E.F.Codda; wówczas zproponował trzy postacie normalne: 1NF, 2NF, 3NF (normal form). 1974 – R.Boyce i E.F.Codd wprowadzili silniejszą definicję trzeciej postaci normalnej (postać normalna Boyce’a-Codda BCNF) Powyższe postacie normalne są oparte na zależnościach funkcyjnych pomiędzy atrybutami. Wprowadzone kilka lat później wyższe postacie normalne, wychodzące poza BCNF, czwarta i piąta postać normalna (Fagin 1977, 1979) dotyczą sytuacji występujących bardzo rzadko.

Redundancja danych i anomalie aktualizacji: Główne zadanie w projektowaniu relacyjnej bazy danych to pogrupowanie atrybutów w relacje w sposób, który minimalizuje redundancję danych – efektem jest zmniejszenie wymagań pamięciowych dla plików implementujących bazowe relacje. Np. porównanie relacji: PersonelBiuro z relacjami: Personel Biuro

PersonelBiuro: Personel: Biuro: pracownikNr imięNazwisko stanowisko pensja biuroNr adres Sl21 Jan Wiśniewski dyrektor 3000 B005 Dobra 22, Łomża, 18-400 SG37 Anna Biały asystent 1200 B003 Akacjowa 16, Augustów, 16-300 SG14 Daniel Frankowski kierownik 1800 Mała 63, Grajewo, 19-200 SA9 Maria Hojna 900 B007 Miodowa 32, Białystok, 15-900 SG5 Sabina Bober 2400 Cicha 56, Łomża, 18-400 SL41 Julia Lisicka   pracownikNr imięNazwisko stanowisko pensja biuroNr Sl21 Jan Wiśniewski dyrektor 3000 B005 SG37 Anna Biały asystent 1200 B003 SG14 Daniel Frankowski kierownik 1800 SA9 Maria Hojna 900 B007 SG5 Sabina Bober 2400 SL41 Julia Lisicka Personel: Biuro: biuroNr adres B003 Mała 63, Grajewo, 19-200 B005 Dobra 22, Łomża, 18-400 B007 Miodowa 32, Białystok, 15-900

Takie relacje zawierające redundantne dane mogą być przyczyną anomalii aktualizacji, które dzielą się na: anomalie wstawienia (przy nowym pracowniku informacje o biurze mogą być błędnie wpisane – niespójność bazy); anomalie usuwania (po usunięciu informacji o pracowniku znikają informacje o biurze); anomalie modyfikacji (gdy zmiana adresu biura trzeba zmienić we wszystkich rekordach pracowników tego biura). Poprzez dekompozycję relacji PersonelBiuro na relacje Personel i Biuro pozbywamy się problemu anomalii aktualizacji.

Proces normalizacji: Normalizacja jest to formalna technika oparta na kluczach głównych oraz na zależnościach funkcyjnych. Często realizowana w serii kroków, z których każdy odpowiada specyficznej postaci normalnej o ustalonych własnościach. Relacje otrzymują wówczas coraz bardziej ograniczony format, stając się tym samym coraz mniej podatne na anomalie aktualizacji. 

Postać nieznormalizowana – to tabela zawierająca co najmniej jedną powtarzającą się grupę. Pierwsza postać normalna (1NF – first normal form) – to relacja, w której każde przecięcie wiersza i kolumny zawiera tylko jedną wartość. Druga postać normalna (2NF) – oznacza relację w pierwszej postaci normalnej, w której każdy atrybut spoza klucza głównego jest od niego w pełni funkcyjnie zależny. Trzecia postać normalna (3NF) – oznacza relację w pierwszej i w drugiej postaci normalnej, w której żaden atrybut spoza klucza głównego nie jest od niego przechodnio zależny.

Zależności funkcyjne: Zależność funkcyjna opisuje związek pomiędzy atrybutami w relacji (tabeli):  Np. z relacji Personel czyli dla każdego pracownika występuje tylko jedno stanowisko; czyli istnieje wielu pracowników powiązanych z danym typem stanowiska.

pracownikNr → imięNazwisko imięNazwisko → pracownikNr Np.: Rozważmy wartości atrybutów pracownikNr i imięNazwisko w relacji Personel. Dla sytuacji przedstawionej w tabeli Personel mogą zachodzić następujące zależności funkcyjne: pracownikNr → imięNazwisko imięNazwisko → pracownikNr Jednak po rozważeniu wszystkich możliwych wartości atrybutów pracownikNr i imięNazwisko w relacji Personel jedynym związkiem, który pozostaje prawdziwy jest:  pracownikNr → imięNazwisko

Postać nieznormalizowana – to tabela zawierająca co najmniej jedną powtarzającą się grupę. Nieznormalizowana tabela KlientWynajęcie: klientNr kImię Nazwisko nierucho-mośćNr nAdres wynajęteOd wynajęteDo czynsz właścicielNr wImię CR76 Janusz Kalinowski B4   B16 Leśna 6, Białystok 15-900 Nowa 5, Białystok 01.07. 2006 01.09. 31.08. 2007 350 450 CO40 CO93 Tatiana Marcinkowska Tomasz Szymański CO56 Alicja Stefańska B36 Mała 2, Białystok 15-900 01.10. 01.11. 01.06. 2008 01.12. 01.08. 375

Pierwsza postać normalna (1NF – first normal form) – to relacja, w której każde przecięcie wiersza i kolumny zawiera tylko jedną wartość. Pierwszy sposób usuwania powtarzających się grup: KlientWynajęcie klientNr nierucho-mośćNr kImię Nazwisko nAdres wynajęte Od wynajęte Do czynsz właścicielNr wImię Nazwisko CR76 B4 Janusz Kalinowski Leśna 6, Białystok 15-900 01.07.2006 31.08.2007 350 CO40 Tatiana Marcinkowska B16 Nowa 5, Białystok 15-900 01.09.2006 01.09.2007 450 CO93 Tomasz Szymański CO56 Alicja Stefańska 01.06.2008 B36 Mała 2, Białystok 15-900 01.10.2006 01.12.2007 375 01.11.2007 01.08.2008

Drugi sposób usuwania powtarzających się grup: Klient klientNr kImięNazwisko CR76 Janusz Kalinowski CO56 Alicja Stefańska NieruchomośćWynajęcieWłaściciel klientNr nierucho-mośćNr nAdres wynajęteOd wynajęteDo czynsz właścicielNr wImięNazwisko CR76 B4 Leśna 6, Białystok 15-900 01.07.2006 31.08.2007 350 CO40 Tatiana Marcinkowska B16 Nowa 5, Białystok 15-900 01.09.2006 01.09.2007 450 CO93 Tomasz Szymański CO56 01.06.2008 B36 Mała 2, Białystok 15-900 01.10.2006 01.12.2007 375 01.11.2007 01.08.2008

Druga postać normalna (2NF) Normalizacja z pierwszej do drugiej postaci normalnej polega na usunięciu zależności częściowych: Wynajęcie klientNr nieruchomośćNr wynajęteOd wynajęteDo CR76 B4 01.07.2006 31.08.2007 B16 01.09.2006 01.09.2007 CO56 01.06.2008 B36 01.10.2006 01.12.2007 01.11.2007 01.08.2008 WłaścicielNieruchomość nieruchomośćNr nAdres czynsz właścicielNr wImięNazwisko B4 Leśna 6, Białystok 15-900 350 CO40 Tatiana Marcinkowska B16 Nowa 5, Białystok 15-900 450 CO93 Tomasz Szymański B36 Mała 2, Białystok 15-900 375

Trzecia postać normalna (3NF) Wszystkie atrybuty spoza klucza głównego w relacji WłąścicielNieruchomość są funkcyjnie zależne od klucza głównego, z wyjątkiem atrybutu wImięNazwisko, który jest także zależny od właścicielNr.  Usuwamy, zatem powyższą zależność: Nieruchomość nieruchomośćNr nAdres czynsz właścicielNr B4 Leśna 6, Białystok 15-900 350 CO40 B16 Nowa 5, Białystok 15-900 450 CO93 B36 Mała 2, Białystok 15-900 375 Właściciel właścicielNr wImięNazwisko CO40 Tatiana Marcinkowska CO93 Tomasz Szymański

Rozkład relacji KlientWynajęcie w 1NF do relacji w 3NF: WłaścicielNieruchomość 2NF 3NF Właściciel Nieruchomość Klient Wynajęcie

Zestawienie relacji w 3NF: Klient klientNr kImięNazwisko CR76 Janusz Kalinowski CO56 Alicja Stefańska klientNr nieruchomośćNr wynajęteOd wynajęteDo CR76 B4 01.07.2006 31.08.2007 B16 01.09.2006 01.09.2007 CO56 01.06.2008 B36 01.10.2006 01.12.2007 01.11.2007 01.08.2008 Wynajęcie Nieruchomość nieruchomośćNr nAdres czynsz właścicielNr B4 Leśna 6, Białystok 15-900 350 CO40 B16 Nowa 5, Białystok 15-900 450 CO93 B36 Mała 2, Białystok 15-900 375 właścicielNr wImięNazwisko CO40 Tatiana Marcinkowska CO93 Tomasz Szymański Właściciel

Postać normalna Boyce’a-Codda (BCNF): oznacza relację, w której każdy wyznacznik zależności jest kluczem kandydującym. Potencjalne naruszenie BCNF może wystąpić w relacji o następujących własnościach: - relacja zawiera dwa (lub więcej) złożone klucze kandydujące; - klucze kandydujące relacji pokrywają się (tzn. mają co najmniej jeden wspólny atrybut).

Relacja WywiadZKlientem zawiera trzy złożone klucze kandydujące: Np. dla sytuacji: WywiadZKlientem klientNr dataWywiadu czasWywiadu pracownikNr pokójNr CR76 13.05.2004 10.30 SG5 G101 CR56 12.00 CR74 SG37 G102 01.07.2004 Relacja WywiadZKlientem zawiera trzy złożone klucze kandydujące: (klientNr, dataWywiadu) (pracownikNr, dataWywiadu, czasWywiadu) (pokójNr, dataWywiadu, czasWywiadu) które pokrywają się wzajemnie, dzieląc między sobą wspólny atrybut dataWywiadu. 

Natomiast mamy następujące zależności funkcyjne: zf1 klientNr, dataWywiadu → czasWywiadu, pracownikNr, pokójNr (klucz główny) zf2 pracownikNr, dataWywiadu, czasWywiadu → klientNr (klucz kandydujący) zf3 pokójNr, dataWywiadu, czasWywiadu → pracownikNr, klientNr (klucz kandydujący) zf4 pracownikNr, dataWywiadu → pokójNr Relację WywiadZKlientem przekształcamy do relacji Wywiad i PokójPersonel: Wywiad (klientNr, dataWywiadu, czasWywiadu, pracownikNr) PokójPersonel (pracownikNr, dataWywiadu, pokójNr) wówczas gdy pracownicy przeprowadzają wiele wywiadów dziennie.

Wywiad PokójPersonel klientNr dataWywiadu czasWywiadu pracownikNr CR76 13.05.2004 10.30 SG5 CR56 12.00 CR74 SG37 01.07.2004 PokójPersonel pracownikNr dataWywiadu pokójNr SG5 13.05.2004 G101 SG37 G102 01.07.2004

POWTÓRZENIE Normalizacja: Pojęcia: redundancja danych; anomalie aktualizacji (wstawienia, usuwania, modyfikacji); dekompozycja i jej własności; zależności funkcyjne.   Proces normalizacji: postać nieznormalizowana; pierwsza postać normalna (1NF – first normal form); druga postać normalna (2NF); trzecia postać normalna (3NF); postać normalna Boyce’a-Codda (BCNF).

Metodologia : to kompleksowe podejście wykorzystujące procedury, techniki, narzędzia oraz metody tworzenie dokumentacji służące realizacji i uproszczeniu procesu projektowania. Konceptualne projektowanie bazy danych – to proces tworzenia modelu dla informacji wykorzystywanych w przedsiębiorstwie, niezależny od wszelkich szczegółów reprezentacji fizycznej.

Logiczne projektowanie bazy danych – to proces tworzenia modelu dla informacji wykorzystywanych w przedsiębiorstwie, przystosowanego do konkretnego modelu danych (np. model relacyjny), lecz niezależnego od konkretnego SZBD i innych szczegółów implementacji fizycznej. Fizyczne projektowanie bazy danych – proces tworzenia opisu implementacji bazy danych w pamięci zewnętrznej, który zawiera relacje bazowe, organizację plików, indeksy stosowane dla uzyskania efektywnego dostępu do danych, a także wszystkie więzy integralności i zagadnienia bezpieczeństwa.

Główne zasady efektywnego projektowania baz danych: jak najwięcej kontaktuj się z użytkownikami bazy danych; w trakcie całego procesu modelowania danych postępuj zgodnie z przyjętą metodologią; stosuj podejście uwzględniające przepływ danych; uwzględniaj w modelu kwestie struktury i integralności danych;

stosuj w trakcie projektowania techniki konceptualizacji, normalizacji i oceny możliwości realizacji wymaganych transakcji; wszędzie, gdzie tylko to możliwe, wyrażaj model danych za pomocą diagramów; stosuj język projektowania bazy danych (DBDL od ang. Database Design Language) do opisu tych własności, których nie można w prosty sposób wyrazić za pomocą diagramów; utwórz słownik danych uzupełniający diagramy i DBDL; zawsze, gdy zachodzi taka potrzeba, powtarzaj odpowiednie kroki modelowania.

Konceptualne projektowanie bazy danych: Krok 1. Tworzenie lokalnego konceptualnego modelu danych dla każdej perspektywy Krok 1.1. Określ występujące zbiory encji Krok 1.2. Ustal typy występujących związków Krok 1.3. Określ atrybuty odpowiadające poszczególnym zbiorom encji i związkom Krok 1.4. Określ dziedziny poszczególnych atrybutów Krok 1.5. Ustal klucze kandydujące i klucze główne Krok 1.6. Rozważ możliwość zastosowania zaawansowanych metod modelowania (krok opcjonalny) Krok 1.7. Zweryfikuj utworzony model pod kątem występowania redundancji Krok 1.8. Zweryfikuj możliwość realizacji transakcji w lokalnym modelu konceptualnym Krok 1.9. Omów lokalny konceptualny model danych z użytkownikiem

Logiczne projektowanie bazy danych w modelu relacyjnym: Krok 2. Tworzenie i weryfikacja lokalnego modelu logicznego dla każdej perspektywy: Krok 2.1. Usuń własności niekompatybilne z modelem relacyjnym (krok opcjonalny); Krok 2.2. Wyznacz relacje dla lokalnego logicznego modelu danych; Krok 2.3. Wykonaj normalizację relacji; Krok 2.4. Sprawdź, czy relacje umożliwiają realizację transakcji; Krok 2.5. Wyznacz więzy integralności; Krok 2.6. Omów lokalny logiczny model danych z użytkownikiem. Krok 3. Tworzenie i weryfikacja globalnego logicznego modelu danych: Krok 3.1. Scal lokalne logiczne modele danych w model globalny; Krok 3.2. Sprawdź poprawność globalnego logicznego modelu danych; Krok 3.3. Sprawdź możliwości przystosowania modelu do przewidywanych zmian; Krok 3.4. Omów globalny logiczny model danych z użytkownikami.

Proces konceptualnego i logicznego projektowania bazy danych składa się z trzech głównych kroków. Celem kroku 1 jest podział problemu na zadania łatwiejsze do analizy poprzez rozważenie różnych perspektyw użytkowników. W wyniku kroku 1 powstaje wiele (lub jeden) lokalnych konceptualnych modeli danych. Każdy z tych modeli powinien stanowić kompletną i dokładną reprezentacje zagadnienia z punktu widzenia innego użytkownika lub grupy użytkowników. Krok 2 odwzorowuje każdy lokalny model konceptualny na lokalny logiczny model danych dla modelu relacyjnego, składający się z diagramów związków encji, schematów relacji oraz dokumentacji pomocniczej. W kroku 3 następuje integracja lokalnych logicznych modeli danych (reprezentujących różne perspektywy) w jeden globalny logiczny model danych całego przedsiębiorstwa (reprezentujący wszystkie perspektywy użytkowników).

Krok 1 : Tworzenie lokalnego konceptualnego modelu danych dla każdej perspektywy (każdego obszaru zainteresowań) W trakcie analizy zagadnienia zazwyczaj zidentyfikowanych zostaje wiele różnych perspektyw. W przypadku dużego stopnia wzajemnego ich pokrywania się, niektóre z nich można połączyć w perspektywy „grupowe” z nadanymi im własnymi nazwami. Krok 1.1. Określ występujące zbiory encji (dokumentuj informacje o zbiorach encji) Częstą metodą określenia zbiorów encji jest wyróżnienie obiektów, których istnienie wynika z samej natury modelowego zagadnienia. Czasami wyróżnienie zbiorów encji może być trudne, co spowodowane jest sposobem ich reprezentacji w specyfikacjach wymagań użytkowników, którzy posługują się zazwyczaj przykładami lub analogiami, czy też synonimami i homonimami.

Fragment słownika danych przedstawiający opis zbiorów encji : Nazwa zbioru encji Opis Aliasy Własności Personel Pojęcie ogólne opisujące wszystkich pracowników zatrudnionych przez biuro obrotu nieruchomościami. Pracownicy Każdy pracownik personelu pracuje w jednym biurze. Nieruchomość Pojęcie ogólne opisujące wszystkie nieruchomości do wynajęcia. Nieruchomość--DoWynajęcia Każda nieruchomość ma jednego właściciela i jest oferowana do wynajęcia w jednym biurze, gdzie zarządza nią jeden pracownik. Informacje o nieruchomości dostępne są wielu klientom, ale w danym momencie może być wynajęta tylko przez jednego klienta. ... Uzupełnieniem konceptualnego modelu danych jest dokumentacja, w tym słownik danych utworzony w trakcie tworzenia modelu

Krok 1.2. Ustal typy występujących związków (między wyróżnionymi wcześniej zbiorami encji): Dużą uwagę należy poświęcić temu, aby wykryć wszystkie związki zawarte wprost lub wynikające pośrednio ze specyfikacji wymagań użytkownika. W tym celu: używaj diagramów związków encji (ER); ustal krotności w poszczególnych związkach encji (do weryfikowania i utrzymywania określonych własności danych); sprawdź czy występują pułapki wachlarzowe lub szczelinowe; sprawdź, czy każdy zbiór encji występuje w przynajmniej jednym związku (należy jeszcze raz sprawdzić wymagania użytkownika i ustalić, czy nie doszło do pominięcia jakichś związków lub czy encja nie występuje w innej części modelu); udokumentuj typy związków.

Pierwsze przybliżenie diagramu: Właściciel prywatny WłaścicielNr Wynajęcie WynajęcieNr Nieruchomość NieruchomośćNr Klient KlientNr Personel PersonelNr Biuro BiuroNr Ma Oferuje Posiada Wynajęty Przez Nadzoruje Ogląda Wynajmuje

Fragment słownika danych prezentujący opis związków : Nazwa encji Krotność Związek Personel 0..1 Zarządza Kieruje Nieruchomość 0..100 0..10 1..1 SkojarzonaZ Wynajęcie 0..* ...

Określ atrybuty odpowiadające poszczególnym zbiorom encji i związkom Krok 1.3. Określ atrybuty odpowiadające poszczególnym zbiorom encji i związkom Poprzez zidentyfikowanie rodzajów informacji o encjach i związkach, które chcemy reprezentować w bazie danych. Określamy: atrybuty proste i złożone; atrybuty jednowartościowe i wielowartościowe; atrybuty pochodne – umieszczamy je aby uniknąć utraty informacji w przypadku usunięcia bądź zmodyfikowania atrybutów od których zależy atrybut pochodny; potencjalne problemy; dokumentowanie informacji o atrybutach (po zidentyfikowaniu atrybutów należy przyporządkować im adekwatne i czytelne dla użytkownika nazwy).

Fragment słownika danych przedstawiający opis atrybutów: Nazwa zbioru encji Atrybuty Opis Typ danych i długość Wartości puste Wielowar-tościowy ... Personel personelNr imięNazwisko imię nazwisko stanowisko płeć dataUr Jednoznacznie identyfikuje pracownika   Imię pracownika Nazwisko pracownika Nazwa zajmowanego stanowiska Płeć pracownika Data urodzenia pracownika łańcuch, długość maks. 5 łańcuch, długość maks. 15 łańcuch, długość maks. 10 łańcuch, długość 1 (M lub K) data Nie Tak Nieruchomość nieruchomośćNr Jednoznacznie identyfikuje nieruchomość do wynajęcia

Krok 1.4. Określ dziedziny poszczególnych atrybutów W kompletnym modelu danych określona jest dziedzina każdego atrybutu, a także: dopuszczalny zbiór wartości atrybutu; dopuszczalny zakres długości i format atrybutu. Mogą być też podane dodatkowe informacje o dziedzinach, takie jak zbiór dopuszczalnych operacji na atrybutach oraz wykaz atrybutów, które mogą być ze sobą porównywane lub używane łącznie. Możemy zdefiniować np.: dziedzinę dopuszczalnych numerów pracowników (pracownikNr) jako zbiór łańcuchów o długości nie większej niż 5 znaków, w których pierwsze dwa znaki są literałami, a następne (od jednego do trzech) tworzą liczbę z zakresu 1-999; dopuszczalne wartości dla atrybutu płeć jako np. zbiór łańcuchów jednoznakowych: „M” lub „K”.

Krok 1.5. Ustal klucze kandydujące i klucze główne: Kluczem kandydującym jest minimalny zbiór atrybutów, który jednoznacznie identyfikuje każde wystąpienie encji w zbiorze encji. Przy wyborze klucza głównego spośród kluczy kandydujących warto rozważyć: klucz o najmniejszej liczbie atrybutów; klucz, którego wartości najrzadziej ulegają zmianom; klucz kandydujący o najmniejszej liczbie znaków (dotyczy kluczy składających się z atrybutów tekstowych); klucz o najmniejszej wartości maksymalnej (dotyczy kluczy o wartościach numerycznych); klucz, z którego najłatwiej będzie korzystać użytkownikowi. Jeśli wybór klucza głównego jest możliwy, wtedy zbiór encji nazywamy silnym, zaś gdy nie możemy wybrać żadnego klucz głównego, zbiór encji nazywany jest słabym.

Diagram związków encji z informacjami o kluczach głównych: Klient KlientNr DataRejestracji Biuro BiuroNr Ma Kieruje 0..1 Personel PersonelNr 1..1 1..* dataPoczątkowa premia dataOgłoszenia koszt Rejestruje Zarządza 0..* Preferencje Wynajęcie UmowaNr Nieruchomość NieruchomośćNr Właściciel Instytucjonalny I Nazwa Wynajmuje Określa PPosiada Wynajęty Przez Ogłasza I Posiada Gazeta NazwaGazety Właściciel prywatny WłaścicielNr Oferuje 0..100 Nadzoruje

Krok 1.6. Rozważ możliwość zastosowania zaawansowanych metod modelowania (krok opcjonalny) : Rozważenie potrzeby użycia zaawansowanych metod modelowania, takich jak specjalizacja/generalizacja, agregacja i kompozycja. Użycie (bądź nie) zaawansowanych metod modelowania powinno służyć czytelności diagramu związków encji i jasności modelu dla istotnych zbiorów encji i związków między nimi. Np. możemy dokonać generalizacji encji WłaścicielPrywatny i WłaścicielInstytucjonalny, tworząc nadklasę Właściciel zawierającą wspólne dla obu zbiorów encji atrybuty: włascicielNr, adres i telNr.

Krok 1.7. Zweryfikuj utworzony model pod kątem występowania redundancji: Proces ten składa się z następujących czynności: ponowne sprawdzenie związków wzajemnie jednoznacznych (1:1) – ponieważ w trakcie ustalania występujących zbiorów encji może dojść do utworzenia dwóch różnych zbiorów reprezentujących te same obiekty ze świata rzeczywistego np. Klient i Najemca; usunięcie związków redundantnych (nadmiarowych) – ponieważ naszym celem jest stworzenie minimalnego modelu danych. Wykrycie istnienia więcej niż jednej ścieżki między dwoma zbiorami encji jest stosunkowo łatwe, jednak nie muszą one oznaczać, że jeden ze związków jest redundantny, ponieważ mogą one reprezentować inne powiązania między zbiorami encji. Przy poszukiwaniu redundancji istotne jest zatem zrozumienie i analiza znaczenia poszczególnych związków.

Krok 1.8. Zweryfikuj możliwość realizacji transakcji w lokalnym modelu konceptualnym : Teraz należy sprawdzić czy utworzony model rzeczywiście umożliwia wykonanie wszystkich transakcji wymaganych w danej perspektywie. Możemy to osiągnąć poprzez: sporządzenie opisu wymagań poszczególnych transakcji i sprawdzeniu, czy wszystkie informacje wymagane do realizacji transakcji zostały umieszczone w modelu; wykorzystanie ścieżek transakcji – poprzez graficzną reprezentację ścieżki, przez którą przechodzi transakcja na diagramie związków encji, możemy też w ten sposób ustalić, które elementy modelu nie są wykorzystywane, a które są krytyczne dla realizacji transakcji. Przeprowadzenie tych czynności sprawdzających na tym etapie projektu (a nie później) jest bardzo istotne, ponieważ naprawianie błędów w modelu na dalszym etapie pracy jest i dużo trudniejsze i droższe. Krok 1.9. Omów lokalny konceptualny model danych z użytkownikiem (w celu weryfikacji, czy model jest „prawdziwą” reprezentacją modelowanej perspektywy).

Logiczne projektowanie bazy danych w modelu relacyjnym: Krok 2. Tworzenie i weryfikacja lokalnego modelu logicznego dla każdej perspektywy Krok 2.1. Usuń własności niekompatybilne z modelem relacyjnym (krok opcjonalny jeżeli wybieramy relacyjny SZBD do realizacji bazy danych); Cele tego kroku to: usunięcie binarnych związków typu „wiele do wielu” (*:*) – dekomponowanie poprzez utworzenie pośredniego zbioru encji, a następnie zamianę związku „wiele do wielu” (*:*) na dwa związki typu „jeden do wielu” (1:*), w których występuje nowy zbiór encji; usunięcie rekurencyjnych związków typu „wiele do wielu” (*:*) – poprzez ich rozłożenie i ustalenie nowego „pośredniczącego” zbioru encji; usunięcie związków złożonych – też poprzez rozłożenie i utworzenie pośredniczącego zbioru encji; usunięcie atrybutów wielowartościowych (poprzez zastąpienie ich nowym zbiorem encji).

Krok 2.2. Wyznacz relacje dla lokalnego logicznego modelu danych : Związki pomiędzy encjami są reprezentowane za pomocą „wiązania” poprzez klucze główne i obce. W każdym binarnym związku typu 1:* encja występująca po stronie „jeden” jest encją nadrzędną, a encja po stronie „wiele” podrzędną. Związek taki jest reprezentowany poprzez umieszczenie atrybutów klucza głównego encji nadrzędnej w relacji reprezentującej encję podrzędną. Atrybuty te stanowią klucz obcy relacji podrzędnej. Np.:

Elementy procesu przekształcania encji i związków na relacje: Encje/Związki Sposób odwzorowania Silna encja Utworzenie relacji zawierającej wszystkie atrybuty proste. Słaba encja Utworzenie relacji zawierającej wszystkie atrybuty proste (klucz główny zostanie ustalony dopiero po odwzorowaniu na relacje wszystkich związków z encjami nadrzędnymi).  Binarny związek 1:*  Klucz główny encji występującej po stronie Jeden" należy skopiować do zbioru encji po stronie „wiele", gdzie będzie kluczem obcym. Atrybuty związku należy umieścić po stronie „wiele".

Encje/Związki Sposób odwzorowania Binarny związek 1:1: (a) uczestnictwo obowiązkowe po obu stronach (b) uczestnictwo obowiązkowe po jednej stronie   (c) uczestnictwo opcjonalne po obu stronach związku Połączenie zbiorów encji w jedną relacje. Klucz główny encji po stronie „opcjonalnej" należy skopiować do zbioru encji po stronie „obowiązkowej" jako klucz obcy. Dowolny, o ile wybór reprezentacji nie wynika z innych informacji. Binarny związek *:*, związek złożony Utworzenie relacji reprezentującej związek i umieszczenie w niej wszystkich atrybutów związku. Klucze główne encji nadrzędnych należy skopiować do nowej relacji (w której pełnią rolę kluczy obcych). Atrybuty wielowartościowe Utworzenie osobnej relacji reprezentującej atrybut wielowartościowy, skopiowanie do niej klucza głównego encji zawierającej dany atrybut (w nowej relacji skopiowany klucz jest kluczem obcym)

Krok 2.3. Wykonaj normalizację relacji : Przeprowadzamy proces normalizacji: 1NF – usuwa powtarzające się grupy atrybutów; 2NF – usuwa częściowe zależności od klucza głównego; 3NF – usuwa przechodnie zależności od klucza głównego; BCNF – usuwa pozostałe anomalie z zależności funkcyjnych   Normalizacja daje bardzo elastyczny projekt, który łatwo daje się dalej rozwijać i rozszerzać. Krok 2.4. Sprawdź, czy relacje umożliwiają realizację transakcji

Krok 2.5. Wyznacz więzy integralności : Trzeba rozważyć pięć typów więzów integralności: wymagana obecność danych; więzy dziedzin atrybutów (ustalane z wyborem dziedzin atrybutów – krok 1.4); integralność encji (ograniczenie, że klucz główny zbioru encji nie może przyjmować wartości pustych należy uwzględnić po wyborze klucza głównego – 1.5); integralność referencyjna (wymuszanie więzów integralności); więzy ogólne (reguły biznesowe, zasady działania). Krok 2.6. Omów lokalny logiczny model danych z użytkownikiem

Krok 3. Tworzenie i weryfikacja globalnego logicznego modelu danych : Krok 3.1. Scal lokalne logiczne modele danych w model globalny Spis typowych czynności wykonywanych w metodzie scalania: Porównanie nazw i zawartości encji/relacji i ich kluczy kandydujących. Porównanie nazw i zawartości związków/kluczy obcych. Scalenie encji/relacji z lokalnych modeli danych. Włączenie (bez scalania) encji/relacji unikalnych dla poszczególnych lokalnych modeli danych. Scalenie związków/kluczy obcych występujących w lokalnych modelach danych. Włączenie (bez scalania) związków/kluczy obcych unikalnych dla poszczególnych lokalnych modeli danych. Sprawdzenie kompletności zbiorów encji/relacji i związków/kluczy obcych. Sprawdzenie kluczy obcych. Sprawdzenie więzów integralności.

Relacje reprezentujące globalny logiczny model danych projektu WymarzonyDom : Biuro (biuroNr, ulica, miasto, kodPocztowy, dyrPracownikNr) Primary Key biuroNr Alternate Key kodPocztowy Foreign Key dyrPracownikNr references Dyrektor(pracownikNr) Telefon (telNr, biuroNr) Primary Key telNr Foreign Key biuroNr references Biuro(biuroNr) Personel (pracownikNr, imię, nazwisko, stanowisko, płeć, dataUr, pensja, przetożonyNr, biuroNr) Primary Key pracownikNr Foreign Key przełOŻonyNr references Personel (pracownikNr) Foreign Key biuroNr references Biuro (biuro Nr) Dyrektor (pracownikNr, dataPoczątkowa, premia) Foreign Key pracownikNr referenees Personel(pracownikNr)

Właściciel_Prywatny (właścicielNr, imię, nazwisko, adres, telNr) Primary Key właścicielNr Właściciel Instytucjonalny (właścicielNr, iNazwa, iTyp, nazwiskoReprezentanta, adres, telNr) Primary Key iNazwa Alternate Key telNr Nieruchomość (nieruchomośćNr, ulica, miasto, kodPocztowy, typ, pokoje, czynsz, właścicielNr, pracownikNr, biuroNr) Primary Key nieruchomośćNr Foreign Key właścicieiNr references Właściciel Prywatny (właściciel Nr) and Właściciel Instytucjonalny (właścicielNr) Foreign Key pracownikNr references Personel (pracownikNr) Foreign Key biuroNr references Biuro(biuroNr) Wizyta (klientNr, wizytaNr, dataWizyty, uwagi) Primary Key WientNr, nieruchomośćNr Foreign Key klientNr references Kiient(klientNr) Foreign Key nieruchomośćNr references Nieruchomość(nieruchomośćNr)

Klient (klientNr, imię, nazwisko, telNr, typPreferencji, maksCzynsz) Primary Key klientNr Rejestracja (kiientNr, biuroNr, pracownikNr, dataRejestracji) Primary Key klientNr Foreign Key klientNr references Klient(klientNr) Foreign Key biuroNr references Biuro (biuroNr) Foreign Key pracownikNr references Personel(pracownikNr) Ogłoszenie (nieruchomośćNr, nazwaGazety, dataOgłoszenia, koszt) Primary Key nieruchomośćNr, nazwaGazety, dataOgłoszenia Foreign Key nieruchomośćNr references Nieruchomość(nieruchomośćNr) Foreign Key nazwaGazety references G azeta (nazwaGazety) Gazeta (nazwaGazety, adres, telNr, nazwiskoReprezentanta) Primary Key nazwaGazety Alternate Key telNr

Wynajęcie (wynajęcieNr, formaPtatności, kaucjaZapłacona, wynajęteOd, wynajęteDo, klientNr, nieruchomośćNr) Primary Key wynajęcieNr Alternate Key nieruchomośćNr, wynajęteOd Alternate Key klientNr, wynajęteOd Foreign Key klientNr references Klient(klientNr) Foreign Key nieruchomośćNr references Nieruchomość(nieruchomośćNr) Derived kaucja (Nieruchomość.czynsz*2) Derived okresNajmu (wynajęteDo - wynajęteOd)

Perspektywa dyrektorów Porównanie nazw i kluczy kandydujących encji/relacji perspektywy Personel i perspektywy dyrektorów: Perspektywa dyrektorów Perspektywa Personel Zbiór encji Klucze kandydujące