Baza danych "Biblioteka" przeznaczenie i funkcje aplikacji schemat opisowy model danych implementacja funkcji analiza wybranych przykładów powiązań Bazy danych s.3-1
Przeznaczenie i funkcje aplikacji Przeznaczenie: Baza danych wspomaga funkcjonowanie biblioteki uczelnianej. Funkcje przeznaczone dla pracownika: Przechowuje dane książek będących na stanie biblioteki. Przechowuje niezbędne dane osobowe czytelników. Przechowuje informacje (aktualne i archiwalne) o wypożyczeniach książek. Umożliwia edycję zgromadzonych danych. Umożliwia przeszukiwanie zgromadzonych danych. Generuje zestawienia statystyki. Funkcje przeznaczone dla czytelnika: Umożliwia przeszukiwanie księgozbioru. Dostarcza informacje o dostępności wybranej pozycji. Pozwala zarezerwować wybraną książkę. Bazy danych s.3-2
Schemat opisowy dane Każda książka ma własną kartę z unikalnym numerem, listą autorów, tytułem, wydawnictwem, rokiem wydana i datą przyjęcia do ewidencji. Autorzy są jednoznacznie identyfikowani, możliwe jest więc rozróżnienie osób o tym samym imieniu i nazwisku. Książki mają przypisany zbiór słów kluczowych, które charakteryzują ich tematykę. Jedno słowo może być przypisane do kilku książek, a każda książka może być opisana za pomocą wielu słów. Każde słowo kluczowe posiada unikalną nazwę. Czytelnicy mają indywidualne karty, na których znajduje się unikalny numer, nazwisko, adres oraz data zapisu. Każda osoba jest przypisana do jednej kategorii (np. student, wykładowca), która wyznacza termin zwrotu oraz liczbę książek możliwych do wypożyczenia. Do jednej kategorii może należeć wielu czytelników. Biblioteka gromadzi informacje o wypożyczeniach książek, przechowywaną do czasu gdy dana pozycja zostanie usunięta z księgozbioru. W chwili przekazywania książki wypożyczającemu na jej karcie zapisywana jest data wypożyczenia i numer czytelnika, uzupełnianie datą zwrotu po zwrocie książki do biblioteki. Czytelnicy mają możliwość rezerwowania wybranych książek. Pracownicy prowadzą dodatkowy rejestr, w którym zapisują identyfikator czytelnika i książki, która została zarezerwowana. Rezerwacja wygasa po upływie trzech dni. Bazy danych s.3-3
Schemat opisowy funkcje Pracownicy biblioteki muszą mieć możliwość przeszukiwania zgromadzonych danych: księgozbioru na podstawie numeru książki, nazwiska autora i tytułu oraz czytelników na podstawie numeru i nazwiska. Należy umożliwić edycję wszystkich gromadzonych danych (modyfikacja i usuwanie). Aplikacja powinna generować zestawienia niezbędne w codziennej pracy: listę osób wypożyczających wybraną książkę, listę książek wypożyczanych w danym okresie, listę książek niewypożyczanych w określonym przedziale czasowym, listę czytelników, którzy nie korzystają z biblioteki, statystyki dotyczące wypożyczeń z danego okresu, listę wypożyczeń, które przekroczyły dozwolony termin (upomnienia). Czytelnicy powinni mieć dostęp do swoich danych (historia wypożyczeń) i pełnego katalogu książek z możliwością przeszukiwania po: tytule, autorze i słowach kluczowych. Należy dostarczyć pełne dane książek zawierające informacje o dostępności (dostępna, zarezerwowana, wypożyczona) i przewidywanym terminie zwrotu, jeżeli książka była wypożyczona. Podczas przeglądania katalogu czytelnik powinien mieć możliwość zarezerwowania wybranych pozycji, przeglądania listy zarezerwowanych książek i ewentualnego odwołania rezerwacji. Bazy danych s.3-4
Wykaz skrótów Książki Czytelnicy IDKS identyfikator książki IDCZ identyfikator czytelnika Tytuł tytuł książki NazCZ nazwisko czytelnika IDA identyfikator autora ImięCZ imię czytelnika NazA nazwisko autora Miasto, Kod miejsce zamieszkania ImieA imię autora Ulica, Nr adres czytelnika NazW nazwa wydawnictwa IDKT identyfikator kategorii RokW rok wydania NazKT nazwa kategorii DataE data przyjęcia do ewidencji Termin max. czas wypożyczenia IDSK identyfikator słowa kluczowego Ilość dozwolona liczba książek NazSK nazwa słowa kluczowego Wypożyczenia i rezerwacje Wydawnictwa DataW data wypożyczenia IDW identyfikator wydawnictwa DataZ data zwrotu (atrybut nie wynika bezpośrednio z analizy DataR data rezerwacji schematu opisowego pojawi się w ostatnim kroku procesu modelowania danych) Bazy danych s.3-5
Wstępny zestaw relacji Obiekty: Książki, Czytelnicy Powiązania: Czytelnik wypożycza Książkę, Czytelnik rezerwuje Książkę Książki(IDKS, Tytuł, IDA, NazA ImieA, NazW, RokW, DataE, IDSK,NazSK) Czytelnicy(IDCZ, NazCZ, ImięCZ, Miasto, Kod, Ulica, Nr, DKT, NazKT, Termin, Ilość) Wypożyczenia(IDCZ, IDKS, DataW, DataZ) DataW IDKS Rezerwacje(IDCZ, IDKS, DataR) IDA IDSK IDKS ImięA NazA NazSK Tytuł NazW RokW IDCZ NazKT IDKT Ilość NazCZ ImięCZ Miasto Kod Ulica Nr Termin IDCZ DataZ Wypożyczenia DataR IDKS IDCZ Książki DataE Czytelnicy Rezerwacje Bazy danych s.3-6
Normalizacja danych IFN Relacja jest w IFN, jeżeli wszystkie składniki są zależne funkcjonalnie od klucza. Książki(IDKS, Tytuł, IDA, NazA ImieA, NazW, RokW, DataE, IDSK, NazSK) Czytelnicy(IDCZ, NazCZ, ImięCZ, Miasto, Kod, Ulica, Nr, IDKT, NazKT, Termin, Ilość) Wypożyczenia(IDCZ, IDKS, DataW, DataZ) Rezerwacje(IDCZ, IDKS, DataR) Uwagi: 1. Książka może mieć kilku autorów, jedna osoba może być autorem kilku książek (Książka będzie powtórzona tyle razy ilu jest autorów). 2. Książka może mieć kilka słów kluczowych, jedno słowo może być przypisane do kilku Książek (dodatkowe powtórzenia dla każdego słowa kluczowego). 3. Identyfikator Czytelnika jednoznacznie identyfikuje krotkę relacji. 4. Czytelnik wypożycza i rezerwuje wiele książek, jedną może wypożyczyć lub zarezerwować wielokrotnie. Relacje przedstawione powyżej są w IFN, ponieważ ich wszystkie składniki zależą funkcjonalnie od przyjętych kluczy. Bazy danych s.3-7
Normalizacja danych IIFN Relacja jest w IIFN, jeżeli jest w IFN i wszystkie jej składniki są zależne funkcjonalnie elementarnie od klucza. W relacji Książki: 1. Tytuł, NazW, RokW, DataE zależą elementarnie od IDKS 2. NazA i ImięA zależą elementarnie od IDA 3. NazSK zależy elementarnie od IDSK 4. IDKS i IDSK łącznie są źródłem zależności elementarnej 5. IDKS i IDA łącznie są źródłem zależności elementarnej Składniki pozostałych relacji zależą elementarnie od przyjętych kluczy. Książki1(IDKS, Tytuł, NazW, RokW, DataE), Książki2(IDA, NazA, ImięA) Książki3(IDSK, NazSK), Książki4(IDKS, IDSK), Książki5(IDKS, IDA) Czytelnicy(IDCZ, NazCZ, ImięCZ, Miasto, Kod, Ulica, Nr, IDKT, NazKT, Termin, Ilość) Wypożyczenia(IDCZ, IDKS, DataW, DataZ) Rezerwacje(IDCZ, IDKS, DataR) Relacje przedstawione powyżej są w IIFN, ponieważ są w IFN i wszystkie ich składniki zależą funkcjonalnie elementarnie od przyjętych kluczy. Bazy danych s.3-8
Normalizacja danych IIIFN Relacja jest w IIIFN, jeżeli jest w IIFN i wszystkie jej składniki są zależne funkcjonalnie bezpośrednio od klucza. W relacji Czytelnicy NazKT, Termin i Ilość zależą bezpośrednio od IDKT Składniki pozostałych relacji zależą bezpośrednio od przyjętych kluczy. Książki1(IDKS, Tytuł, NazW, RokW, DataE), Książki2(IDA, NazA, ImięA) Książki3(IDSK, NazSK), Książki4(IDKS, IDSK), Książki5(IDKS, IDA) Czytelnicy1(IDCZ, NazCZ, ImięCZ, Miasto, Kod, Ulica, Nr, IDKT) Czytelnicy2(IDKT, NazKT, Termin, Ilość) Wypożyczenia(IDCZ, IDKS, DataW, DataZ) Rezerwacje(IDCZ, IDKS, DataR) Relacje przedstawione powyżej są w IIIFN, ponieważ są w IIFN i wszystkie ich składniki zależą funkcjonalnie bezpośrednio od przyjętych kluczy. Bazy danych s.3-9
Normalizacja danych ostateczny zestaw relacji Możliwe udoskonalenie: nazwy wydawnictw powtarzają się przy wielu książkach (lista wydawnictw jest ograniczona). Można wprowadzić relację: Wydawnictwa(IDW, NazW) Ostatecznie po zmianie nazw: Książki(IDKS, Tytuł, IDW, RokW, DataE) Autorzy(IDA, NazA, ImięA) Książki-Autorzy(IDKS, IDA) Wydawnictwa(IDW, NazW) SłowaKluczowe(IDSK, NazSK) Książki-SłowaKluczowe(IDKS, IDSK) Czytelnicy(IDCZ, NazCZ, ImięCZ, Miasto, Kod, Ulica, Nr, IDKT) Kategorie(IDKT, NazKT, Termin, Ilość) Wypożyczenia(IDCZ, IDKS, DataW, DataZ) Rezerwacje(IDCZ, IDKS, DataR) Bazy danych s.3-10
Przykładowe dane (1) Książki: Ullman Jeffrey D., Widom Jennifer, "Podstawowy wykład z systemów baz danych" wydawnictwo WNT 2001, przyjęta do ewidencji 2001.11.20, słowa kluczowe: Bazy danych, Informatyka Ullman Jeffrey D., Widom Jennifer, Garcia-Molina Hector, "Database Systems: The Complete Book", wydawnictwo Addison-Wesley 2008, przyjęta do ewidencji 2010.02.01, słowa kluczowe: Bazy danych, Informatyka, Anglojęzyczna Czytelnicy Student, Kowalski Jan, adres: 65-001 Zielona Góra, ul. Krótka 175 Wykładowca, Nowak Andrzej, adres: 66-100 Sulechów, ul. Długa 22 Historia wypożyczeń i rezerwacji 14.02.010 Kowalski - rezerwacja "Database Systems ", wypożyczenie 15.02, zwrot 5.03, 20.02.2010 Nowak - wypożyczenie "Podstawowy wykład ", zwrot 8.04, 7.03.2010 Nowak - rezerwacja "Database Systems ", wypożyczenie 9.03, brak zwrotu, 15.04.2010 Kowalski - wypożyczenie "Podstawowy wykład ", brak zwrotu Bazy danych s.3-11
Relacja Książki Przykładowe dane (2) IDKS Tytuł IDW RokW DataE 1 Podstawowy wykład z systemów baz danych 10 2001 2001.11.20 2 Database Systems: The Complete Book 20 2008 2010.02.01 Relacja Książki-Autorzy Relacja Wydawnictwa IDW NazW 10 WNT 20 Addison-Wesley IDKS IDA 1 1 1 2 2 1 2 2 2 3 Relacja Autorzy IDA NazA ImięA 1 Ullman Jeffrey D. 2 Widom Jennifer 3 Garcia-Molina Hector Relacja SłowaKluczowe IDSK NazSK 11 Bazy danych 12 Informatyka 13 Anglojęzyczne Relacja Książki-SłowaKluczowe IDKS IDA 1 11 1 12 2 11 2 12 2 13 Bazy danych s.3-12
Relacja Czytelnicy Przykładowe dane (3) IDCZ NazCZ ImięCZ Miasto Kod Ulica Nr IDKT 313 Kowalski Jan Zielona Góra 65-001 Krótka 175 1 385 Nowak Andrzej Sulechów 66-100 Długa 22 2 Relacja Kategorie IDKT NazKT Termin Ilość 1 Student 45 5 2 Wykładowca 100 10 Relacja Wypożyczenia IDCZ IDKS DataW DataZ 313 2 2010.02.15 2010.03.05 385 1 2010.02.20 2010.04.08 385 2 2010.03.09 313 1 2010.04.15 Relacja Rezerwacje IDCZ IDKS DataR 313 2 2010.02.14 385 2 2010.03.07 Bazy danych s.3-13
Lista czytelników z pełnymi danymi Funkcje aplikacji (1) Należy wykonać złączenie naturalne relacji Czytelnicy i Kategorie, a następnie rzutowanie w celu wyboru odpowiednich atrybutów. IDCZ,NazCZ,ImięCZ,Kod,Miasto,Ulica,Nr,NazKT (Czytelnicy Kategorie) Lista Książek z pełnymi danymi (bez słów kluczowych) Pełne dane książek znajdują się w relacjach: Książki, Wydawnictwa Autorzy oraz Książki-Autorzy. Należy wykonać złączenie naturalne wszystkich relacji i rzutowanie w celu wyboru odpowiednich atrybutów. IDKS,Tytuł,,ImieA,NazA ((Książki Wydawnictwa) Książki-Autorzy) Autorzy) Lista osób wypożyczających książkę o identyfikatorze ID Informacje znajdują się w relacjach: Wypożyczenia, Czytelnicy, Książki. Należy wykonać ich złączenie naturalne, rzutowanie w celu wyboru atrybutów wyniku i selekcję ograniczającą wynik do wierszy dotyczących książki o identyfikatorze ID. IDKS=ID IDCZ,NazCZ,ImięCZ ((Czytelnicy Wypożyczenia) Książki) Bazy danych s.3-14
Funkcje aplikacji (2) Lista wypożyczeń, które przekroczyły dozwolony termin (upomnienia) Niezbędne informacje znajdują się w tabelach: Wypożyczenia, Książki, czytelnicy i kategorie. Należy wykonać ich złączenie naturalne, rzutowanie (wybór atrybutów) oraz selekcję wierszy zawierających książki wypożyczone (pusta data zwrotu), których termin zwrotu minął (suma daty wypożyczenia i dozwolonego terminu z relacji Kategorie mniejsza od daty bieżącej). DataZ IS NULL AND DataW+Termin<Now() (((Wypoż. Książki) Czyt.) Kat.) Uwaga: elementy zapytania wykraczają poza algebrę relacji. Element NULL określa pustą wartość atrybutu, Now() jest funkcją zwracającą bieżącą datę i godzinę. Wypożyczenie i rezerwacja Książki, zwrot i odwołanie rezerwacji Książki Realizacja tych funkcji wymaga wykonania modyfikacji danych. Tego typu operacje nie są elementem algebry relacji i wymagają zastosowania rozszerzeń dostępnych w języku QBE (odpowiednio kwerend dodających, aktualizujących i usuwających dane). Bazy danych s.3-15
Modelowanie danych przykłady Prawidłowo skonstruowany relacyjny model danych zawiera zestaw relacji, które reprezentują obiekty występujące w modelowanym systemie oraz ich wzajemne powiązania. Relacje opisujące obiekty mają zazwyczaj prostą strukturę: pojedynczy klucz (często naturalny) i zestaw atrybutów, wynikających wprost z ich cech. Schemat relacji opisujących powiązania jest zależy od typu powiązania. Typy powiązań Powiązanie jeden-do-jeden każdej krotce z relacji pierwszej odpowiada dokładnie jedna krotka z relacji drugiej i każdej krotce z relacji drugiej odpowiada jedna krotka w relacji pierwszej. Cecha charakterystyczna: wspólny klucz. Powiązanie jeden-do-wielu każdej krotce z relacji pierwszej odpowiada wiele krotek z relacji drugiej, ale jednej krotce z relacji drugiej odpowiada jedna krotka w relacji pierwszej. Cecha charakterystyczna: dodatkowe źródło zależności elementarnej i/lub bezpośredniej, powtarzające się wartości atrybutu(ów). Powiązanie wiele-do-wielu każdej krotce z relacji pierwszej odpowiada wiele krotek z relacji drugiej i każdej krotce z relacji drugiej odpowiada wiele krotek w relacji pierwszej. Cecha charakterystyczna: zależność funkcjonalna generowana jednocześnie przez klucze co najmniej dwóch relacji. Bazy danych s.3-16
Powiązanie jeden-do-jeden Każdej krotce relacji R1 odpowiada dokładnie jedna krotka R2 i każdej krotce relacji R2 odpowiada dokładnie jedna krotka R1. R1(A, B, C, D) R2(A, E, F, G) R(A, B, C, D, E, F, G) B E B E A C A F C A F D G D G Powiązania jeden-do-jeden należy eliminować przez łączenie relacji. Tego typu powiązanie nieznacznie powiększa rozmiar bazy danych (powtórzone wartości klucza) i zwiększa złożoność zapytań (dodatkowe złączenie). Przykłady Czytelnicy1(IDCZ, NazCZ, ImięCZ), Czytelnicy2(IDCZ, Miasto, Kod, Ulica, Nr) Każdy czytelnik ma jednoznacznie przypisany adres zamieszkania, nie ma powodu utrzymywania dwóch relacji o tym samym kluczu. Pojazd1(NrRej, Marka, Model, Kolor), Pojazd2(NrRej, Właściciel, DataRejestracji) Każdy pojazd ma jednoznacznie przypisany numer rejestracyjny, relacje zawierają różne dane dotyczące tych samych pojazdów, można je połączyć. Bazy danych s.3-17
Powiązanie jeden-do-wielu W relacji R istnieje atrybut, który jest źródłem zależności funkcjonalnych elementarnych i/lub bezpośrednich dla podzbioru atrybutów R (relacja nie spełnia warunku IIIFN), lub wartości pewnych atrybutów powtarzają się wielokrotnie w R. R(A, B, C, D, E, F) R1(A, B, C, D) R2(C, E, F) B F B F A C A C C D E D E Relację należy podzielić wyodrębniając z niej składniki zależne. Atrybut, który jest źródłem dodatkowej zależności elementarnej pozostaje w relacji pierwotnej i dodatkowo zostaje kluczem nowoutworzonej relacji. Jeżeli w relacji istnieje atrybut (podzbiór atrybutów), którego wartości powtarzają się wielokrotnie w zbiorze danych (istnieje ograniczona liczba wartości przyjmowanych przez ten atrybut), można go wydzielić z relacji pierwotnej tworząc nową relację powiązaną zależnością jeden-do-wielu. W tym celu należy dodać atrybut, który będzie kluczem nowej relacji i zostanie umieszczony w relacji pierwotnej w miejsce atrybutu wydzielonego. Bazy danych s.3-18
Powiązanie jeden-do-wielu przykłady Czytelnicy(IDCZ, NazCZ, ImięCZ, IDKT, NazKT, Termin, Ilość) Każdy czytelnik ma jednoznacznie określoną kategorię, do jednej kategorii jest przypisanych wielu czytelników. Te same informacje są powtarzane wielokrotnie przy danych kolejnych czytelników. Ponieważ nazwa kategorii, termin oraz ilość zależą bezpośrednio od IDKT (IDK jest źródłem zależności bezpośredniej) informacje o kategoriach należy wydzielić do osobnej relacji z kluczem IDKT, pozostawiając ten atrybut również w relacji Czytelnicy, aby nie utracić powiązania. Książki(IDKS, Tytuł, NazW, RokW, DataE) Nazwa wydawnictwa (NazW) zawiera wartości, które powtarzają się wielokrotnie w zbiorze danych książek (jedno wydawnictwo może wydać wiele książek). Można zredukować rozmiar relacji i usprawnić wprowadzanie danych przez wydzielenie tych informacji do innej relacji. Nie istnieje atrybut, który jest źródłem zależności bezpośredniej dla NazW, należy więc stworzyć nowy atrybut (IDW), który będzie kluczem nowej relacji i zostanie umieszczony w relacji Książki w miejsce NazW, aby nie utracić powiązania. Podobne przypadki: kategorie produktów (sklep/hurtownia), marki, pojazdów (firma transportowa), lekarze prowadzący pacjentów (szpital), sposób zapłaty faktury/rachunku (sklep, hotel, restauracja, itp.). Bazy danych s.3-19
Powiązanie wiele-do-wielu Relacja R ma klucz złożony z kilku elementów i istnieją atrybuty zależne tylko od poszczególnych części klucza oraz atrybuty zależne od całości. E F R(A, B, C, D, E, F, G) R1(A, B, C) R2(D, E, F) R3(A, D, G) D A B C G Relację należy podzielić wyodrębniając atrybuty zależne od elementów klucza. Wyłączone składniki tworzą nowe relacje z kluczem będącym fragmentem klucza relacji pierwotnej. W relacji wyjściowej pozostają tylko atrybuty zależne od całości. W typowej sytuacji relacja pierwotna zawiera informacje o dwóch lub więcej obiektach oraz powiązaniach typu wiele-do-wielu. Nowoutworzone relacje opisują obiekty, zredukowana relacja (z kluczem wielokrotnym) tworzy powiązanie. W relacyjnym modelu danych powiązanie typu wiele-do-wielu reprezentowane jest przez relację, której atrybutami są klucze relacji opisujących połączone obiekty. Klucz relacji-powiązania zawsze jest kluczem wielokrotnym, zazwyczaj złożonym z kluczy powiązanych obiektów. A B C D E F D A G Bazy danych s.3-20
Powiązanie wiele-do-wielu przykłady (1) Książki(IDKS, Tytuł, NazW, RokW, DataE, IDSK, NazSK) Każda książka ma wiele słów kluczowych, jedno słowo kluczowe może być związane z wieloma książkami. Można wykazać, że tytuł, nazwa wydawnictwa (NazW) i rok wydania (RokW) zależą tylko od części klucza (IDKS), podobnie nazwa słowa kluczowego (NazSK) zależy tylko od jego identyfikatora (IDSK). Relacja zawiera więc informacje o obiektach typu Książki oraz Słowa Kluczowe (należy wyodrębnić odpowiednie atrybuty). W relacji pierwotnej pozostaje tylko podwójny klucz, który reprezentuje powiązanie pomiędzy tymi obiektami. Wypożyczenia(IDCZ, IDKS, DataW, DataZ) Relacja powstała na etapie analizy modelowanego systemu. Reprezentuje powiązanie pomiędzy obiektami typu Książki oraz Czytelnicy (zawiera klucze tych relacji). W tym przypadku klucz relacji-powiązania nie może składać się z atrybutów IDCZ, IDKS, ponieważ ten sam czytelnik może wypożyczyć tą samą książkę wielokrotnie (powtórzenie wartości atrybutów). Dwukrotne wypożyczenie tej samej książki w tym samym czasie nie jest możliwe stąd klucz IDKS, DataW. Relacja Rezerwacje analogicznie. Bazy danych s.3-21
Powiązanie wiele-do-wielu przykłady (2) Faktura/rachunek sprzedaży: Jedna faktura może dotyczyć wielu przedmiotów i zawiera wiele pozycji, każdy przedmiot może występować na wielu fakturach. Pomiędzy przedmiotami i fakturami występuje powiązanie typu wiele-do-wielu. Pierwotna relacja: Faktura(IDF, Płatnik, Adres, IDP, Nazwa, Cena, Ilość) powinna być podzielona na relacje opisujące obiekty (Faktury, Przedmioty) oraz relację opisującą powiązanie pomiędzy nimi: Faktury(IDF, Płatnik, Adres) Przedmioty(IDP, Nazwa, Cena) F-P(IDF, IDP, Ilość) Podobne przypadki: Rejestracja pacjentów do lekarza jeden pacjent może rejestrować się wielokrotnie (do różnych lekarzy), do jednego lekarza rejestruje się wielu pacjentów. Plan zajęć jeden student uczestniczy w wielu zajęciach, na każdy z przedmiotów uczęszcza wielu studentów. Aktorzy i filmy jeden aktor gra w wielu filmach w każdym filmie zatrudnionych jest wielu aktorów. Bazy danych s.3-22