Projektowanie bazy danych – przyk³ad
Transkrypt
Projektowanie bazy danych – przyk³ad
Projektowanie bazy danych - przykład Projektowanie bazy danych – przykład Pierwszą fazą tworzenia projektu bazy danych jest postawienie definicji celu, założeń wstępnych i określenie podstawowych funkcji aplikacji. Każda baza danych jest projektowana w jakimś celu w oparciu o pewne założenia. Na początku projektu bardzo ważne również jest określenie podstawowych funkcji systemu bazy danych. Oprócz definicji celu należy również sformułować założenia wstępne. Są to wymagania jakie powinny spełniać dane przechowywane w bazie danych. Definicja celu Celem jakiemu ma służyć projektowana baza danych może być rejestracja zamówień klientów, wstępne planowanie produkcji, bilansowanie mocy produkcyjnych i obliczanie zapotrzebowania na materiały do produkcji wyrobów. Założenia wstępne Poniżej podano następujące założenia wstępne do systemu planowania produkcji seryjnej wyrobów prostych: • producent ma wielu klientów stałych i okazyjnych, • klienci zamawiając wyroby składają zamówienia, • pojedyncze zamówienie może dotyczyć wielu wyrobów, • wyroby wykonuje się w centrach roboczych (np. wtryskarka do tworzyw, maszyna do szycia, mieszalnik do artykułów spożywczych itp.), • dla każdego wyrobu jest określony czas przygotowawczo-zakończeniowy, czas jednostkowy wykonania i centrum robocze w jakim należy wykonać daną operację technologiczną, • gotowe wyroby przekazuje się do magazynu wyrobów, • na podstawie zamówień z uwzględnieniem stanu magazynu wyrobów tworzy się wstępny plan okresowy (np. miesięczny), • następnie bilansuje się obciążenie centrów (stanowisk) roboczych, • w przypadku wolnych mocy produkcyjnych uzupełnia się plan własnymi zamówieniami, • po zbilansowaniu planu produkcji określa się terminy dostaw poszczególnych materiałów i surowców potrzebnych do realizacji planu, czyli wytworzenia zaplanowanych ilości określonych wyrobów, • następnie po zbilansowaniu stanów magazynowych materiałów wysyła się zapotrzebowanie na materiały do dostawców, • każdy dostawca dostarcza określoną grupę materiałów, • materiały przechowuje się w magazynie materiałów. Definiowanie funkcji systemu baz danych Już na etapie projektowania bazy danych należy określić podstawowe funkcje systemu baz danych. W przykładowym systemie planowania produkcji mogą to być następujące funkcje: • wprowadzanie danych ogólnych (o wyrobach i materiałach z jakich są wytworzone, czasach technologicznych wykonania wyrobów itp.), • wprowadzanie danych o klientach, • wprowadzanie danych o zamówieniach, • wspomaganie tworzenia wstępnego planu, • wyszukiwanie wszystkich zamówień klienta, • wyszukanie wszystkich klientów, którzy zamówili dany towar, • bilansowanie mocy produkcyjnych, • obliczanie dziennego zapotrzebowania na materiały i surowce do produkcji, • generowanie zapotrzebowania na materiały z podziałem na dostawców. 1 Projektowanie bazy danych - przykład Budowanie diagramu związków między relacjami Metoda przedstawiania związków między relacjami (tabelami) za pomocą diagramu jest bardzo wygodna i znacznie usprawnia proces tworzenia bazy danych. Na diagramie (schemacie) widać od razu wszystkie tabele i powiązania między nimi. Zadanie to najlepiej wykonać w kilku następujących krokach: • Identyfikacja zbioru obiektów występujących w danym problemie. • Identyfikacja powiązań bezpośrednich między obiektami i przekształcenie w pojęciowy model danych (ustalenie typu relacji). • Określenie atrybutów kluczowych i pozostałych atrybutów dla wszystkich obiektów. Normalizacja do pierwszej (rozbicie atrybutów wielowartościowych na jednowartościowe) i drugiej postaci normalnej (rozbicie tabel na dwie lub więcej w celu uniknięcia redundancji danych w tabeli). • Normalizacja do trzeciej postaci normalnej, przekształcenie relacji typu m : n na powiązania typu 1 : n. • Sprawdzenie poprawności struktury bazy danych poprzez porównanie jej struktury z wymaganiami względem systemu bazy danych. Identyfikacja bezpośrednich zależności między obiektami Po wyróżnieniu obiektów w systemie należy zidentyfikować wszystkie powiązania występujące między nimi. Pojęciowy model danych Na podstawie identyfikacji bezpośrednich zależności między obiektami możemy utworzyć diagram zależności między obiektami przyszłej bazy danych. Rodzaj relacji należy ustalić na podstawie założeń wstępnych i funkcji aplikacji. Rozważmy kolejno przykłady relacji: • relacja między klientami, a złożonymi zamówieniami jest typu jeden do wielu (1 : n), ponieważ każdy klient może złożyć wiele zamówień, natomiast każde zamówienie należy tylko do jednego klienta, • relacja między wyrobami, a zamówieniami jest typu wiele do wielu (m : n), ponieważ na zamówieniu może być wiele wyrobów i na każdy wyrób może być wiele zamówień, • relacja między wyrobami, a planami jest typu m : n, ponieważ do każdego planu należy wiele wyrobów i każdy wyrób może wystąpić w wielu planach, • relacja między centrami, a wyrobami jest typu m : n, ponieważ każdy wyrób może być wykonywany na kilku centrach (maszynach) i na każdej maszynie można wykonać wiele różnych wyrobów, • relacja między wyrobami, a materiałami jest typu m : n, ponieważ na każdy wyrób może się składać kilka materiałów oraz ten sam materiał może wchodzić w skład kilku wyrobów, • relacja między dostawcami, a materiałami jest typu 1 : n, ponieważ każdy dostawca dostarcza określone materiały, a każdy materiał jest dostarczany tylko przez jednego dostawcę. Rysunek 1. Początkowy diagram zależności między obiektami 2 Projektowanie bazy danych - przykład Przekształcenie powiązań typu wiele do wiele. Każde z powiązań typu m : n, ze względu na późniejszą implementację, powinno zostać rozdzielone na dwa powiązania typu jeden do wielu 1 : n. Operację tę przeprowadza się wg schematu zilustrowanego na diagramie poniżej. Rysunek 2. Schemat zastępowania relacji m : n przez dwa powiązania typu 1: n Po zastąpieniu wszystkich powiązań typu m : n z diagramu na rys.1 otrzymujemy diagram docelowy (rys.2), z dodatkowymi obiektami. Jak można zauważyć, na diagramie tym występują tylko relacje 1: n. Taka struktura zależności w bazie danych jest prawidłowa i nadaje się do dalszej analizy tj. ustalenia atrybutów i kluczy co będzie wykonane w następnym punkcie. Rysunek 3.Docelowy diagram zależności między obiektami Określenie atrybutów Biorąc pod uwagę założenia wstępne i funkcje jakie ma pełnić przyszły system baz danych można określić atrybuty dla wszystkich relacji (obiektów) z diagramu docelowego ( poniższe tabele). Oprócz nazw atrybutów zostaną określone ich domeny, czyli praktycznie cała struktura tabel bazy danych. Tabela Materiały Nazwa atrybutu Id_Materialu Nazwa_Materialu Jednostka Ilosc_Min Ilosc_Min_Mag Rodzaj atrybutu Klucz Znaczenie Identyfikator materiału Nazwa materiału Jednostka miary materiału Min ilość dostawy Min ilość w magazynie 3 Domena Integer Char(32) Char(5) Integer Integer Projektowanie bazy danych - przykład Tabela Dostawcy Nazwa atrybutu Rodzaj atrybutu Id_Dostawcy Klucz Firma NIP Adres Atrybut wielowartościowy Telefon Bank Konto Nazwa_Dostawcy Znaczenie Identyfikator dostawcy Nazwa skrócona klienta Nr identyfikacji podatkowej Adres klienta Telefon do klienta Nazwa banku Konto bankowe Nazwa dostawcy Domena Integer Char(20) Char(13) Char( 100) Char(15) Char(40) Char(40) Char(80) Tabela Specyfikacja Nazwa atrybutu Rodzaj atrybutu Id_Wyrobu Klucz Id_Materialu Klucz Ilosc Znaczenie Identyfikator towaru Identyfikator materiału Ilość materiału na wyrób Domena Integer Integer Decimal(9,3) Tabela Wyroby Nazwa atrybutu Id_Wyrobu Nazwa_Wyrobu Jednostka Ilość_Min Ilość_ Min_Mag Znaczenie Identyfikator towaru Nazwa wyrobu Jednostka miary wyrobu Min ilość wyrobów w produkcji Min ilość w magazynie Domena Integer Char(32) Char(5) Integer Integer Tabela Zamówienia Nazwa atrybutu Rodzaj atrybutu Id_Zamowienia Klucz Id_Klienta Klucz obcy Data_Zamowienia Data_Dostawy Transport Znaczenie Nr zamówienia Identyfikator klienta Data zamówienia Data dostawy Rodzaj transportu Domena Integer Integer Data Data Char(20) Tabela Zamowienia_Pozycje Nazwa atrybutu Rodzaj atrybutu Id_Zamowienia Składnik klucza, klucz obcy Pozycja Składnik klucza Id_Wyrobu Klucz obcy Ilosc Cena VAT Znaczenie Nr zamówienia Nr pozycji na zamówieniu Identyfikator wyrobu Ilość zamówiona towaru Cena netto towaru Podatek VAT Domena Integer Integer Integer Decimal(12,3) Decimal(12,2) Decimal(12,2) Tabela Klienci Nazwa atrybutu Id_Klienta Firma NIP Adres Telefon Znaczenie Identyfikator klienta Nazwa skrócona klienta Nr identyfikacji podatkowej Adres klienta Telefon do klienta Domena Integer Char(20) Char(13) Char(100) Char(15) Rodzaj atrybutu Klucz Rodzaj atrybutu Klucz Atrybut wielowartościowy 4 Projektowanie bazy danych - przykład Bank Konto Nazwa_Klienta Nazwa banku Konto bankowe Nazwa klienta Tabela Centra Nazwa atrybutu Rodzaj atrybutu Id_Centrum Klucz Nazwa_Centrum Tabela Plany Nazwa atrybutu Id_Planu Nazwa_Planu Data_Od Data_Do Znaczenie Domena Identyfikator centrum wykonawczego Integer Nazwa centrum wykonawczego Char(32) Rodzaj atrybutu Klucz Tabela Specyfikacja_Planu Nazwa atrybutu Rodzaj atrybutu Id_Planu Klucz Id_Partii Klucz Id_Wyrobu Klucz Ilosc_Partii Termin Tabela Technologia Nazwa atrybutu Rodzaj atrybutu Id_Wyrobu Klucz, Klucz obcy Id_Operacji Klucz Nazwa_Operacji Id_Centrum Klucz obcy Nazwa_Techn Czas_Techn Czas Jedn Char(40) Char(40) Char(80) Znaczenie Identyfikator planu Nazwa planu Data początku planu Data końca planu Domena Integer Char(32) Date Date Znaczenie Identyfikator planu Identyfikator partii produkcyjnej wyrobów Identyfikator wyrobu Ilość wyrobów w partii Termin wykonania partii Domena Integer Integer Integer Integer Date Znaczenie Identyfikator wyrobu Identyfikator operacji technologicznej Nazwa operacji technologicznej Identyfikator centrum wykonawczego Nazwa technologii Czas techniczny [min] Czas jednostkowy [min] Domena Integer Integer Char(32) Integer Char(32) Integer Integer Sprawdzenie kryteriów normalności tabel Na zakończenie procesu projektowania należy jeszcze sprawdzić, czy tabele, których strukturę podano w powyższych tabelach są co najmniej w trzeciej postaci normalnej. Przeglądając tabele można zauważyć, że warunku tego nie spełniają tabele Klienci i Dostawcy, ponieważ zawierają atrybut wielowartościowy adres. Wobec tego należy przeprowadzić normalizację tych tabel. Po normalizacji, czyli zastąpieniu atrybutu adres przez trzy atrybuty elementarne tj. kod, miasto i ulicę tabele te otrzymują postać: Tabela Klienci Nazwa atrybutu Id_Klient Id_Rejonu Firma NIP Kod Miasto Rodzaj atrybutu Klucz Klucz obcy Znaczenie Identyfikator klienta Identyfikator rejonu Nazwa skrócona klienta Nr identyfikacji podatkowej Kod pocztowy Miejscowość 5 Domena Integer Integer Char(20) Char(13) Char(6) Char(40) Projektowanie bazy danych - przykład Ulica Telefon Bank Konto Nazwa_Klienta Ulica Telefon do klienta Nazwa banku Konto bankowe Nazwa klienta Char(30) Char(15) Char(40) Char(40) Char(80) Tabela Dostawcy Nazwa atrybutu Rodzaj atrybutu Id_Dostawcy Klucz Firma NIP Kod Miasto Ulica Telefon Bank Konto Nazwa_Klienta Znaczenie Identyfikator klienta Nazwa skrócona klienta Nr identyfikacji podatkowej Kod pocztowy Miejscowość Ulica Telefon do klienta Nazwa banku Konto bankowe Nazwa klienta Domena Integer Char(20) Char(13) Char(6) Char(40) Char(30) Char(15) Char(40) Char(40) Char(80) 6