Projektowanie relacyjnych baz danych Wprowadzenie do systemów baz danych Funkcje bazy danych Baza danych jest modelem pewnego fragmentu rzeczywistości zwanego obszarem analizy Informacje przechowywane w bazie danych są zazwyczaj próbą reprezentowania właściwości niektórych obiektów w świecie rzeczywistym (obszarze analizy) Najczęściej bazy danych tworzy się do modelowania i wspomagania pracy organizacji gospodarczych, państwowych lub politycznych Bazy danych stanowią część systemów informacyjnych organizacji, które je tworzą (dla własnych potrzeb) Etapy tworzenia bazy danych Ustalenie wymagań odbiorcy Modelowanie konceptualne Modelowanie logiczne Modelowanie fizyczne Realizacja bazy danych Metody projektowania Diagram związków encji (diagram E-R) Metoda diagramu związków encji nie wymaga zgromadzenia danych przed przystąpieniem do projektowania bazy danych Dane są wprowadzane do bazy po jej zaprojektowaniu Projektowanie polega na analizie rzeczywistości Alternatywną metodą jest normalizacja, która wymaga zidentyfikowania całego zbioru danych przed przystąpieniem do projektowania struktury bazy danych. Celem projektowania jest podzielenie zbioru danych na logiczne grupy. Metoda stosowana, gdy przed przystąpieniem do projektowania mamy już zgromadzone dane np. w arkuszach kalkulacyjnych MS Excell lub w formie ksiąg papierowych Projektowanie polega na analizie zgromadzonych danych Obie metody powinny prowadzić do tego samego wyniku, a przynajmniej do podobnego Metoda diagramów związków encji Rozpoznanie encji występujących w obszarze analizy Określenie związków zachodzących pomiędzy encjami Stworzenie diagramu związków encji Przekształcenie diagramu w schemat relacyjnej bazy danych Encja Encja – pewien aspekt „świata rzeczywistego”, który istnieje niezależnie i może być jednoznacznie zidentyfikowany Encją może być rzecz, która w organizacji jest rozpoznawana jako rzecz istniejąca niezależnie i unikatowo zidentyfikowana Encją może być nie tylko rzecz istniejąca w przestrzeni ale i zdarzenie istniejące w czasie (np. sprzedaż) lub pojęcie (np. zamówienie, zaliczenie, dzierżawa) Jako aspekt świata rzeczywistego encja jest scharakteryzowana pewną liczbą właściwości – atrybutów Encja jest abstrakcją złożoności pewnej dziedziny Jeśli trzeba przechowywać dane na temat wielu właściwości jakiejś rzeczy, to taka rzecz jest prawdopodobnie encją Przykłady encji Encja klient posiadająca atrybuty: nazwisko, imię, nr telefonu, adres, rabat itp. Encja towar posiadająca atrybuty: nazwa, producent, jakość, cena itp. Encja sprzedaż posiadająca atrybuty: klient, towar, ilość, data itp. W bazie danych encjom będą odpowiadały krotki (wiersze), a atrybutom kolumny. Tabela będzie jest zbiorem encji tego samego typu (tej samej klasy). Określenie identyfikatorów encji Spośród atrybutów należy wybrać jeden lub kilka jednoznacznie identyfikujące encje tej samej klasy Identyfikowanie encji (obiektów) za pomocą dużej liczby atrybutów jest złym rozwiązaniem, dlatego należy poszukiwać jednego atrybutu identyfikującego encje (obiekty) tej samej klasy, a jeśli takiego atrybutu nie ma, należy go utworzyć poprzez: Dodanie do encji specjalnego atrybutu zawierającego identyfikator obiektu; zwykle o nazwie id_nazwa_obiektu Zwykle w celu identyfikacji encje numerujemy W bazie danych identyfikator przekształci się w klucz główny tabeli, który wymusi integralność encji Określenie związków Związek jest pewnym powiązaniem miedzy encjami Między encjami klient i sprzedaż zachodzi następujący związek klient może uczestniczyć w wielu aktach sprzedaży, w jednej sprzedaży uczestniczy jeden klient – jest to związek jeden do wiele w bazie danych związkowi jeden do wiele odpowiada klucz obcy Między encjami klient i towar zachodzi następujący związek klient może kupić wiele towarów, towar może być kupiony przez wielu klientów - jest to związek wiele do wiele w bazie danych związek wiele do wiele zapisuje się w osobnej tabeli, w omawianym przykładzie będzie to tabela sprzedaż – związek między towarem a klientem jest związkiem pośrednim (poprzez sprzedaż) Liczebność związku Związek jeden do jeden (1:1) Związek jeden do wiele (1:N) Pracownik używa jednego samochodu służbowego Samochód służbowy jest używany przez wielu pracowników Związek wiele do wiele (N:M) Pracownik używa jednego samochodu służbowego Samochód służbowy jest używany przez jednego pracownika Pracownik używa wielu samochodów służbowych Samochód służbowy jest używany przez wielu pracowników Można określić maksymalną liczebność związku Student może studiować maksymalnie na 2 wydziałach Uczestnictwo Uczestnictwo dotyczy udziału encji w związku Uczestnictwo jest wymagane, gdy każda instancja encji musi brać udział w związku Uczestnictwo jest opcjonalne, gdy chociaż jedna encja nie musi brać udziału w związku Każdej ocenie musi być przyporządkowany student, który ją otrzymał Mogą istnieć studenci, którzy nie mają jeszcze żadnej oceny Kółko oznacza opcjonalny udział encji w związku (przykłady na następnym slajdzie) Przykłady notacji związków (notacja Martina) Klient musi posiadać jedno lub wiele kont Konto musi należeć do jednego i tylko jednego klienta Klient może posiadać jedno lub wiele kont Konto musi należeć do jednego i tylko jednego klienta Klient może posiadać jedno lub wiele kont Konto może należeć do jednego klienta Klient musi posiadać jedno konto Konto może należeć do jednego klienta Prosty diagram związków encji (bez atrybutów) Sprzedaż Klient Towar Przykład diagramu uzyskanego programem MS Visio Przykład diagramu uzyskanego programem DBDesigner 4 Przekształcenie diagramu w schemat relacyjnej bazy danych Dla każdej encji tworzona jest tabela Identyfikatory encji stają się kluczami głównymi tabel Atrybuty stają się atrybutami relacji (nagłówkami kolumn tabeli) Związki jeden do wiele realizowane są za pomocą klucza obcego w tabeli po stronie wiele Związek jeden do jeden można zrealizować za pomocą klucza obcego plus ograniczenie UNIQUE po stronie wiele Opcjonalność po stronie wiele można kontrolować dodając lub nie ograniczenie NOT NULL Związek rekurencyjny jeden do wiele przekształca się do tabeli z kluczem obcym odwołującym się do klucza głównego tej samej tabeli Oprogramowanie CASE Oprogramowanie CASE pozwala na tworzenie diagramów związków encji, które są automatycznie przekształcane w relacyjną bazę danych Oprogramowanie CASE umożliwia też synchronizację bazy danych z diagramem Przykłady: Oracle Designer, Oracle SQL Developer Data Modeler Early Adopter, MS Visio Enterprise Architect, DBDesigner 4 (Open Source), MySQL Workbench, dbWrench, Tworzenie tabel słownikowych Kiedy wartości pewnego atrybutu należą do pewnego skończonego zbioru, wartości tych nie należy wpisywać ręcznie, ale wybierać z listy wartości zapisanych w tabeli zwanej tabelą słownikową Tabele słownikowe eliminują możliwość popełnienia błędu i usprawniają działanie aplikacji Dodatkowe warunki integralności Przy pomocy klauzuli NOT NULL można wskazać, do których kolumn zawsze trzeba wpisywać dane, a do których nie Przy pomocy klauzuli CHECK można zapobiec prostym błędom przy wprowadzaniu danych np. zapobiec wpisaniu przyszłej daty urodzenia Przy pomocy klauzuli UNIQUE można wymusić unikalność pewnych atrybutów np. nr PESEL czy NIP, co uniemożliwi wpisane 2 razy jednej osoby do bazy Dodanie do bazy danych wyzwalaczy i procedur wyzwalanych kontrolujących integralność (SQL-3+) Dodanie indeksów do tabel Dodawanie indeksów przyspiesza wyszukiwanie danych, ale spowalnia ich wprowadzanie Standardowo tworzy się indeksy na kluczach głównych tabel Dodatkowo Jeśli będziemy wyszukiwali klientów po nazwisku należy utworzyć indeks na atrybucie nazwisko Możliwość tworzenia unikalnych indeksów pozwala na dodatkową kontrolę integralności Aby zabezpieczyć się przed dwukrotnym wprowadzeniem do bazy danych klienta o tym samym nazwisku i imieniu należy utworzyć unikalny indeks na tych atrybutach Administrowanie danymi Administrowanie danymi jest funkcją, związaną z zarządzaniem, planowaniem i dokumentowaniem zasobów danych jakiejś organizacji Kluczową ideą koncepcji administrowania danymi jest spostrzeżenie, że dane, podobnie jak kapitał, kadry itp., powinny być traktowane jako zasoby wymagające zarządzania W wielu organizacjach zgromadzone dane są podstawą ich funkcjonowania Potrzeba administrowania danymi W tej samej organizacji jest tworzonych wiele aplikacji, które używają różnych definicji tych samych danych Dane przechowywane przez wiele różnych aplikacji są niespójne Osoby podejmujące decyzje w organizacji otrzymują niezgodne między sobą dane pochodzące z różnych źródeł w tej organizacji Osoby podejmujące decyzje otrzymują dane za późno, aby móc je użyć Osoby podejmujące decyzje otrzymują za dużo nieistotnych danych Istnieją braki w zebranych danych Działy w organizacji nie mają jasnego wyobrażenia, po co zbierają pewne dane