Modelowanie struktur danych Dr inż. Marek Miłosz Wykład 5
Plan Diagramy związków encji (ERD) Metodyka budowy diagramów ERD Podstawy technologii baz danych Relacyjny model danych Mapowanie modelu ERD na relacyjny model implementacyjny © M.Miłosz
Modelowanie struktur danych Model danych = struktura informacyjna SI Cele: ścisłe określenie potrzeb informacyjnych obiektu rzeczywistego (firmy, działu itp.) identyfikowanie rzeczy ważnych w analizowanym systemie (encji, obiektów), własności tych rzeczy (atrybutów) i sposobów jakimi te encje są ze sobą powiązane (związków) dostarczenie modelu niezależnego od sposobu przechowywania danych i od metod dostępu do nich © M.Miłosz
Diagram związków encji ERD - Entity Relationship Diagram Diagram prezentujący dane i związki logiczne pomiędzy nimi Na diagramie występują: encje o określonych właściwościach (atrybutach) związki (relacje, odniesienia) Różne notacje i nazwy (ale te same zasady) LDS - Logical Data Structure SSADM - Structured System Analysis and Design Method © M.Miłosz
Encje - zasady Klient ENCJA - rzecz lub obiekt (grupa, klasa, kategoria a nie konkretny) mający dla nas znaczenie, rzeczywisty bądź wyobrażony, o którym informacje muszą być znane lub przechowywane każda encja musi być jednoznacznie identyfikowalna (nazwa w liczbie pojedynczej) każda instancja (wystąpienie) encji musi być wyraźnie odróżnialna od wszystkich innych instancji encji tego samego typu (identyfikator, klucz główny) © M.Miłosz
Encje - przykłady Klient Rower Bilet Rewers Faktura Płatność © M.Miłosz
Związki encji Związek - istotne (i nazwane) powiązanie pomiędzy dwiema (lub więcej) encjami; dwustronny Charakterystyka związku (dla każdego końca): nazwa (jednoznaczna) stopień, liczność, moc - (jeden, wiele, wcale lub wiele oznaczenia: 1:1;1:n;n:m) opcjonalność (wymagany/opcjonalny) Różne notacje: kółka, strzałki, kurze łapki © M.Miłosz
Istota i liczność związku Faktura Klient ? ma n 1 Faktura nr 67/01 Faktura nr 67/01 Faktura nr 69/01 Faktura nr 99/01 © M.Miłosz
Przykłady Cel SI Faktura Towar Klient Dowód tożsamości Klient Dowód występuje Cel SI Klient Dowód tożsamości ma Klient Dowód tożsamości ma © M.Miłosz
Związki rekurencyjne (unarne) Pracownik ma kierownika ma kierownika ma kierownika ma kierownika Pracownik Pracownik © M.Miłosz
Związki encji - przykłady © M.Miłosz
Związki encji - niepoprawne © M.Miłosz
Związki wielokrotne Faktura Gotówka Przelew Karta kredytowa ALBO © M.Miłosz
LDS - konwencje SSADM - Structured System Analysis and Design Method © M.Miłosz
Atrybut encji dowolny szczegół służący do kwalifikowania, identyfikowania, klasyfikowania, określania ilości lub wyrażania stanu encji dowolny opis mający znaczenie dla encji funkcja przypisująca obiektowi wartość cechy ze zbioru wartości tej cechy (dziedziny) Właściwości atrybutów: atomiczność, jednoznaczność, zależność tylko od instancji encji (klucza głównego), domena, format, inne warunki © M.Miłosz
Atrybut = element danych Atrybuty Atrybut = element danych Atrybut kluczowy = identyfikator instancji encji © M.Miłosz
Atrybuty - przykłady Klient Nazwisko Imię Kod_pocztowy Miejscowość Ulica Numer @PESEL Data_urodzenia Rower @Numer_roweru Typ_roweru Data_zakupu Cena_zakupu Kolor Status Data_statusu © M.Miłosz
Algorytm budowy ERD (1) Lista: klient (PESEL), rower (Nr), typ roweru (Kod), wypożyczenie (Nr), cennik (Pozycja) 1) identyfikacja (wydzielenie) zbioru obiektów (encji) w systemie wraz z ich atrybutami kluczowymi 2) identyfikacja powiązań bezpośrednich między encjami (tablica krzyżowa) oraz ich rodzaju © M.Miłosz
Algorytm budowy ERD (2) 3) przekształcenie tablicy krzyżowej powiązań w logiczny model danych i identyfikacja pozostałych atrybutów encji 4) przekształcenie każdego z powiązań typu M:N na dwa powiązania typu 1:N i identyfikacja dodatkowych atrybutów charakterystycznych dla nowo powstałych obiektów (encje kojarzące, łączące) 5) sprawdzenie poprawności otrzymanej struktury poprzez porównanie z wymaganiami systemu 6) weryfikacja DFD względem ERD (tak by był sprzęg: encja(-cje)-składnica(-e) danych) © M.Miłosz
ERD - przekształcenie powiązań typu M:N Faktura Towar występuje Faktura Towar składa się Pozycja występuje Encja pośrednicząca (łącząca) © M.Miłosz
Problem przekształcenia Słuchacz Kurs uczestniczy dotyczy dokonuje Płatność Słuchacz Kurs dotyczy Pozycja listy jest na liście Płatność Płatność dotyczy © M.Miłosz
Model danych w SI „SzyB” Rower wypożycza Klient ma Cennik Typ roweru jest związany © M.Miłosz
SzyB - ERD Model konceptualny © M.Miłosz
ERD z atrybutami © M.Miłosz
Podstawy technologii baz danych
Dane w programach Dane wewnątrz programów (we/wy, wykorzystanie przez jednego użytkownika i w trakcie pojedynczej sesji) - nietrwałe, niedostępne dla wielu użytkowników Program We Wy Dane © M.Miłosz
Dane - potrzeby aplikacji Dużo danych Dane wspólne dla: wielu programów wielu użytkowników tego samego programu Trwałość danych : długi czas życia Program A We Wy Program B We Wy Program A We Wy Dane Rozwiązanie: DANE w PLIKACH © M.Miłosz
Dane w plikach - problemy Współdzielenie danych - efektywność i konflikty Rozwiązanie (warstwa pośrednia): System Zarządzania Bazą Danych - SZBD Program A We Wy SZBD Baza danych © M.Miłosz
Co to jest BD? Zorganizowany zbiór danych przechowywany w zewnętrznej pamięci komputera Odzwierciedlenie fragmentu rzeczywistości Cechy: trwałość zgodność z rzeczywistością © M.Miłosz
BD - struktura Dane: 28,5 Znaczenie: wiek pracownika Część intensjonalna: schemat BD, definicja struktury i zasad poprawności Część ekstensjonalna: same dane, zawartość faktograficzna © M.Miłosz
BD - pożądane właściwości Współdzielenie danych Brak redundancji Integralność Spójność Bezpieczeństwo danych Poufność danych Abstrakcyjność danych Niezależność danych od programów Niezawodność dostępu © M.Miłosz
BD - poziomy odwzorowania danych Zewnętrzny Konceptualny Wewnętrzny: Implementacyjny Fizyczny Model ANSI/SPARC American National Standards Institute Standards Planning and Requirements Committee Trzy modele - warstwy © M.Miłosz
SZBD - zadania Organizacja struktury BD (definiowanie schematu BD) Konstruowanie BD (system plików) Przetwarzanie danych: aktualizacja danych (wprowadzanie, poprawianie, usunięcie) wyszukiwanie danych (zapytania do BD) Administracja BD Zapewnienie właściwości BD w praktyce © M.Miłosz
SZBD - specjalne cechy Transakcyjność przetwarzań Optymalizacja przetwarzań Blokowanie zasobów (rozwiązanie konfliktów dostępu) Przeciwdziałanie zakleszczeniom System kont i uprawnień dostępu Monitorowanie BD © M.Miłosz
Języki baz danych SQL Język definiowania danych (Data Definition Language - DDL) - definiuje schemat implementacyjny Język manipulowania danymi (Data Manipulation Language - DML) Język zapytań (Query Language) Język sterowania danymi (Data Control Language - DCL) - sterowanie transakcjami © M.Miłosz
SZBD - architektura Architektura jednopoziomowa Dwupoziomowa: klient-serwer Trójpoziomowa: serwer WWW-serwer aplikacji - serwer BD Architektura rozproszona (wiele serwerów BD, problem: utrzymanie integralności i aktualności; replikacja BD) © M.Miłosz
Architektury sieciowe BD Serwer BD © M.Miłosz
Serwer aplikacji Podział aplikacji na dwie części: transakcyjną (obliczeniową) i interfejs użytkownika Chudy (słaby, tani) klient Uniezależnienie aplikacji od SZDB (uniwersalna, otwarta architektura aplikacji) Serwer WWW © M.Miłosz
Przetwarzanie rozproszone Przezroczystość dla klienta Szybkość Wielkość BD Niezawodność Problemy: łączność, transakcyjność, integralność © M.Miłosz
Własności współczesnych BD Niezależność aplikacji i danych Abstrakcyjna reprezentacja danych, wykorzystywanych przez aplikacje Różnorodność widzenia danych przez różnych użytkowników (filtry, perspektywy itp.) Fizyczna i logiczna niezależność (wieloplatformowość SZBD) © M.Miłosz
Model implementacyjny - typy Hierarchiczny Sieciowy Kartotekowy Relacyjny Obiektowo-relacyjny Obiektowy Hypertekst © M.Miłosz
Model relacyjny - historia Dr E.F.Codd, IBM (1970) - A Relational Model for Large Shared Data Banks Lata 70.: IBM (System/R); INGRES (Uniwersytet Kalifornijski w Berkeley) Lata 80.: mainframe: DB2, Oracle minikomputery (Unix): Informix, Sybase, Progress mikrokomputery: dBase, FoxPro, Clipper, Paradox, R:BASE Lata 90.: dowsizing dużych systemów mikrokomputery: MS SQL Server Linuxowe: MySQL, Postgres © M.Miłosz
RBD - pojęcia podstawowe Książki Tablica, plik Atrybut, pole, kolumna Rekord, wiersz tablicy Typ danych Domena, dziedzina Wartość null Związki wartościowe (referencje) Wypożyczenia Czytelnicy © M.Miłosz
RDB - zasady Każda tablica w BD ma jednoznaczną nazwę Każde pole (kolumna) na jednoznaczną nazwę w tablicy Wszystkie wartości w kolumnie są tego samego typu Porządek kolumn i wierszy nie jest istotny Każdy wiersz musi być różny (wartościowo) Pola muszą zawierać wartości atomowe © M.Miłosz
Klucze Klucz główny (Primary Key) - grupa kolumn o nie powtarzających się danych Czytelnicy Klucz obcy (Foreign Key) - grupa kolumn z jednej tablicy, których wartości odpowiadają kluczowi głównemu innej tablicy (powiązanie) Wypożyczenia © M.Miłosz
Integralność Poziom pól (dziedzina wartości) Poziom tablic (klucz główny) Integralność referencyjna: obowiązkowość związku ograniczone usuwanie usuwanie kaskadowe wstawianie null Integralność dynamiczna © M.Miłosz
Porządkowanie wierszy Wiersze w tablicach - porządek historyczny Znaczenie dla interfejsu Fizyczne sortowanie - b. pracochłonna operacja z wykorzystaniem roboczych plików dyskowych; “trwałość” rezultatu Sortowanie logiczne (indeksowanie) - tworzenie i wykorzystywanie tablic indeksowych; operacja dynamiczna © M.Miłosz
Dostęp do danych Sekwencyjny (rekordy w pliku, który musi być przeglądany od początku) Bezpośredni (możliwość natychmiastowego odnalezienia potrzebnego rekordu w pliku) Indeksowany (wykorzystuje tablicę-indeks do odszukania miejsca przechowywania rekordu) © M.Miłosz
Transakcje na BD SI zapis Operacje Zestawienie stanów i obrotów Stany zmiana stanu © M.Miłosz
Transakcje Zmiana stanu BD Logiczna jednostka pracy w BD W trakcie trwania transakcji - BD nie jest spójna (narusza się integralność) Właściwości transakcji: niepodzielność, spójność, izolacja i trwałość Blokowanie - podstawa realizacji transakcji w środowisku współbieżnym © M.Miłosz
Transakcje a awaria BD Transakcje zatwierdzone - mają być odtworzone Transakcje niezatwierdzone - wycofane Metody osiągnięcia: dzienniki transakcji redundancja © M.Miłosz
4GL Języki czwartej generacji oparte na formularzach Proceduralne SQL - podzbiór Języki: ORACLE PL/SQL Progress 4GL Informix 4GL © M.Miłosz
Mapowanie modelu konceptualnego na implementacyjny
Konceptualny (logiczny) a implementacyjny model danych Konceptualny (niezależny od SZBD, języka programowania, modelu bazy danych) - ERD Implementacyjny - fizyczny (w konkretnym modelu bazy danych i SZBD) Model implementacyjny służy do wygenerowania skryptu do tworzenia BD wraz z więzami integralności (Słownik BD) © M.Miłosz
Pojęcia relacyjnego modelu implementacyjnego Tabela (odpowiednik encji, nazwa l.mnoga) Kolumna-Pole (odpowiednik atrybutu) Dziedzina (konkretny typ danych i jego parametry) Rekord (wystąpienie) Indeks Klucz główny (indeks unikalny, klucze sztuczne) Klucz obcy (indeks nieunikalny) Odniesienie (klucz główny-obcy; więzy integralności referencyjnej) Klucz alternatywny (indeks unikalny lub nie) © M.Miłosz
Inne elementy modelu implementacyjnego Atrybuty rozszerzone (nie SQL-owe) - specyficzne dla danego SZBD: dodatkowe typy, opisy, etykiety, elementy wyświetlane na ekranie (komunikaty, helpy) wartości domyślne rozróżnialność (lub nie) wielkości znaków procedury walidacyjne (trigery) typ indeksu (np. słowny), opis, sposób konstrukcji indeksu sekwencje © M.Miłosz
Tworzenie modelu implementacyjnego Generowanie z modelu konceptualnego (mapowanie modelu konceptualnego na implementacyjny) Rewers ze schematu istniejącej BD Różne wersje modelu implementacyjnego Dane istniejące w BD © M.Miłosz
Problemy mapowania Nazewnictwo (identyfikatory, sposób ich tworzenia, nazwy typów, dziedziny) Ograniczenia ilościowe (np. na liczbę pól w rekordzie) Brak wielowartościowości pól (płaski model) Brak zmiennej struktury rekordu (wiersza) © M.Miłosz
Mapowanie proste encja tabela atrybut pole unikalny identyfikator klucz główny związki klucze obce (dodawane do encji) © M.Miłosz
Mapowanie - przykład ERD © M.Miłosz
Mapowanie - przykład ERD z atrybutami © M.Miłosz
Mapowanie - przykład Tabele relacyjnej BD © M.Miłosz
Mapowanie proste - problemy Faktura Towar występuje Pozycja składa się Kolejność na liście pozycji Pozycje nr_fakt <FK1> id_tow <FK2> LP Ilosc Faktury nr_fakt Data Name imie Kod_p Towary id_tow Nazwa_t j_m sklada sie wystepuje © M.Miłosz
Mapowanie złożone (1) Mapowanie złożone - nieoczywiste (związki wielu encji): Mapowanie na pojedynczą tabelę (kodowanie) Mapowanie na oddzielne tabele Mapowanie związków wykluczających się © M.Miłosz
Mapowanie złożone (2) Pojedyncza tabela TYP = [K|P] Dwie tabele © M.Miłosz Zalety i wady
Mapowanie złożone (3) © M.Miłosz
Mapowanie złożone (4) Dodatkowe więzy integralności (wykluczenie identyczności kluczy obcych w dwóch tabelach) © M.Miłosz
Atrybuty złożone Wartość atrybutu jest złożeniem kilku bardziej prostych wartości, np. adres Tylko atrybuty elementarne Ewentualne, nieformalne grupowanie w nazwie (przedrostek): AdresUlica (adres_ulica) AdresMiasto (adres_miasto) AdresKodPocztowy (adres_kod_pocztowy) © M.Miłosz
Atrybuty wielowartościowe Wiele wartości dla instancji encji Np. ocena z IO lub stanowiska pracy Mapowanie na dodatkową encję © M.Miłosz
Atrybuty o znanej liczbie wartości Związki o znanej liczności (mocy) Znana z góry liczność związku (np. 1:3) Przykład: 3 języki obce, 3 lata studiów Komplikacja przetwarzań Zmiana w systemie rzeczywistym © M.Miłosz
Klucze Każda encja ma może mieć wiele unikalnych identyfikatorów - są to klucze kandydujące Spośród kluczy kandydujących wybiera się główny Jeśli brak klucza kandydującego - tworzy się klucz sztuczny (generowany automatycznie) © M.Miłosz
? Klucze - przykład Pracownik Nazwisko Data_ur 1. Nazwisko + Data_ur PESEL Nr_prac 1. Nazwisko + Data_ur ? 2. PESEL 3. Nr_prac © M.Miłosz
Wybór klucza - zalecenia Klucz główny powinien być jednym atrybutem (jak najkrótszym) Klucz główny nie powinien mieć znaczenia w dziedzinie przedmiotowej (nawet małe zmiany w dziedzinie biznesu spowodują istotne zmiany w BD) Klucz główny raczej powinien być generowany automatycznie (RecID, OID) Dostęp, wyszukiwanie, porządkowanie wg atrybutów kluczowych – indeksy (klucze alternatywne) © M.Miłosz
Modelowanie czasu - dane Dane ponadczasowe (marki samochodów, miasta) – statyczne Dane opisujące stan aktualny (cena, koszt, znajomość języków obcych, ocena) – charakter dynamiczny, ale nie związany z czasem Dane opisujące zdarzenia nieregularne/regularne (sprzedaż, wypożyczenie, spłata raty kredytu) – opis zdarzenia zawiera datę/moment Dane opisujące okresy czasu nieregularne/regularne (urlop, limit roczny) – opis i momenty rozpoczęcia/zakończenia lub czasookres (np. kwartał) © M.Miłosz
Wersjonowanie danych Dane historyczne -> dodatkowe encje ze stemplem czasowym jako atrybutem Wersjonowanie atrybutów: © M.Miłosz
Wersjonowanie związków © M.Miłosz
Ilościowe aspekty danych Informacje charakteryzujące ilość danych: zajętość pamięci (liczba wystąpień w BD) zmienność (prognozowany przyrost w czasie) wypełnienie pól wartościami Informacje charakteryzujące dostęp: wymagana szybkość dostępu zakres przetwarzań (najczęściej wykorzystywane atrybuty) © M.Miłosz
Analiza ilościowa (przykład) Konto klienta Operacja 15000 + 100 mies. 1 mln. + 100 tys. mies. Częste operacje: - dodanie operacji - zmiana stanu konta - zapytanie o stan konta Rzadkie operacje: - zmiana danych adresowych klienta © M.Miłosz
Mapowanie (proste) Konto klienta Operacje Wydajność? © M.Miłosz
Mapowanie (rozsądne) © M.Miłosz
Analiza wartości pustych Pracownik IdPrac Nazwisko NazwiskoPanieńskie GrupaKrwi DataBadaniaGrKrwi BD w 50% pusta Zapełnione w 25% przypadków } Zapełnione w 10% przypadków Pracownicy IdPrac Nazwisko Mężatki NazwiskoPanieńskie BadaniaKrwi GrupaKrwi DataBadaniaGrKrwi + zmniejszenie objętości BD - spadek wydajności © M.Miłosz
Słownik danych Data Dictionary Słownik danych zawiera opis zawartości magazynów, przepływów danych i encji Szczegóły związków pomiędzy encjami Opis struktury danych: dane elementarne i ich typy operatory - symbole (notacja BNF - Backus-Naur’a) Automatyczne generowanie słownika (BD, sekwencje SQL) © M.Miłosz
Generowanie struktury BD CREATE DATABASE BIBL; CREATE TABLE KSIEG (ID-KSIEGARNI CHAR (4) NOT NULL, KOD_P CHAR (5) CHECK, MIASTO CHAR (12), ULICA CHAR (15), NUMER-D CHAR (8), NIP CHAR (13), PRIMARY KEY (ID-KSIEGARNI)); CREATE UNIQUE INDEX KSIEG ON KSIEG (ID-KSIEGARNI); CREATE TABLE DOSTAWA (ID-DOSTAWY CHAR (4) NOT NULL, ID-KSIEGARNI CHAR (4) NOT NULL, DATA CHAR (8), PRIMARY KEY (ID-DOSTAWY), FOREIGN KEY (ID-KSIEGARNI) REFERENCES KSIEG); CREATE UNIQUE INDEX DOSTAWA ON DOSTAWA (ID-DOSTAWY); CREATE TABLE REWERS (ID-CZYT CHAR (12), ID-KSIAZKI CHAR (12) NOT NULL, TERMIN CHAR (6) NOT NULL, PRIMARY KEY (ID-CZYT,ID-KSIAZKI), FOREIGN KEY (ID-KSIAZKI) REFERENCES KSIAZKA, FOREIGN KEY (ID-CZYT) REFERENCES CZYTELNIK); © M.Miłosz
Podsumowanie Model danych jest podstawą do ich przetwarzania Technika ERD pozwala budować modele konceptualne Systemy baz danych w większości wypadków wykorzystują model relacyjny Istnieje możliwość mapowania ERD na model relacyjny © M.Miłosz
Ćwiczenie Modelowanie danych na podstawie wymagań użytkownika Model konceptualny Modyfikacje modelu Model implementacyjny - samodzielnie © M.Miłosz
Opis wymagań W powstającym obok PL ogrodzie zoologicznym potrzebny jest SI. Powinny się w nim znaleźć informacje o zwierzętach, o ich pożywieniu i o ich opiekunach, którymi będą wybrani studenci i wykładowcy. Każde zwierzę ma swoją klatkę. Każde zwierzę ma dokładnie jednego opiekuna. Jeden opiekun ma pod swoją opieką jedno lub wiele zwierząt. Każde zwierzę jest karmione raz dziennie i spożywa jedno lub więcej pożywień dostarczanych przez swojego opiekuna. Jedno pożywienie może być podawane wielu zwierzętom. System ma ewidencjonować dostawy i zużycie pożywienia. © M.Miłosz
1. Wydzielenie encji i ich atrybutów kluczowych Opiekun Zwierzę Klatka Pożywienie Racja żywnościowa Dostawca Dostawa Identyfikator opiekuna Id zwierzęcia Numer klatki Indeks materiałowy Numer racji NIP Numer dostawy © M.Miłosz
2. Tablica krzyżowa (związki bezpośrednie) Dostawca pożywienia 3. ERD © M.Miłosz
4./5. Model konceptualny © M.Miłosz
Modyfikacje - samodzielnie Wprowadzenie pojęcia Jadłospis (tj. ustalony zbiór pożywień, wielokrotnie wykorzystywany i identyfikowany) Wprowadzenie konieczności przypisania zwierzęcia do gatunku, grupy itd. Wprowadzenie słowników: jednostek miar, trybu zatrudnienia pracowników, klasyfikacji dostawców na grupy © M.Miłosz