Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Pokój: 517/B4 E-mail: witold.rekuc@pwr.edu.pl Telefon: 71-320-23-35 www: kbo.pwr.edu.pl/pracownik/rekuc dr inż. Witold Rekuć Bazy danych 1
Bazy danych dr inż. Witold Rekuć Bazy danych 2
dr inż. Witold Rekuć Bazy danych 3
dr inż. Witold Rekuć Bazy danych 4
Plan wykładu I. Opis programu przedmiotu, organizacja zajęć oraz zasady zaliczania i oceniania. Technologia relacyjnych baz danych. System zarządzania bazą danych. Relacyjna baza danych i jej struktura. II. III. Operacje aktualizacji danych. Więzy integralności. Definicja, zastosowanie i realizacja operacji na tabelach: selekcja, projekcja, równo-złączenie, theta-złączenie. IV. Definicja, zastosowanie i realizacja operacji na tabelach: operacje teoriomnogościowe: suma, iloczyn, różnica niesymetryczna, dopełnienie. V. Definicja, zastosowanie i realizacja operacji na tabelach: dzielenie. VI. Podstawy normalizacji relacyjnej bazy danych: zależności funkcyjne i ich rodzaje, dekompozycja relacji i ich schematów, formy normalne schematów relacji, denormalizacja. VII. Normalizacja relacyjnej bazy danych - studium przypadku dr inż. Witold Rekuć Bazy danych 5
Plan wykładu c. d. VIII. Pojęciowe (konceptualne) modelowanie danych. Model związków encji. Model klas UML IX. Budowa modeli związków encji/modeli klas - studium przypadku X. Odwzorowanie modelu związków encji/klas w schemat relacyjnej bazy danych - podstawy metodologiczne XI. Odwzorowanie modelu związków encji w schemat relacyjnej bazy danych - studium przypadku. XII. Rola baz danych w systemach informacyjnych zarządzania. XIII. Podsumowanie. Sprawdzian teoretyczny (P) dr inż. Witold Rekuć Bazy danych 6
I. Technologia relacyjnych baz danych. System zarządzania bazą danych. Relacyjna baza danych i jej struktura. 1. Podstawowe pojęcia systemu bazy danych. 2. Założenia modelu relacyjnego. 3. Klucze relacji. dr inż. Witold Rekuć Bazy danych 7
1. Podstawowe pojęcia systemu bazy danych Baza danych System bazy danych System zarządzania bazą danych Meta baza danych Interfejs aplikacja-szbd Aplikacje Interfejs użytkowników aplikacji... Język użytkowników bazy danych... Język administratora bazy danych Użytkownicy aplikacji Użytkownicy bazy danych Administrator bazy danych dr inż. Witold Rekuć Bazy danych 8
System bazy danych: jest składnikiem systemu informatycznego przechowującym i udostępniającym dane o pewnej rzeczywistości, zwanej często dziedziną przedmiotową, przechowuje i udostępnia dane wspierając cele stawiane systemowi informatycznemu, którego jest składnikiem, obsługuje aplikacje składowe systemu informatycznego oraz czasami bezpośrednio użytkowników końcowych, sam składa się z trzech podstawowych składników: bazy danych, metabazy danych i systemu zarządzania bazą danych. Baza danych jest zbiorem danych przechowywanych na nośniku komputerowym, spełniających określone wymagania: przedstawiających rzeczywistość poprawnie (niezawodnie i prawdziwie) i w wymaganym zakresie. Meta baza danych jest zbiorem danych o danych pamiętanych w bazie danych jest opisem: ich struktury, reguł poprawności (integralności) i reguł dostępu do nich z aplikacji i użytkowników końcowych. dr inż. Witold Rekuć Bazy danych 9
System zarządzania bazą danych jest oprogramowaniem, spełniającym aktywną rolę w systemie bazy danych: korzystając z systemu operacyjnego realizuje dostęp do danych w bazie danych: ich zapis do oraz odczyt z bazy danych, oferuje programistom aplikacji i użytkownikom końcowym określony język dostępu do danych w bazie danych i metabazie, korzystając z opisu w metabazie struktury oraz reguł poprawności (integralności) danych ma zapewnić poprawność danych zapisywanych do bazy danych, korzystając z opisu w metabazie struktury oraz reguł dostępu do danych z aplikacji i użytkowników końcowych ma zapewnić, że ten dostęp jest zgodny z uprawnieniami/ zezwoleniami, wspiera realizację funkcji specjalnego użytkownika systemu bazy danych, jakim jest administrator. dr inż. Witold Rekuć Bazy danych 10
Administrator (systemu) bazy danych jest rolą osoby lub grupy osób, głównie spełniających następujące zadania: instalowanie i utrzymywanie w stanie aktualnym oprogramowania systemu bazy danych (SZBD, narzędzia), alokacja bazy danych w systemie pamiętania bazy danych i planowanie przyszłych wymagań pamięciowych, modyfikowanie struktury bazy danych stosowanie do wymagań aplikacji, zapewnienie bezpieczeństwa systemu, bieżąca kontrola dostępu użytkowników do bazy danych, kontrola i zapewnienie wydajności systemu, planowanie skladowania danych (backup) i ich odzyskiwania, wykonywanie składowania i odzyskiwania danych utrzymywanie archiwów danych, utrzymywanie kontaktów z dostawcami sporządzanie raportów o funkcjonowaniu systemu dr inż. Witold Rekuć Bazy danych 11
2. Założenia modelu relacyjnego Laboratorium IBM San Jose (California) A relational model for large shared data banks Communication of the ACM, 13:6,1970 System R - prototyp oprogramowania Edgar F. Codd dr inż. Witold Rekuć Bazy danych 12
Czym jest relacyjna baza danych? dr inż. Witold Rekuć Bazy danych 13
Baza danych jest zbiorem nazwanych tabel, składających się z prostych (niepodzielnych na podkolumny) kolumn* Kategorie Kasety Klienci Rewersy * w teorii baz danych, w odniesieniu do tabeli używa się terminu relacja, ponieważ przyjmuje się, że znana z matematyki relacja n-członowa jest formalnym modelem tabeli dr inż. Witold Rekuć Bazy danych 14
Każda tabela w bazie danych ma nagłówek*, który jest zbiorem nazw kolumn/pól wraz z przyporządkowanymi im zbiorami dopuszczalnych wartości, które można w nich (kolumnach/polach) umieszczać. nazwy kolumn/pól przyporządkowanie NumeryKlientów Nazwiska Imiona Adresy zbiory dopuszczalnych wartości (dziedziny) Zbiór dopuszczalnych wartości, które można umieszczać w kolumnie tabeli nazywa się także dziedziną wartości lub krótko dziedziną. * W teorii baz danych, w odniesieniu do nagłówka tabeli używa się terminu schemat relacji, który ma nazwę i na który składają się nazwy atrybutów (kolumn/pól) oraz funkcja o nazwie dom przyporządkowująca atrybutom dziedziny ich wartosci. dr inż. Witold Rekuć Bazy danych 15
W bazie danych może być w tym samym czasie wiele tabel o tym samym nagłówku, posiadających jednak różne nazwy. Klienci_rozliczeni Klienci_zalegający dr inż. Witold Rekuć Bazy danych 16
Każda kolumna tabeli musi mieć określoną dziedzinę wartości, czyli zbiór wartości, które moga pojawić się w kolumnie. Dziedzinę określa się przez podanie: typu danych oraz dodatkowych ograniczeń. Pod typem danych rozumie się skończony, nazwany zbiór wartości wraz z dopuszczalnymi operacjami na tych wartościach oraz relacjami jakie można między tymi wartościami ustalać. Przykłady typów danych Typ danej Zbiór wartości Operacje/relacje Liczba całkowita (integer) -32768 +32767 +, -, *, <, >, >=,... Pojedyncza precyzja (liczba rzeczywista) 3.402823E38... 1.401298E 45; 0; 1.401298E 45... 3.402823E38 +, -, *, /, <, >, >=,... Tak/Nie (boolean) {PRAWDA, FAŁSZ} and, or, not,... Tekst krótki (short text) ciag znaków o długości 0...255 +, &, <, >, >=,... Data krótka 100-01-01 9999-12-31 <, >, =,... dr inż. Witold Rekuć Bazy danych 17
Przykłady definicji kolumn Nazwa kolumny Typ danej Ograniczenia Nrklienta Liczba całkowita between 1 and 20000 >=1 and <=20000 Kapitał Pojedyncza precyzja >=10000 Czy stały klient Nazwa Tak/Nie Tekst krótki Data rejestracji Data krótka <=Date() Zdefiniujmy kolumny tabeli w bazie danych MS ACCESS dr inż. Witold Rekuć Bazy danych 18
Tabela jest zbiorem wierszy, przy czym każdy wiersz jest, odpowiadającym nagłówkowi tabeli, zestawem wartości pochodzących z dziedzin wartości Klienci wiersze (rekordy, krotki) kolumny (pola, atrybuty) dr inż. Witold Rekuć Bazy danych 19
Dodanie nowego wiersza/rekordu do tabeli Klienci Nowy wiersz 7 Beck Andrzej Jawalska 17 7 Zbiór dopuszczalnych numerów klientów Beck Zbiór dopuszczalnych nazwisk Andrzej Zbiór dopuszczalnych imion Jawajska 17 Zbiór dopuszczalnych adresów dr inż. Witold Rekuć Bazy danych 20
Problem określoności wartości w kolumnach Podczas konstruowania nowego wiersza tabeli może okazać się, że nie jest możliwe określenie wartości dla niektórych pól wiersza. Przyczyna może być: - subiektywna: niewiedza osoby konstruującej wiersz, - obiektywna: natura opisywanego obiektu. Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna 234 23 2 Regan Abejowska Hilary Joanna 234 55 3 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Bazy danych 21
Projektując tabelę dla pewnego zastosowania powinniśmy rozstrzygnąć dla każdej jej kolumny: - czy wartość w kolumnie musi być zawsze określona, - czy wartość w kolumnie może, ale nie musi, być nieokreślona. Do oznaczenia nieokreśloności wartości atrybutu stosuje się słowo NULL Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna null 234 23 2 3 4 Regan Audiński Pafawagow Abejowska null null Hilary Józef Paweł Joanna null null 234 55 null null 5 Jordański null Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina null null dr inż. Witold Rekuć Bazy danych 22
Reakcja systemu bazy danych na dane niezgodne z ograniczeniem NULL not null Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna null 234 23 2 Regan Abejowska Hilary Joanna 234 55 3 Audiński null Józef null null 4 Pafawagow null Paweł null null 5 Jordański null Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina null null 7 Beck Andrzej null Jerzy 345 987 odrzucony! 7 Beck null Andrzej Jerzy 345 987 przyjęty! dr inż. Witold Rekuć Bazy danych 23
Nieokreśloność wartości w kolumnach i logika trójwartościowa 6 Dolmel Elektryczna 3 452 34 Telefon = 452 34? PRAWDA (TRUE) 6 Dolmel Elektryczna 3 234 09 FALSZ (FALSE) 6 Dolmel Elektryczna 3 NIE WIEM (UNKNOWN) NULL trzecia wartość logiczna dr inż. Witold Rekuć Bazy danych 24
Zerowa długość oraz nieokreśloność wartości w kolumnach typu tekstowego Do zapisu wartości tekstowych stosuje się cudzysłów. Cudzysłów pełni dwa zadania: - wskazuje początek i koniec tekstu, na przykład: Cameron, abc, - odróżnia wartości typu tekstowego od wartości innych typów, na przykład: 123 i 123, 2015-02-09 i 2015-02-09, true i true. Zapis oznacza tekst o zerowej długości, ponieważ cudzysłów zawiera zero znaków. Tekst o zerowej długości jest wartością OKREŚLONĄ (not NULL). Uwaga: znaki cudzysłowu nie są pamiętane razem za znakami tekstu Przykład 6 Dolmel Elektryczna 3 tekst o zerowej długości 6 Dolmel Elektryczna 3 Telefon is NULL? FALSZ PRAWDA NULL dr inż. Witold Rekuć Bazy danych 25
Projektując tabelę dla pewnego zastosowania powinniśmy rozstrzygnąć dla każdej jej kolumny typu tekstowego: - czy wartość w kolumnie musi być zawsze niezerowej długości, - czy wartość w kolumnie może, ale nie musi, być zerowej długości. Jeżeli dopuszczamy zerową długość wartości w kolumnach tekstowych, to musimy określić jaki jest sens (interpretacja, znaczenie) takiej wartości. dr inż. Witold Rekuć Bazy danych 26
Przykład Jeżeli dla kolumny o nazwie Numer telefonu osoby dopuszczamy zerową długość wartości oraz wartość NULL, moglibyśmy przyjąć następującą interpretację każdego przypadku: Numer telefonu jest NULL : Numer telefonu jest zerowej długości : Numer telefonu jest niezerowej długości : osoba nie ma telefonu osoba ma telefon, ale tego numeru nie znamy osoba ma telefon i jest to podana wartość dr inż. Witold Rekuć Bazy danych 27
Reakcja systemu bazy danych na dane niezgodne z ograniczeniem zerowej długości danych tekstowych not zero-length not null Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna null 234 23 2 Regan Abejowska Hilary Joanna 234 55 3 Audiński null Józef null null 4 Pafawagow null Paweł null null 5 Jordański null Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina null null 7 Andrzej Andrzej 345 987 odrzucony! 7 Beck null Andrzej Jerzy przyjęty! 7 Beck null Andrzej null null przyjęty! dr inż. Witold Rekuć Bazy danych 28
Nieokreśloność wartości w kolumnach i operacje na wartościach i relacje między wartościami Operacje na wartościach nieokreślonych Możliwym jest, że: jeżeli X is NULL to X op Y is NULL gdzie op { +, -, *, /,... } Przykład: 100 + NULL is NULL Relacje między wartościami nieokreślonymi Możliwym jest, że: jeżeli X is NULL to X Q Y is UNKNOWN gdzie Q { =, >, <, >=,... } Przykład: 100 >= NULL is UNKNOWN Uwaga: funkcje wbudowane w systemach baz danych często ignorują wartości NULL, dlatego należy zadbać, by wartości w bazie danych, wszedzie gdzie jest to możliwe i konieczne, były zawsze określone. dr inż. Witold Rekuć Bazy danych 29
Zachowanie systemu bazy danych podczas wykonywania operacji na danych nieokreślonych Nr Nazwa Kwota Przykład MS ACCESS 1 2 3 4 5 6 Nazwa1 Nazwa3 null Nazwa5 Nazwa6 1004 234 10 23 suma(kwota) = 1271 średnia(kwota) = 317,75 (=1271/4) policz(kwota) = 4 policz(nazwa) = 5 Zachowanie systemu bazy danych podczas ustalania relacji między danymi nieokreślonymi Nr Nazwa Nazwa1 Kwota1 1004 234 Kwota2 300 120 Wyświetl wiersze, dla których: Kwota1<Kwota2 3 4 Nazwa3 10 10 130 Nr Nazwa Kwota1 Kwota2 5 Nazwa5 4 10 130 6 Nazwa6 23 400 6 Nazwa6 23 400 dr inż. Witold Rekuć Bazy danych 30
Operatory logiki trójwartościowej q q p AND q p True False Unknown True True False Unknown False False False False Unknown Unknown False Unknown p OR q p True False Unknown True True True True False True False Unknown Unknown True Unknown Unknown p True False Unknown NOT p False True Unknown q p = q p True False Unknown True True False Unknown False False True Unknown Unknown True Unknown Unknown dr inż. Witold Rekuć Bazy danych 31
Uwagi podsumowujące i uzupełniające 1. Porządek kolumn w tabeli jest nieistotny (sens, semantyka kolumny nie zależy od jej pozycji w nagłówku). Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna 234 23 2 Regan Abejowska Hilary Joanna 234 55 3 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina Osoba Nr Nazwisko Nazwisko panieńskie Imię2 Imię1 Nr telefonu 1 Klinton Regan Joanna 234 23 2 Regan Abejowska Joanna Hilary 234 55 3 Audiński Józef 4 Pafawagow Paweł 5 Jordański Adam Andrzej 256 12 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Bazy danych 32
2. Porządek wierszy w tabeli jest nieistotny (sens, semantyka wiersza nie zależy od jego pozycji w tebeli. Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna 234 23 2 Regan Abejowska Hilary Joanna 234 55 3 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 256 12 6 Dolmedicka Dolmedicka Janina Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 Klinton Regan Joanna 234 23 5 Jordański Andrzej Adam 256 12 3 Audiński Józef 4 Pafawagow Paweł 2 Regan Abejowska Hilary Joanna 234 55 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Bazy danych 33
3. Wiersze tabeli mogą tworzyć wielozbiory (zestawy wierszy z duplikatami) po warunkiem, że dopuszcza się duplikaty wierszy. Osoba Nr Nazwisko Nazwisko panieńskie Imię1 Imię2 Nr telefonu 1 5 3 Klinton Jordański Audiński Regan Joanna Andrzej Józef Adam 234 23 256 12 wiersze zduplikowane 4 Pafawagow Paweł 2 6 5 4 Regan Abejowska Hilary Joanna 234 55 Dolmedicka Dolmedicka Janina Jordański Andrzej Adam 256 12 Pafawagow Paweł wiersze zduplikowane dr inż. Witold Rekuć Bazy danych 34
4. Wartości w wierszach muszą być proste (skalarne, atomowe). Osoba Data urodzenia Nr Nazwisko Nazwisko panieńskie Imię Rok Miesiąc Dzień Nr telefonu 1 2 3 Klinton Regan Audiński Regan Abejowska Joanna Hilary Józef 1998 1998 1998 09 03 12 13 23 12 234 23 234 55 struktura niedopuszczalna 4 5 Pafawagow Jordański Paweł Andrzej 1998 1998 08 01 08 31 256 12 6 Dolmedicka Dolmedicka Janina 1998 04 14 Osoba Nr Nazwisko Nazwisko panieńskie Imię Data urodzenia Nr telefonu 1 2 3 4 5 Klinton Regan Audiński Pafawagow Jordański Regan Abejowska Joanna Hilary Józef Paweł Andrzej 1998/09/13 1998/03/23 1998/12/12 1998/08/08 1998/01/31 234 23 234 55 256 12 struktura dopuszczalna 6 Dolmedicka Dolmedicka Janina 1998/04/14 5. Tabela, która ma kolumny o dziedzinach wartości skalarnych jest w pierwszej postaci normalnej. 6. Wszystkie tabele relacyjnej bazy danych muszą być w, co najmniej, pierwszej postaci normalnej. dr inż. Witold Rekuć Bazy danych 35
3. Klucze tabel Kluczem tabeli nazywamy niepusty zbiór kolumn (atrybutów) taki, że: a) dla dowolnej pary różnych wierszy t1 i t2 tej tabeli, jego wartości dla obu tych wierszy są różne oraz b) żaden jego podzbiór właściwy nie spełnia tego (a) warunku. Przykład: Dokumenty Nr NrSprzedawcy NrNabywcy Data Kluczem w tabeli Dokumenty jest zbiór 1/02 2/02 0 0 2 3 13.02.02 21.03.02 K = {Nr, NrSprzedawcy} 1/02 3/02 1 0 0 1 03.01.02 31.04.02 Kluczem w tabeli Dokumenty nie może być zbiór: 2/02 4/02 3 0 0 4 17.02.02 13.02.02 K = {Nr} K ' = {Nr, NrSprzedawcy, NrNabywcy} dr inż. Witold Rekuć Bazy danych 36
Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) Klucz1={Pesel}, Klucz2={Nip} Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena) warianty kluczy: Klucz={NrStudenta, KodPrzedmiotu, Data} Klucz={NrStudenta, Data} Klucz={NrStudenta, KodPrzedmiotu} PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość) Klucz1={Nr, NrSprzedawcy, Np}, Klucz2={Nr, NrSprzedawcy, SmbTow} dr inż. Witold Rekuć Bazy danych 37
Każdy zbiór kolumn, który zawiera klucz (jako podzbiór kolumn) nazywany jest nadkluczem. Uwaga: nadklucz zawiera kolumny nadmiarowe, które faktycznie nie są potrzebne do wskazania wiersza. Uwagi: 1. Każda tabela, będąca zbiorem wierszy posiada co najmniej jeden klucz (bo nie zawiera dwóch lub więcej identycznych wierszy). 2. Jeżeli tabela ma więcej niż jeden klucz, to klucze te różnią się co najmniej jedną kolumną (atrybutem). 3. Klucze mogą być proste (jednokolumnowe) lub złożone (wielokolumnowe) dr inż. Witold Rekuć Bazy danych 38
Kluczem podstawowym tabeli nazywamy klucz, który ze względu na pewne cechy praktyczne zostaje arbitralnie wybrany spośród wszystkich kluczy tabeli. Wszystkie klucze nazywa się kandydującymi Przykład: Przedmiot (Kod, Nazwa, Opis), Kluczem podstawowy: K1={Kod} Klucz kandydujący: K2={Nazwa} Określoność wartości klucza podstawowego Klucz podstawowy tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) dr inż. Witold Rekuć Bazy danych 39
Definicja tabeli w MS ACCESS (język graficzny) dr inż. Witold Rekuć Bazy danych 40
II. Operacje aktualizacji danych. Więzy integralności. Tabele w bazie danych są zmienne w czasie, a ich zmienność wynika z faktu, że muszą one być odzwierciedleniem zmieniającej się rzeczywistości. Aby tabele nadążały za rzeczywistością muszą być poddawane: redefinicji: dodawanie usuwanie kolumn, zmiana dziedzin wartości kolumn, zmiana dopuszczalnych zależności między wartościami, aktualizacji: dodawanie, usuwanie, zmiana wartości w wierszach. dr inż. Witold Rekuć Bazy danych 41
Operacje aktualizacji dodaj nowy wiersz do tabeli, usuń istniejący wiersz z tabeli, zmień wartości w wierszu obecnym w tabeli. Podstawowe wymaganie: w aktualizacji bazy danych musimy zapewnić poprawność bazy danych: Poprawność merytoryczna zgodność bazy danych z rzeczywistością Poprawność formalna zgodność bazy danych z regułami formalnymi dr inż. Witold Rekuć Bazy danych 42
Więzy integralnościowe Więzy integralnościowe to ograniczenia nałożone na wartości danych w bazie danych, które muszą być spełnione, aby baza danych była formalnie poprawna. Dają się wyrazić: deklaratywnie: za pomocą zdań logicznych lub interpretowanych jako logiczne lub proceduralnie: za pomocą napisanych przez użytkownika procedur lub funkcji zapamiętanych i uruchamianych przez system w celu sprawdzenia, czy ograniczenie jest spełnione. Podział ze względu na przedmiot ograniczenia: więzy dziedziny, więzy klucza, więzy integralności referencyjnej, inne więzy. dr inż. Witold Rekuć Bazy danych 43
Więzy dziedziny wartość w kolumnie tabeli musi należeć do dziedziny tej kolumny lub jeżeli jest to dopuszczalne może być nieokreślona (NULL). Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 1 234 23 1 Abeja Abejowska 3 234 55 2 Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Wstaw wiersz -3 Makrosoft Informatyczna A1 NULL Naruszenie więzów dziedziny dr inż. Witold Rekuć Bazy danych 44
Więzy klucza w tabeli nie mogą występować dwa lub więcej wierszy o tej samej wartości klucza; klucz podstawowy musi mieć wartość określoną. Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 1 234 23 1 Abeja Abejowska 3 234 55 2 Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Wstaw wiersz NULL Makrosoft Informatyczna 1 NULL Naruszenie więzów dziedziny Naruszenie więzów klucza Wstaw wiersz 2 Makrosoft Informatyczna 1 NULL dr inż. Witold Rekuć Bazy danych 45
Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 2 3 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 3 2 2 3 234 55 256 12 2 3 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna 1 Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL i OP dr inż. Witold Rekuć Bazy danych 46
Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 2 Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 256 12 4 Kraków MP 5 Dolmed Medyczna 1 6 TP SA Telewizyjna 5 345 90 Dodaj do tabeli Firmy wiersz Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL, OP,??? dr inż. Witold Rekuć Bazy danych 47
Więzy integralności referencyjnej Firmy Nr Nazwa Ulica KodMjc Telefon Miejscowości Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 2 3 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 3 2 2 3 234 55 256 12 2 3 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna 1 Usuń z tabeli Miejscowości ten wiersz Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL,???,??? dr inż. Witold Rekuć Bazy danych 48
Więzy integralności referencyjnej Firmy Nr Nazwa Ulica KodMjc Telefon Miejscowości Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 2 3 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 3 2 2 3 234 55 256 12 2 3 5 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna 1 Zmień kod Miejscowości 3 na 4 Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL, OP,??? dr inż. Witold Rekuć Bazy danych 49
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 2 Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 Pafawag Wagonowa 2 4 Kraków MP 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Dla każdego wiersza tabeli Firmy musi występować wiersz w tabeli Miejscowości taki, że: Firmy.KodMjc=Miejscowości.Kod Dla każdego wiersza tabeli Miejscowości może występować wiersz w tabeli Firmy taki, że: Firmy.KodMjc=Miejscowości.Kod dr inż. Witold Rekuć Bazy danych 50
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 2 Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 Pafawag Wagonowa 2 4 Kraków MP 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Uwagi: pola (kolumny) wiążące wiersze obu tabel nazywamy polami pokrewnymi, pary powiązanych wierszy obu tabel nazywa się wierszami pokrewnymi, pary tabel tak powiązanych nazywa się tabelami pokrewnymi dr inż. Witold Rekuć Bazy danych 51
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 2 Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 4 5 Pafawag Iase Dolmed Wagonowa Energetyczna Medyczna 2 3 1 256 12 4 Kraków Klucz = {Kod} MP Klucz = {Nr} Klucz obcy = {KodMjc} Dane są dwie tabele: To zwana tabelą odwołującą się Td zwana tabelą docelową Kluczem obcym tabeli To do tabeli Td nazywamy niepusty zbiór kolumn (atrybutów) To, którego wartości są wartościami klucza tabeli Td Więzy integralności referencyjnej Dla każdej wartości klucza obcego w tabeli odwołującej się musi istnieć wiersz (pokrewny) w tabeli docelowej zawierający wartość tego klucza. dr inż. Witold Rekuć Bazy danych 52
Przykład 1: Student (Nr, Nazwisko, Adres) Klucz={Nr} Egzamin (NrStudenta, KodPrzedmiotu, Data, Ocena) Klucz={NrStudenta, KodPrzedmiotu, Data} KluczObcy do tabeli Student KO1={NrStudenta} KluczObcy do tabeli Przedmiot KO2={KodPrzedmiotu} Przedmiot (Kod, Nazwa) Klucz={Kod} tabela docelowa tabela odwołująca się tabela docelowa Przykład 2: Dostawca (Kod, Nazwa, Ulica, KodMjc) Miejscowość (Kod, Nazwa) Dostawa (KodDostawcy, SmbTowaru, Data, Ilość) Towar (Symbol, Nazwa, Cena, Jm) Wskaż klucze i klucze obce! Czy tabela może być jednocześnie odwołującą się I docelową? dr inż. Witold Rekuć Bazy danych 53
Przykład 3: dr inż. Witold Rekuć Bazy danych 54
Przykład 3 - komentarz: Dokumenty(NrFaktury, NrSprzedawcy, NrNabywcy, Data) Klucz={NrFaktury, NrSprzedawcy} PozycjeDokumentów(NrFaktury, NrSprzedawcy, NrPozycji, SmbTow, Ilość, CenaNetto) Klucz={NrFaktury, NrSprzedawcy, NrPozycji} KluczObcy do tabeli Dokumenty KO={NrFaktury, NrSprzedawcy} Uwagi 1. Klucze obce mogą być proste (jednokolumnowe) lub złożone (wielokolumnowe). 2. Skład klucza obcego musi odpowiadać składowi klucza, do którego on się odwołuje. dr inż. Witold Rekuć Bazy danych 55
Inne więzy integralnościowe Więzy inne są specyficzne dla dziedziny zastosowań. Są one określone przez warunki, których niespełnienie byłoby świadectwem błędu w danych lub świadectwem naruszenia reguł organizacji, w której baza danych jest użytkowana. Przykłady: 1. Data dostawy nie może być wcześniejsza od daty zamówienia tej dostawy. 2. Dla każdego promotora liczba dyplomatów nie może być większa od 5. 3. Nie może być wykonane wypożyczenie książki czytelnikowi, który zalega ze zwrotem innych książek. dr inż. Witold Rekuć Bazy danych 56
III. Definicja, zastosowanie i realizacja operacji na tabelach: selekcja, projekcja, równo-złączenie, theta-złączenie Operacje na tabelach Operacje relacyjne Projekcja Selekcja Złączenia Dzielenie Operacje teoriomnogościowe Suma Iloczyn Różnica niesymetryczna Dopełnienie Przemianowanie dr inż. Witold Rekuć Bazy danych 57
Operacja projekcji Wyznacza tabelę o nagłówku (schemacie) ograniczonym do zbioru zadanych nazw kolumn (atrybutów) r(r) - tabela r o schemacie R poddawana projekcji X schemat nowej tabeli - zbiór zadanych nazw (X R) q(x) - tabela q o schemacie X, wynik projekcji q(x) = X ( r (R) ) = { t[x] : t r } gdzie t[x] oznacza wiersz powstały przez zredukowanie t do wartości atrybutów z X R X dr inż. Witold Rekuć Bazy danych 58
Przykład r({a,b,c,d}) A B C D a5 b2 c1 d1 a6 b4 c5 d2 a6 b4 c1 d3 a6 b4 c1 d2 a1 b2 c2 d1 {C,D} ( r ({A,B,C,D}) ) = q({c,d}) C c1 c5 c1 c1 c2 D d1 d2 d3 d2 d1 {A,B} ( r ({A,B,C,D}) ) = q({a,b}) A a5 a6 a1 B b2 b4 b2 dr inż. Witold Rekuć Bazy danych 59
Przykład Podaj nazwy i numery telefonów firm q({nazwa, Telefon}) = {Nazwa, Telefon} ( Firmy ({Nr, Nazwa, Ulica,KodMjc, Telefon})) q Firmy Nazwa Telefon Nr Nazwa Ulica KodMjc Telefon Nasza Firma 234 23 0 Nasza Firma Nasza 1 234 23 Abeja 234 55 1 Abeja Abejowska 3 234 55 Audi Pafawag {Nazwa, Telefon} 2 3 Audi Pafawag Audiego Wagonowa 2 2 Iase 256 12 4 Iase Energetyczna 3 256 12 Dolmed 5 Dolmed Medyczna 1 wiersze zredukowane do X={Nazwa, Telefon} dr inż. Witold Rekuć Bazy danych 60
dr inż. Witold Rekuć Bazy danych 61
Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) dr inż. Witold Rekuć Bazy danych 62
q Firmy KodMjc Nr Nazwa Ulica KodMjc Telefon 1 0 Nasza Firma Nasza 1 234 23 3 1 Abeja Abejowska 3 234 55 2 2 {KodMjc} 2 3 Audi Pafawag Audiego Wagonowa 2 2 3 4 Iase Energetyczna 3 256 12 1 5 Dolmed Medyczna 1 dr inż. Witold Rekuć Bazy danych 63
Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) dr inż. Witold Rekuć Bazy danych 64
q KodMjc 1 3 2 {KodMjc} Firmy Nr Nazwa 0 Nasza Firma 1 Abeja 2 Audi 3 Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc 1 3 2 2 Telefon 234 23 234 55 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 dr inż. Witold Rekuć Bazy danych 65
Przykład Chcemy obliczyć wartość średnią obrotu miesięcznego w roku q({obrót}) = {Obrót} ( Obroty ({Miesiąc,Obrót}) ) q Obroty Obrót Miesiąc Obrót 100 100 200 200 300 100 {Obrót} Styczeń Luty Marzec Kwiecień Maj czerwiec 100 100 200 200 300 100 Zostaw duplikaty w tabeli wynikowej dr inż. Witold Rekuć Bazy danych 66
W języku SQL: select nazwa, telefon from Firmy; select distinct nazwa, telefon from Firmy; select * from Firmy; dr inż. Witold Rekuć Bazy danych 67
Operacja selekcji Wyznacza tabelę o nagłówku (schemacie) identycznym z nagłówkiem (schematem) tabeli zadanej, ale o wierszach spełniających pewien warunek selekcji r(r) F q(r) tabela r o nagłówku (schemacie) R poddawana selekcji warunek selekcji (formuła logiczna) tabela q o nagłówku (schemacie) R, wynik selekcji q(r) = F ( r (R) ) = { t : t r i F(t) = prawda } wiersze spełniające warunek selekcji dr inż. Witold Rekuć Bazy danych 68
Przykład r({a,b,c,d}) A B C D a5 2 a1 1 a6 4 a5 2 a6 4 a1 1 a6 4 a1 2 a1 2 a1 1 r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D a6 4 a5 2 a6 4 a1 1 a6 4 a1 2 r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D and D<2 a6 4 a1 1 r ({A,B,C,D}) ) = q ({A,B,C,D}) B=4 or D<2 A B C D a5 2 a1 1 a6 4 a5 2 a6 4 a1 1 a6 4 a1 2 a1 2 a1 1 dr inż. Witold Rekuć Bazy danych 69
Przykład Podaj dane miejscowości z województwa dolnośląskiego q({kod,nazwa,kodwoj}) = KodWoj=DL ( Miejscowości ({Kod,Nazwa,KodWoj}) ) Miejscowości q Kod 1 Nazwa Wrocław KodWoj DL 1 Wrocław DL 3 Wałbrzych DL Kod Nazwa KodWoj KodWoj=DL 2 Opole OP 3 Wałbrzych DL 4 Warszawa MZ 5 6 Katowice Kraków SL MP dr inż. Witold Rekuć Bazy danych 70
dr inż. Witold Rekuć Bazy danych 71
q({... })= (KodMjc=2) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) and 2 dr inż. Witold Rekuć Bazy danych 72
q({... })= (KodMjc=2) or (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) or 2 dr inż. Witold Rekuć Bazy danych 73
Realizacja selekcji w SQL select * from Miejscowości where KodWoj = DL ; select * from Firmy where (KodMjc = 2) and (Telefon IS NULL); select * from Firmy where (KodMjc = 2) or (Telefon IS NULL); dr inż. Witold Rekuć Bazy danych 74
Złożenie operacji projekcji i selekcji q(x) = X ( F ( r (R) ) Przykład Podaj nazwy firm z Opola, które nie mają określonego numeru telefonu q({nazwa})= {Nazwa} ( (KodMjc=2) and (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) (Telefon is NULL) Firmy q Nr 0 Nazwa Nasza Firma Ulica Nasza KodMjc 1 Telefon 234 23 Nazwa 1 Abeja Abejowska 3 234 55 Pafawag 3 Pafawag Wagonowa 2 Audi {Nazwa} ( (KodMjc=2) and (Telefon is NULL) 2 Audi Audiego 2 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 dr inż. Witold Rekuć Bazy danych 75
q({nazwa})= {Nazwa} ( (KodMjc=2) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) W języku graficznym: 2 dr inż. Witold Rekuć Bazy danych 76
W języku SQL: select Nazwa from Firmy where KodMjc = 2 and Telefon IS NULL; dr inż. Witold Rekuć Bazy danych 77
Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. Firmy Nr Nazwa 0 Nasza Firma 1 Abeja 2 Audi 3 Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc 1 3 2 2 Telefon 234 23 234 55 Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL Wojewodztwa Kod Nazwa DL Dolnośląskie OP Opolskie 4 Iase Energetyczna 3 256 12 5 Dolmed Dokumenty Medyczna 1 PozycjeDokumentu Nr NrSprzerdawcy Np SmbTow CenaNetto Ilość Nr NrSprzerdawcy NrNabywcy Data 1/02 0 1 001 12,00 20 1/02 0 2 13.02.02 1/02 0 2 003 4,50 200 2/02 0 3 21.03.02 2/02 0 1 004 7,00 150 1/02 1 0 03.01.02 1/02 1 1 002 13,00 300 3/02 0 1 31.04.02 1/02 1 2 001 12,00 120 2/02 3 0 17.02.02 1/02 1 3 004 7,50 220 4/02 0 4 13.05.02 3/02 0 1 001 11,00 45 Towary Smb Nazwa Jm StawkaVat 3/02 3/02 3/02 0 0 0 2 3 4 003 004 005 4,50 7,80 3,20 125 35 200 001 002 Pasztet Mortadela kg kg 7% 7% 2/02 2/02 3 3 1 2 001 003 12,00 4,60 30 50 003 004 Chipsy Kawa Jakobs paczka 400g paczka 100g 7% 7% 4/02 0 1 005 3,60 90 005 Makrela kons. puszka 250g 7% dr inż. Witold Rekuć Bazy danych 78
Złączenia Theta-złączenie Pełne złączenie (full-join) Złączenie prawostronne (right-join) Złączenie lewostronne (left-join) Złączenie naturalne Równo-złączenie (=) Pozostałe-theta (>, <, >=, <=, <> ) dr inż. Witold Rekuć Bazy danych 79
Operacja równo-złączenia Dane są: r(r) tabela r o nagłówku (schemacie) R, A R s(s) tabela s o nagłówku (schemacie) S, B S R i S nie zawierają tych samych nazw (R S = Ø) q(r S) = r [ A=B ] s = { t : t[r] r, t[s] s i t[a] = t[b] } r R A s S B v v t v v dr inż. Witold Rekuć Bazy danych 80
Przykład r (A,B,C,D) A B C D a5 b2 c1 d1 a6 b4 c3 d2 a6 b4 c1 d3 a6 b4 c1 d2 a1 b2 c2 d1 S (CK, CN) CK CN c1 cn1 c2 cn2 c3 cn3 c4 cn4 q(a,b,c,d,ck,cn) := r [ C=CK ] s A B C D CK CN a5 b2 c1 d1 c1 cn1 a6 b4 c3 d2 c3 cn3 a6 b4 c1 d3 c1 cn1 a6 b4 c1 d2 c1 cn1 a1 b2 c2 d1 c2 cn2 dr inż. Witold Rekuć Bazy danych 81
Przykład Firmy Nr Nazwa 0 Nasza Firma 1 Abeja 2 Audi 3 Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc 1 3 2 2 Telefon 234 23 234 55 Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Firmy [ KodMjc = Kod ] Miejscowości Firmy Nr 0 1 2 3 4 Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc 1 3 2 2 3 Telefon 234 23 234 55 256 12 Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 5 Dolmed Medyczna 1 dr inż. Witold Rekuć Bazy danych 82
Firmy Nr 0 1 2 3 4 Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc 1 3 2 2 3 Telefon 234 23 234 55 256 12 Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 5 Dolmed Medyczna 1 Firmy [ KodMjc = Kod ] Miejscowości Zestawienie firm Nr Nazwa Ulica KodMjc Telefon Kod Nazwa (Mjc) KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 3 Wałbrzych DL 2 Audi Audiego 2 2 Opole OP 3 Pafawag Wagonowa 2 2 Opole OP 4 Iase Energetyczna 3 256 12 3 Wałbrzych DL 5 Dolmed Medyczna 1 1 Wrocław DL dr inż. Witold Rekuć Bazy danych 83
Firmy [ KodMjc = Kod ] Miejscowości dr inż. Witold Rekuć Bazy danych 84
Firmy [ ] Miejscowości = Firmy Miejscowości - iloczyn kartezjański dr inż. Witold Rekuć Bazy danych 85
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 1 234 23 1 Wrocław DL 1 Abeja Abejowska 3 234 55 2 Opole OP 2 Audi Audiego 2 3 Wałbrzych DL 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 256 12 5 Dolmed Medyczna 1 Firmy [ ] Miejscowości = Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj - iloczyn kartezjański { { { { { { 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 Nasza Firma Nasza Firma Nasza Firma Abeja Abeja Abeja Audi Audi Audi Pafawag Pafawag Pafawag Iase Iase Iase Dolmed Dolmed Dolmed Nasza Nasza Nasza Abejowska Abejowska Abejowska Audiego Audiego Audiego Wagonowa Wagonowa Wagonowa Energetyczna Energetyczna Energetyczna Medyczna Medyczna Medyczna 1 234 23 1 234 23 1 234 23 3 234 55 3 234 55 3 234 55 2 2 2 2 2 2 3 256 12 3 256 12 3 256 12 1 1 1 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 Wrocław Opole Wałbrzych Wrocław Opole Wałbrzych Wrocław Opole Wałbrzych Wrocław Opole Wałbrzych Wrocław Opole Wałbrzych Wrocław Opole Wałbrzych DL OP DL DL OP DL DL OP DL DL OP DL DL OP DL DL OP DL dr inż. Witold Rekuć Bazy danych 86
Złożenie operacji projekcji, selekcji i równo-złączenia q(x) = X ( F ( r [A=B] s ) Przykład {Dokumenty.Data} ( Miejscowości.Nazwa= Wałbrzych ( Dokumenty [NrNabywcy=Nr] Firmy [KodMjc=Kod ] Miejscowości )) dr inż. Witold Rekuć Bazy danych 87
równo-złączenie projekcja selekcja dr inż. Witold Rekuć Bazy danych 88
Podaj zestawienie towarów sprzedawanych poszczególnych województwach Iloczyn kartezjański tabel dr inż. Witold Rekuć Bazy danych 89
Równo-złączenie wielu tabel dr inż. Witold Rekuć Bazy danych 90
Równo-złączenie tabel po polach o tych samych nazwach Te pola mają identyczne nazwy, ale różny sens!!! dr inż. Witold Rekuć Bazy danych 91
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant 1) Znajdź dane firmsprzedawców dr inż. Witold Rekuć Bazy danych 92
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant 2) Znajdź dane firmnabywców dr inż. Witold Rekuć Bazy danych 93
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant 3) Znajdź dane firm, w dokumencie występują jednocześnie w dwóch rolach: sprzedawcy i nabywcy dr inż. Witold Rekuć Bazy danych 94
Równo-złączenie w języku SQL select Firmy.Nazwa, Miejscowości.Nazwa from Firmy inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod; select Firmy.Nazwa, Miejscowości.Nazwa from Firmy inner join Miejscowości on Firmy.KodMjc=Miejscowości.Kod where Firmy.Telefon is Null; select Dokumenty.NrFaktury, Firmy.Nazwa, Dokumenty.Data from ( PozycjeDokumentu inner join Dokumenty on (PozycjeDokumentu.NrSprzedawcy = Dokumenty.NrSprzedawcy) and (PozycjeDokumentu.NrFaktury = Dokumenty.NrFaktury) ) inner join Firmy on Dokumenty.NrSprzedawcy = Firmy.Nr; dr inż. Witold Rekuć Bazy danych 95
Zadania F( Nr, Nazwa ) T ( Smb, Nazwa ) 1 n1 a na 2 n2 b nb 3 n3 c nc 4 n4 D (NrD, NrS, NrN,Data) P ( NrD, NrS, Np, Smb, Ilosc, Cena) 1 1 2 d1 1 1 1 a 10 2 2 1 3 d1 1 1 2 b 15 3 2 2 1 d2 2 1 1 a 20 2 3 1 4 d2 2 2 1 a 5 3 4 4 1 d3 2 2 2 b 7 2 2 2 3 c 4 5 3 1 1 a 5 2 3 1 2 c 10 5 4 4 1 b 22 2 4 4 2 c 10 5 F Firmy, T Towary, D Dokumenty, P PozycjeDokumentu dr inż. Witold Rekuć Bazy danych 96
Oblicz: 1) {Data}(D) 2) NrS=1 and NrN=2(D), NrS=1 or NrN=2(D) 3) {NrD,NrS}( Smb=a(P)) ) D [NrS=Nr] F, D [NrN=Nr] F, D [Nrd=Nrd,NrS=NrS] P Napisz wyrażenie algebraiczne dla żądań: 1) Podaj nazwy firm, które coś kupiły w dniu 'd1'. 2) Podaj nazwy towarów kupionych przez firmę o nazwie 'n3'. 3) Podaj dni, w których kupiono towar o nazwie 'na'. 4) Podaj nazwy towarów sprzedanych po cenie > 2. dr inż. Witold Rekuć Bazy danych 97
Podaj nazwy firm, które coś kupiły w dniu 'd1'. {Nazwa}( Data= d1 (F[Nr=NrN]D)) Data= d1 dr inż. Witold Rekuć Bazy danych 98
Podaj nazwy towarów kupionych przez firmę o nazwie 'n3'. {T.Nazwa} F.Nazwa= n3 ( T[Smb=Smb]P[NrD=NrD,NrS=NrS]D[NrN=Nr]F)) dr inż. Witold Rekuć Bazy danych 99
Podaj dni, w których kupiono towar o nazwie 'na'. {D.Data} T.Nazwa= na (T[Smb=Smb] P[NrD=NrD,NrS=NrS]D)) dr inż. Witold Rekuć Bazy danych 100
Podaj nazwy towarów sprzedanych po cenie > 2. {T.Nazwa} Cena>2 (T[Smb=Smb]P)) dr inż. Witold Rekuć Bazy danych 101
Operacja Teta-złączenia Dane są: r(r) tabela r o schemacie R, A R s(s) tabela s o schemacie S, B S R i S nie zawierają tych samych nazw (R S = Ø) Θ { >, <, >=, <=, =, <> } - operator Teta r q(r S) = r [ AΘB ] s = { t : t[r] r, t[s] s i t[a] Θ t[b] } R S A s B v1 v2 t v1 v1 Θ v2 v2 dr inż. Witold Rekuć Bazy danych 102
Przykład r1 A B r2 C D a2 1 a5 2 a5 2 a1 1 a1 1 a6 4 a6 4 a1 2 a1 2 r1 [ B > D ] r2 = A B C D a5 2 a1 1 a6 4 a5 2 a6 4 a1 1 a6 4 a1 2 a1 2 a1 1 dr inż. Witold Rekuć Bazy danych 103
Przykład Grupa Autokar Nazwa Liczność Numer rej Pojemność Pielgrzymka 10 WRU 3492 15 Studenci 50 DW 65182 45 Emeryci 55 WCX 2381 60 Szkoła 20 WWX 6745 25 Urząd Miejski 30 WRA 1212 30 Pafawag 20 DW 67892 10 Podać autokary, które mogą obsłużyc poszczególne grupy turystyczne [Grupa] [Liczność] <= [Autokar].Pojemność ] Grupa Autokar Nazwa Liczność Numer rej Pojemność Pielgrzymka 10 WRU 3492 15 Studenci 50 DW 65182 45 Emeryci 55 WCX 2381 60 Szkoła 20 WWX 6745 25 Urząd Miejski 30 WRA 1212 30 Pafawag 20 DW 67892 10 dr inż. Witold Rekuć Bazy danych 104
W języku graficznym: W języku SQL: select Autokar.Numer rej, Grupa.Nazwa from Autokar, Grupa where Grupa.Liczność <= Autokar.Pojemność; dr inż. Witold Rekuć Bazy danych 105
Operacja złączenia naturalnego Dane są: r(r) tabela r o schemacie R, s(s) tabela s o schemacie S, R i S nie muszą być rozłączne q(r S) = r s = { t : t[r] r, t[s] s } dr inż. Witold Rekuć Bazy danych 106
Przykład r1 A B r2 B C a2 b1 a5 c2 a5 b2 a1 c1 a1 b1 a6 c4 a6 b5 a1 c2 a1 b2 r1 r2 = A B C a2 b1 c1 a2 b1 c2 a1 b1 c1 a1 b2 c2 a6 b5 c2 dr inż. Witold Rekuć Bazy danych 107
Przykład ( iloczyn kartezjański!!! ) r1 A B r2 C D a2 b1 c5 d2 a5 b2 c1 d1 a1 b1 r1 r2 = A B C D a2 b1 c5 d2 a2 b1 c1 d1 a5 b2 c5 d2 a5 b2 c1 d1 a1 b1 c5 d2 a1 b1 c1 d1 dr inż. Witold Rekuć Bazy danych 108
IV. Definicja, zastosowanie i realizacja operacji na tabelach: operacje teoriomnogościowe: suma, iloczyn, różnica niesymetryczna, dopełnienie Operacje na tabelach Operacje relacyjne Projekcja Selekcja Złączenia Dzielenie Operacje teoriomnogościowe Suma Iloczyn Różnica niesymetryczna Dopełnienie Przemianowanie dr inż. Witold Rekuć Bazy danych 109
Operacje teoriomnogościowe suma tabel Dane są tabele o jednakowych nagłówkach (schematach): r(r) s(r) r(r) s(r) = q(r) = { t : t r lub t s } Przykład r A B s A B a2 b1 a5 b2 a5 b2 a1 b1 a1 b1 a6 b4 a6 b4 a1 b2 a3 b2 q A a2 a5 a1 a6 a3 a1 B b1 b2 b1 b4 b2 b2 dr inż. Witold Rekuć Bazy danych 110
Realizacja operacji sumy tabel w MS ACCESS za pomocą kwerendy dołączającej dr inż. Witold Rekuć Bazy danych 111
a) r s q := r s b) c) r s r s kwerenda dołączająca r kwerenda tworząca tabelę q kwerenda tworząca tabelę rob {z duplikatami} q kwerenda dołączająca kwerenda dołączająca rob {z duplikatami} kwerenda tworząca tabelę usuń duplikaty {bez duplikatów} dr inż. Witold Rekuć Bazy danych 112
Kwerenda dołączająca: Realizacja operacji sumy tabel w SQL insert into r(a,b) select s.a, s.b from s; insert into r select s.* from s; Kwerenda sumująca: select * from r union all select * from s; {z duplikatami} select * from r union select * from s; {bez duplikatów} dr inż. Witold Rekuć Bazy danych 113
Operacje teoriomnogościowe iloczyn tabel Dane są tabele o jednakowych schematach: r(r) s(r) r(r) s(r) = q(r) = { t : t r i t s } Przykład r A B s A B a2 b1 a5 b2 a5 b2 a1 b1 a1 b1 a6 b4 a6 b4 a1 b2 q A a5 a1 a6 B b2 b1 b4 a3 b2 dr inż. Witold Rekuć Bazy danych 114
Realizacja operacji iloczynu tabel w MS ACCESS za pomocą kwerendy wybierającej q := r s {r.*} (r [ r.a 1 =s.a 1,..., r.a n =s.a n ] s) r A B s A B q A B a2 b1 a5 b2 a5 b2 {r.a,r.b} (r [ r.a = s.a, r.b = s.b ] s) a5 b2 a1 b1 a1 b1 a1 b1 a6 b4 a6 b4 a6 b4 a1 b2 a3 b2 dr inż. Witold Rekuć Bazy danych 115
złączenie po wszystkich polach dr inż. Witold Rekuć Bazy danych 116
Realizacja operacji iloczynu tabel w SQL MS ACCESS: select r.* from r inner join s on (r.a=s.a) and r.b=s.b); PostgreSQL: select r.* from r intersect select s.* from s; select r.* from r intersect all select s.* from s; dr inż. Witold Rekuć Bazy danych 117
Operacje teoriomnogościowe różnica niesymetryczna tabel Dane są tabele o jednakowych nagłówkach (schematach): r(r) s(r) r(r) s(r) = q(r) = { t : t r i t s } Przykład r A B s A B a2 b1 a5 b2 a5 b2 a1 b1 a1 b1 a6 b4 a6 b4 a1 b2 q A a2 a3 B b1 b2 a3 b2 dr inż. Witold Rekuć Bazy danych 118
Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej Rekordy unikatowe dr inż. Witold Rekuć Bazy danych 119
Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej a) b) q := r s q := r q := q s r s r s kwerenda usuwająca kwerenda tworząca tabelę r = r s q = r kwerenda usuwająca q = r - s dr inż. Witold Rekuć Bazy danych 120
Realizacja odejmowania w SQL MS ACCESS: PostgreSQL: delete distinctrow s.* from r inner join s on (r.a=s.a) and ( r.b=s.b); select r.* from r except select s.* from s; select r.* from r except all select s.* from s; dr inż. Witold Rekuć Bazy danych 121
insert into Odbiorca select from Dostawca.* Dostawca; dr inż. Witold Rekuć Bazy danych 122
select Dostawca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); dr inż. Witold Rekuć Bazy danych 123
delete distinctrow Odbiorca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); dr inż. Witold Rekuć Bazy danych 124
Operacje teoriomnogościowe dopełnienie Dana jest tabela r(r), w której R={A 1,A 2,...,A n } Każdej nazwie A 1,A 2,...,A n przyporządkowano zbiór dopuszczalnych wartości D 1,D 2,...,D n dop(r(r)) = D 1 D 2... D n r(r) Przykład R={A 1,A 2 } D 1 = {1,2} D 2 = {a,b} D 1 D 2 A 1 A 2 1 a 1 b 2 a r A 1 A 2 2 a 1 b dop(r) A 1 A 2 1 a 2 b 2 b dr inż. Witold Rekuć Bazy danych 125
Przykład Obiekt Nazwa Adres Grupa Numer Liczność Zwiedziła Nazwa Numer Muzeum Muzealna 1 10 Muzeum 1 Park zdrojowy Parkowa 2 50 Park zdrojowy 1 Zamek Zapora Zamkowa Wodna 3 55 Zamek Zapora 2 3 Podać, która grupa i który obiekt ma jeszcze zwiedzić, jeżeli już odbyły się wizyty podane w tabeli Zwiedziła {Nazwa} (Obiekt) {Numer} (Grupa) Zwiedziła select Obiekt.Nazwa, Grupa.Numer from Obiekt, Grupa except select Zwiedziala.Nazwa, Zwiedzila.Numer from Zwiedzila; dr inż. Witold Rekuć Bazy danych 126
dr inż. Witold Rekuć Bazy danych 127
dr inż. Witold Rekuć Bazy danych 128
Czy można realizować dopełnienie za pomocą selekcji z zaprzeczeniem? Przypadek wiele do jeden (n:1) Przypadek wiele do wielu (n:m) dr inż. Witold Rekuć Bazy danych 129
Przypadek wiele do jeden (n:1) Odejmowanie od uniwersum Miejscowości 1 2 3 4 5 6 7 8 9 10 11 12 Województwa WP Miejscowości KodWoj= DL (Miejscowości) KodWoj<> DL (Miejscowości) DL SL PM Selekcja z zaprzeczeniem {1,2,3,7,8,9,10, 11,12} odpowiedź prawidłowa {1,2,3,7,8,9,10, 11,12} odpowiedź prawidłowa dr inż. Witold Rekuć Bazy danych 130
Przypadek wiele do wielu (n:m) Odejmowanie od uniwersum Firmy 1 2 3 4 5 6 7 8 9 10 11 12 Kupowały Towary Śledzie Zupa Pasztet Chipsy Selekcja z zaprzeczeniem Firmy Nazwa= Pasztet (Kupowały) Nazwa<> Pasztet (Kupowały) {1,2,3,4,5,6, 10, 12} odpowiedź prawidłowa {1,2,3,4,5,6,8,9,10,11,12} odpowiedź błędna dr inż. Witold Rekuć Bazy danych 131
Przypadek wiele do wielu (n:m) Odejmowanie od uniwersum Firmy Towary Śledzie Zupa Pasztet Chipsy Nazwa= Pasztet (Kupowały) Nazwa= Zupa (Kupowały) {7,8,9,11} {2,4,5,6,8} = {7,9,11} odpowiedź prawidłowa 1 2 3 4 5 6 7 8 9 10 11 12 Kupowały Nazwa= Pasztet and Nazwa<> Zupa (Kupowały) {7, 8, 9, 11} odpowiedź błędna Selekcja z zaprzeczeniem dr inż. Witold Rekuć Bazy danych 132
Przemianowanie atrybutów Firmy Nr Nazwa 0 Nasza Firma 1 Abeja 2 Audi 3 Pafawag 4 Iase 5 Dolmed Ulica Nasza Abejowska Audiego Wagonowa Energetyczna Medyczna KodMjc 1 3 2 2 3 1 Telefon 234 23 234 55 256 12 Dokumenty Nr NrSprzerdawcy 1/02 0 2/02 0 1/02 1 3/02 0 2/02 3 4/02 0 NrNabywcy 2 3 0 1 0 4 Data 13.02.02 21.03.02 03.01.02 31.04.02 17.02.02 13.05.02 {NrSprzedawcy} (Dokumenty) {NrNabywcy} (Dokumenty) ) [??=Nr ]Firmy ta nazwa powinna być wspólna dr inż. Witold Rekuć Bazy danych 133
SELECT Osoba.Pesel, [Pesel rodzica] AS Pesel, [Pesel dziadka] AS Pesel, [Pesel pradziadka] AS Pesel FROM ((Osoba INNER JOIN...)...)... ; dr inż. Witold Rekuć Bazy danych 134
V. Definicja, zastosowanie i realizacja operacji na tabelach: dzielenie Operacje na tabelach Operacje relacyjne Projekcja Selekcja Złączenia Dzielenie Operacje teoriomnogościowe Suma Iloczyn Różnica niesymetryczna Dopełnienie Przemianowanie dr inż. Witold Rekuć Bazy danych 135
Operacja dzielenia Dane są tabele: Utworzymy: tabelę r(r) o nagłówku R, którą nazwiemy dzielną, tabelę s(s) o nagłówku S),którą nazwiemy dzielnikiem. tabelę q(t) o nagłówku T, którą nazwiemy ilorazem, przy czym z definicji, nagłówek T = R S q(t) = r(r) s(s) = { t : dla każdej t s s, istnieje t r r taka, że t r [R-S]= t i t r [S] = t s } gdzie t s jest wierszem s, a istnieje t r jest wierszem r. Nieformalnie: operacja dzielenia znajduje te wiersze dzielnej, które łączą się z każdym wierszem dzielnika dr inż. Witold Rekuć Bazy danych 136
Przykład Obiekt Nazwa Muzeum Adres Muzealna Grupa Numer 1 Liczność 10 Zwiedziła Nazwa Muzeum Park zdrojowy Numer 1 1 Park zdrojowy Parkowa 2 50 Muzeum 2 3 55 Muzeum 3 Podać, które grupy zwiedziły już każdy obiekt: Zwiedziła Obiekt Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Numer 1 1 2 Obiekt Nazwa Muzeum Park zdrojowy Adres Muzealna Parkowa Muzeum 3 {Nazwa,Numer} {Nazwa, Adres} Grupy Numer 1 Numery grup, które w tabeli Zwiedziła łączą się z każdym obiektem dr inż. Witold Rekuć Bazy danych 137
Przykład Obiekt Nazwa Muzeum Adres Muzealna Grupa Numer 1 Liczność 10 Zwiedziła Nazwa Muzeum Park zdrojowy Numer 1 1 Park zdrojowy Parkowa 2 50 Muzeum 2 3 55 Muzeum 3 Podać obiekty zwiedzone już przez każdą grupę: Zwiedziła Grupa Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Muzeum Numer 1 1 2 3 Grupa Numer 1 2 3 Liczność 10 50 55 {Nazwa,Numer} {Numer, Liczność} Obiekty Nazwa Muzeum Nazwy obiektów, które w tabeli Zwiedziła łączą się z każdą grupą dr inż. Witold Rekuć Bazy danych 138
Realizacja operacji dzielenia za pomocą kwerend q = r s R-S ( r ) R-S (( R-S ( r ) s) r) r s R-S ( r ) rob1 ( rob1 s ) kwerenda tworząca tabelę rob2 kwerenda tworząca tabelę rob1 rob2 r rob2 r kwerenda usuwająca rob2 kwerenda usuwająca rob1 R-S (rob2) rob1 dr inż. Witold Rekuć Bazy danych 139
Realizacja operacji dzielenia w SQL select Nazwa from Zwiedziła as r1 where not exists (select * from Grupa where not exists ( select * from Zwiedziła as r2 where (r1.nazwa=r2.nazwa) and (r2.numer=grupa.numer ))); dr inż. Witold Rekuć Bazy danych 140
VI. Podstawy normalizacji relacyjnej bazy danych: zależności funkcyjne i ich rodzaje, dekompozycja relacji i ich schematów, formy normalne schematów relacji, denormalizacja Anomalie aktualizacji: - niemożność dodania nowych wierszy do tabeli w przypadku, gdy wiersze nie są kompletne, - możliwość niekontrolowanej straty danych przy usuwaniu wierszy, - niebezpieczeństwo wprowadzenia sprzeczności w danych przy aktualizacji pól wierszy. Nadmiar czynności i danych: - wielokrotna aktualizacja zduplikowanych danych, - możliwe większe użycie pamięci. dr inż. Witold Rekuć Bazy danych 141
Rozkład (dekompozycja) tabeli (relacji) Dane są: - relacja r(r) - zbiory X 1, X 2,...,X p takie, że X 1 X 2... X p = { A 1,A 2,...,A k } Rozkładem (dekompozycją) tabeli r(r) na X 1, X 2,...,X p nazywamy zestaw tabel, powstałych w wyniku projekcji tabeli r na zbiory X 1, X 2,...,X p : X1 (r), X2 (r),..., Xp (r), gdzie: Xi (r) jest to operacja projekcji - przekształcenia tabeli r do postaci o nagłówku X i dr inż. Witold Rekuć Bazy danych 142
Przykład r ( A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 X1={A,B,C) i X2={C,D} X1 (r) = q1 (A B C ) a1 b1 c1 a2 b3 c2 a3 b2 c1 a4 b1 c3 X2 (r) = q2 (C D ) c1 d1 c2 d2 c3 d3 dr inż. Witold Rekuć Bazy danych 143
Rozkład tabel bez straty danych Rozkład tabeli r(r) na X 1, X 2,...,X p nazywamy rozkładem bez straty danych jeżeli: X1 (r) 2 (r)... Xp (r) = r(r) gdzie: oznacza operację złączenia naturalnego Uwaga: rozkład tabeli jest bez straty danych, gdy jest odwracalny. dr inż. Witold Rekuć Bazy danych 144
Przykład 1 r ( A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 X1={A,B,C) i X2={C,D} X1 (r) = q1 ( A B C ) a1 b1 c1 a2 b3 c2 a3 b2 c1 a4 b1 c3 X2 (r) = q2 ( C D ) c1 d1 c2 d2 c3 d3 Czy powyższy rozkład jest bez straty danych? Złączmy naturalnie tabele q1 i q2. q1 ( A B C ) a1 b1 c1 a2 b3 c2 a3 b2 c1 a4 b1 c3 q2 ( C D ) c1 d1 c2 d2 c3 d3 q ( A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 dr inż. Witold Rekuć Bazy danych 145
Przykład 2 r (A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 R1={A,B) i R2={C,D} R2 (r) = q2 ( C D ) c1 d1 c2 d2 c3 d3 R1 (r) = q1 ( A B ) a1 b1 a2 b3 a3 b2 a4 b1 R1 (r) R2 (r)? r(r) Przykład 3 R1={A,C) i R2={B,C,D} Przykład 4 R1={A,B) i R2={A,C,D} Przykład 5 R1={A,B,C,D) i R2={D} dr inż. Witold Rekuć Bazy danych 146
Przykład 6 a) R1={NumerSklepu, AdresSklepu}, R2={NumerSklepu,SymbolTowaru, NazwaTowaru, StanMagazynowy, Data, IlośćSprzedana} dr inż. Witold Rekuć Bazy danych 147
b) R1={SymbolTowaru, NazwaTowaru, StanMagazynowy}, R2={NumerSklepu,AdresSklepu,SymbolTowaru, Data, IlośćSprzedana} dr inż. Witold Rekuć Bazy danych 148
c) R1={NumerSklepu, SymbolTowaru, Data, AdresSklepu}, R2={NumerSklepu, SymbolTowaru, Data, NazwaTowaru, StanMagazynowy} R3={NumerSklepu, SymbolTowaru, Data, IlośćSprzedana} dr inż. Witold Rekuć Bazy danych 149
d) R1={NumerSklepu, AdresSklepu, StanMagazynowy}, R2={NumerSklepu, NazwaTowaru, Data} R3={NumerSklepu, IlośćSprzedana} R4={SymbolTowaru,IlośćSprzedana} dr inż. Witold Rekuć Bazy danych 150
Dlaczego czynność rozkładu tabel ma znaczenie praktyczne? Czynność rozkładu tabel ma znaczenie praktyczne ponieważ umożliwia modyfikację złych projektów baz danych do postaci dobrej. Na czym może polegać zło projektu bazy danych? Dlaczego rozkład tabel usuwa złe własności projektu bazy danych? W jaki sposób rozpoznać złe projekty bazy danych? dr inż. Witold Rekuć Bazy danych 151
Na czym może polegać zło projektu bazy danych? klucz główny dr inż. Witold Rekuć Bazy danych 152
Wstaw wiersz 2 Mokra 34 null null null null null Wstaw wiersz null null 004 Kawa 0 null null klucz główny dr inż. Witold Rekuć Bazy danych 153
Usuń wiersz, który spełnia warunek: NumerSklepu = 3 dr inż. Witold Rekuć Bazy danych 154
Zmień wartość pola StanMagazynowy na 300 w wierszu, który spełnia warunek: SymbolTowaru = 003! dr inż. Witold Rekuć Bazy danych 155
Zmień wartość pola StanMagazynowy na 300 w wierszach, które spełniają warunek: SymbolTowaru = 003 - wykonaj wielokrotnie czynność aktualizacji wierszy tabeli dr inż. Witold Rekuć Bazy danych 156
Co jest złego w projekcie tabeli Tabela1: - niemożność dodania nowych wierszy do tabeli w przypadku, gdy wiersze nie są kompletne, - możliwość niekontrolowanej straty danych przy usuwaniu wierszy, - niebezpieczeństwo wprowadzenia sprzeczności w danych przy aktualizacji pól wierszy, - wielokrotna aktualizacja zduplikowanych danych, - możliwe większe użycie pamięci. dr inż. Witold Rekuć Bazy danych 157
Jakie są konsekwencje, ogólnie: anomalie aktualizacji: - niemożność dodania nowych wierszy do tabeli w przypadku, gdy wiersze nie są kompletne, - możliwość niekontrolowanej straty danych przy usuwaniu wierszy, - niebezpieczeństwo wprowadzenia sprzeczności w danych przy aktualizacji pól wierszy, nadmiar czynności i danych: - wielokrotna aktualizacja zduplikowanych danych, - możliwe większe użycie pamięci. dr inż. Witold Rekuć Bazy danych 158
Jakie są sposoby unikania negatywnych zjawisk, takich jak : anomalie aktualizacji i nadmiar danych oraz nadmiar czynności? Odpowiedź: normalizacja struktury tabel. Tabela, która ma kolumny o dziedzinach wartości skalarnych jest w pierwszej postaci normalnej. Pierwsza postac normalna nie gwarantuje unikniecia anomalii i nadmiaru. Potrzebne jest zapewnienie, by tabele miały strulturę określoną przez wyższe postaci normalne: 2,3,3BCNF, 4, 5. dr inż. Witold Rekuć Bazy danych 159
Co dalej więc? pojęcie zależności funkcyjnej, pojęcie schematu relacyjnego jako modelu nagłówka tabeli, wnioskowanie o zależnościach funkcyjnych trywialne i nietrywialne zależności funkcyjne wyznaczanie kluczy tabeli na podstawie zależności funkcyjnych niepełna zależność funkcyjna od klucza i druga postać normalna, przechodnia zależność funkcyjna od klucza i trzecia postać normalna. dr inż. Witold Rekuć Bazy danych 160
Zależności funkcyjne między danymi Jaka jest data urodzenia osoby o numerze pesel 95021308594? DataUrodzenia = f (pesel), du = DataUrodzenia (pesel) PESELE DATY_URODZENIA Pesel Data urodzenia 95021308594 1995-02-13 95021307342 1995-02-13 93040808391 1993-04-08 96032308524 1996-03-23 dr inż. Witold Rekuć Bazy danych 161
Jaką ocenę otrzymał student o numerze indeksu _010238249? Ocena = f (Numer_Indeksu, Kod_Przedmiotu, Data) oc = Ocena (Numer_Indeksu, Kod_Przedmiotu, Data) Numer_indeksu Kod_przedmiotu Data Ocena _010238249 Mat 2015-02-13 5,0 _010238249 Fiz 2015-02-04 4,0 _010238249 Chem 2015-02-01 3,0 dr inż. Witold Rekuć Bazy danych 162
Numer_indeksu Nazwisko Kod_przedmiotu Data Ocena _010238249 Klinton Mat 2015-02-13 5,0 _010238249 Klinton Fiz 2015-02-04 4,0 _010238249 Klinton Chem 2015-02-01 3,0 dr inż. Witold Rekuć Bazy danych 163
Jakie zależności funkcyjne można by wskazać w tabeli niżej: dr inż. Witold Rekuć Bazy danych 164
Jakie zależności funkcyjne można by wskazać w bazie danych: dr inż. Witold Rekuć Bazy danych 165
Określenie zależności funkcyjnej między danymi w tabeli Dane są: - tabela r(r), o R(A 1, A 2,..., A n ) - wybieramy niepuste zbiory X, Y {A 1, A 2,..., A n } W tabeli r jest spełniona zależność funkcyjna X Y wtedy i tylko wtedy, gdy dla każdej wartości x X (r) liczba wierszy w X Y (r) jest równa 1 dr inż. Witold Rekuć Bazy danych 166
Dana jest tabela: r ( A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 Przykład 1 Czy {C} {D}? X = {C} {C} (r) = q ( C ) c1 c2 c3 X = {C} i Y = {D} {C,D} (r) = q ( C D ) c1 d1 c2 d2 c3 d3 dr inż. Witold Rekuć Bazy danych 167
Dana jest tabela: r ( A B C D ) a1 b1 c1 d1 a2 b3 c2 d2 a3 b2 c1 d1 a4 b1 c3 d3 Przykład 2 Czy {C,D} {A,B}? {A,B,C,D} (r) = q ( A B C D ) a1 b1 c1 d1 a3 b2 c1 d1 a2 b3 c2 d2 a4 b1 c3 d3 Przykład 3 Czy {B,C} {C,D}? {B,C,D} (r) = q ( B C D ) b1 c1 d1 b2 c1 d1 b3 c2 d2 b1 c3 d3 dr inż. Witold Rekuć Bazy danych 168
Dana jest tabela tabela1( NumerSklepu, AdresSklepu, SymbolTowaru, NazwaTowaru, StanMagazynowy, Data, IlośćSprzedana ) klucz={numersklepu,symboltowaru, Data} Przykłady 5) czy {NumerSklepu, SybmolTowaru, Data} {AdresSklepu, NazwaTowaru, IlośćSprzedana}? 6) czy {NumerSklepu, SymbolTowaru, Data} {NrSklepu, SymbolTowaru}? 7) czy {NumerSklepu} {AdresSklepu}? 8) czy {SymbolTowaru} {NazwaTowaru}? 9) czy {SymbolTowaru} {IlośćSprzedana}? dr inż. Witold Rekuć Bazy danych 169
NumerSklepu AdresSklepu SymbolTowaru NazwaTowaru,StanMagazynowy NumerSklepu,SymbolTowaru,Data IlośćSprzedana dr inż. Witold Rekuć Bazy danych 170
Tabela2 NrKasety Tytuł NrKlienta Nawisko NrKasety,NrKlienta,DataWypozycz Zapłacono NrKasety,NrKlienta,DataWypozycz Tytuł NrKasety,NrKlienta,DataWypozycz Nazwisko dr inż. Witold Rekuć Bazy danych 171
Schemat relacyjny Nagłówek tabeli nie jest prostym zbiorem nazw, lecz zbiorem nazw, między którymi występują zależności funkcyjne. Uzupełnimy schemat relacji R o zależności funkcyjne. Schematem relacyjnym (nagłówkiem tabeli) oznaczonym przez R nazywamy parę dwóch zbiorów: Z - zbioru atrybutów (kolumn) i F - zbioru zależności funkcyjnych między atrybutami. Schemat relacyjny jest oznaczany za pomocą wyrażenia: gdzie R( Z, F ) R jest nazwą schematu, Z jest zbiorem atrybutów Z={A 1,A 2,...,A n } F jest zbiorem zależności funkcyjnych w Z F={X Y: X,Y Z} Przykład 1 R( {A,B,C}, { AB C, B C } ) R( A B C ) dr inż. Witold Rekuć Bazy danych 172
Przykład 2 R ( Z, F ) dla tabeli Tabela1 Z = { F = { NrKasety, Tytuł, NrKlienta, Nazwisko, DataWypozycz, Zapłacono} NrKasety Tytuł, NrKlienta Nawisko, NrKasety,NrKlienta,DataWypozycz Zapłacono } dr inż. Witold Rekuć Bazy danych 173
Wnioskowanie o zależnościach funkcyjnych Może być wiele zależności funkcyjnych w nagłówku tabeli. Wiele z nich możemy wywnioskować na podstawie zależności znanych. Reguły wnioskowania: 1) zwrotność: jeżeli Y X, to X Y 2) rozszerzenie: jeżeli X Y, to XZ YZ 3) addytywność: jeżeli X Y i X Z to X YZ 4) projekcyjność: jeżeli X YZ to X Y i X Z 5) przechodniość: jeżeli X Y i Y Z, to X Z 6) pseudo-przechodniość: jeżeli X Y i YZ W, to XZ W Schemat relacji Reguły wnioskowania Pozostałe zależności funkcyjne dr inż. Witold Rekuć Bazy danych 174
1) zwrotność: jeżeli Y X, to X Y {Pesel, Nazwisko} {Pesel, Nazwisko}, {Pesel, Nazwisko} {Nazwisko}, {Pesel, Nazwisko} {Nazwisko} {MarkaSamochodu, NazwiskoPremiera} {MarkaSamochodu}, {MarkaSamochodu, NazwiskoPremiera} {NazwiskoPremiera} Wniosek: każdy zestaw atrybutów określa funkcyjnie siebie i wszystkie swoje składniki 2) rozszerzenie: jeżeli X Y, to XZ YZ jeżeli {Pesel} {Nazwisko}, to {Pesel, DataZakupu} {Nazwisko, DataZakupu} Wniosek: zestaw atrybutów po obu stronach zależności funkcyjnej możemy rozszerzyć o kolejne dowolne atrybuty nadal mając zależność funkcyjną dr inż. Witold Rekuć Bazy danych 175
3) addytywność: jeżeli X Y i X Z to X YZ jeżeli {Pesel} {Nazwisko} i {Pesel} {Zawód} to {Pesel} {Nazwisko, Zawód} Wniosek: jeżeli dany zestaw atrybutów określa funkcyjnie dwa zestawy atrybutów, to te dwa ostatnie zestawy atrybutów możemy połączyć w jeden mając nadal zależność funkcyjną 4) projektywność: jeżeli X YZ to X Y i X Z jeżeli {Pesel} {Nazwisko, Zawód} to {Pesel} {Nazwisko} i {Pesel} {Zawód} Wniosek: jeżeli pewien zestaw atrybutów określa funkcyjnie jakiś zestaw atrybutów, to określa funkcyjnie każdy składnik tego ostatniego 5) przechodniość: jeżeli X Y i Y Z, to X Z jeżeli {Pesel} {DataUrodzenia} i {DataUrodzenia} {DzieńTygodnia} to {Pesel} {DzieńTygodnia} Wniosek: jeżeli zestaw atrybutów określa funkcyjnie pewien zestaw a ten z kolei określa funkcyjnie trzeci zestaw to pierwszy z nich także określa funkcyjnie trzeci dr inż. Witold Rekuć Bazy danych 176
Przykład R( {A,B,C}, { B C } ) R( {A,B,C}, { B C } ) Reguły wnioskowania zwrotność: A A, B B, C C, AB A, AB B, AB AB, AC A, AC C, AC AC, BC B, BC C, BC BC, ABC A, ABC B, ABC C, ABC AB, ABC AC, ABC BC, ABC ABC, rozszerzenie: AB AC, addytywność: AB ABC, projektywność: AB A, AB AC, AB BC AB B, AB AB, AB C dr inż. Witold Rekuć Bazy danych 177
Domknięcie zbioru zależności funkcyjnych w schemacie relacyjnym (nagłówku tabeli) Dany jest schemat relacyjny (nagłówek tabeli) R ( Z, F ), w którym Z jest zbiorem nazw atrybutów, a F zbiorem zależności funkcyjnych. Domknięciem zbioru zależności F, oznaczanym przez F +, nazywamy zbiór wszystkich zależności w R : należących do F i pozostałych, wyprowadzonych za pomocą reguł wnioskowania. Przykład R ( {A,B,C}, { B C } ) F + = { B C, A A, B B, C C, AB A, AB B, AB AB, AC A, AC C, AC AC, BC B, BC C, BC BC, ABC A, ABC B, ABC C, ABC AB, ABC AC, ABC BC, ABC ABC, AB C, AB AC, AB BC, AB ABC } dr inż. Witold Rekuć Bazy danych 178
Trywialne i nietrywialne zależności funkcyjne Zależność funkcyjna X Y jest zależnością trywialną, jeżeli Y X. Zależności pozostałe są zależnościami nietrywialnymi Przykład R( {A,B,C}, { B C } ) F + = { B C, A A, B B, C C, AB A, AB B, AB AB, AC A, AC C, AC AC, BC B, BC C, BC BC, ABC A, ABC B, ABC C, ABC AB, ABC AC, ABC BC, ABC ABC, AB C, AB AC, AB BC, AB ABC } Trywialne zależności funkcyjne są spełnione w każdej relacji o danym schemacie dr inż. Witold Rekuć Bazy danych 179
Określenie klucza tabeli za pomocą zależności funkcyjnych Dany jest schemat relacyjny R( Z, F ) - nagłówek pewnej tabeli. Kluczem tabeli o nagłówku (schemacie relacyjnym) niepusty zbiór atrybutów K Z taki, że: R( Z, F ) nazywamy a) K określa funkcyjnie wszystkie atrybuty (K Z F + ) i b) żaden podzbiór właściwy K nie spełnia (a) (dla każdego K' K, K' R F + ). Wniosek Klucz to taki minimalny zbiór atrybutów należący Z, który funkcyjnie określa wszystkie atrybuty Z, każdy atrybut z osobna lub każdy podzbiór Z. dr inż. Witold Rekuć Bazy danych 180
Przykłady Firmy(Nr, Nazwa, Ulica,KodMjc, Telefon) Towary(Symbol, Nazwa, StawkaVAT, JM) Dokumenty(NrDokumentu, NrSprzedawcy, NrNabywcy, Data) PD(NrDokumentu, NrSprzedawcy,NrPozycji, SmbTow, Ilość, CenaJedn) dr inż. Witold Rekuć Bazy danych 181
Algorytm określenia klucza tabeli na podstawie zależności funkcyjnych Dany jest schemat relacyjny R( Z, F ) oraz zbiór X Z. Domknięciem danego zbioru atrybutów X, oznaczanym przez X +, nazywamy zbiór atrybutów z Z, które w schemacie R zależą funkcyjnie od X lub pewnych podzbiorów X. Algorytm wyznaczania X + jako domknięcia X: 1) w X + umieść wszystkie atrybuty X, 2) w X + umieść wszystkie atrybuty z Z-X, które zależą funkcyjnie od dowolnych podzbiorów X, 3) zakończ, gdy nie będzie możliwe dodawanie atrybutów do X +. dr inż. Witold Rekuć Bazy danych 182
Przykład 1 R( {A,B,C,D,E}, { AB C, D E } ) a) X=AB 1) X + = AB, bo X=AB 2) X + = ABC, bo AB C 3) stop Odpowiedź: X + = ABC b) X=ABD 1) X + = ABD, bo X=ABD 2) X + = ABCD, bo AB C 3) X + = ABCDE, bo D E 4) stop Odpowiedź: X + = ABCDE Który ze zbiorów X jest kluczem? dr inż. Witold Rekuć Bazy danych 183
Przykład 2: R( {A,B,C,D,E,F,G}, {AB C, C A, BC EF, F G } ) Wyznaczyć klucz Hipoteza1 X=BC 1) X + = BC 2) X + = BCEF 3) X + = ABCEF 4) X + = ABCEFG 5) stop Hipoteza3 X=AB 1) X + = AB 2) X + = ABC 3) X + = ABCEF 4) X + = ABCEFG 5) stop Hipoteza2 X=BCD 1) X + = BCD 2) X + = BCDEF 3) X + = ABCDEF 4) X + = ABCDEFG 5) stop Hipoteza4 X=ABD 1) X + = ABD 2) X + = ABCD 3) X + = ABCDEF 4) X + = ABCDEFG 5) stop K1=BCD K2=ABD dr inż. Witold Rekuć Bazy danych 184
Atrybuty kluczowe i niekluczowe Atrubut A Z nazywamy atrybutem kluczowym wtedy i tylko wtedy, gdy wchodzi w skład pewnego klucza schematu R(Z,F). Pozostałe atrybuty ze zbioru Z nazywany niekluczowymi Przykłady Firmy(Nr, Nazwa, Ulica, KodMjc, Telefon) Towary(Symbol, Nazwa, StawkaVAT, JM) Dokumenty(NrDokumentu, NrSprzedawcy, NrNabywcy, Data) PD(NrDokumentu, NrSprzedawcy, NrPozycji, SmbTow, Ilość, CenaJedn Zwiedziła(NrGrupy, NazwaObiektu) dr inż. Witold Rekuć Bazy danych 185
Niepełne zależności funkcyjne od klucza Dany jest schemat relacyjny R( Z, F ) z kluczem K oraz atrybut A Z takie, że A jest niekluczowy Zależność K {A} jest niepełną zależnością funkcyjną A od klucza K, wtedy i tylko wtedy, gdy istnieje takie niepuste K, będące podzbiorem właściwym K, że K {A}. Mówimy wtedy, że A nie w pełni zależy od K. K A K dr inż. Witold Rekuć Bazy danych 186
Przykład Tabela2 NrKasety Tytuł NrKlienta Nawisko NrKasety,NrKlienta,DataWypozycz Zapłacono NrKasety,NrKlienta,DataWypozycz Tytuł NrKasety,NrKlienta,DataWypozycz Nazwisko zależności niepełne atrybut kluczowy atrybut niekluczowy dr inż. Witold Rekuć Bazy danych 187
Skutkami występowania niepełnych zależności funkcyjnych atrybutów niekluczowych od kluczy są: - anomalie aktualizacji, - nadmiar danych i czynności. dr inż. Witold Rekuć Bazy danych 188
Przykład 1 R({indeks, kod_prz, data, ocena, nazwa_prz}, {indeks, kod_prz, data ocena, kod_prz nazwa_prz} ) K={indeks, kod_prz, data} r ( indeks, kod_prz, data, ocena, nazwa_prz ) i1 kp1 d1 c1 np1 i1 kp2 d2 c3 np2 i2 kp2 d3 c2 np2 np3 i3 kp2 d2 c4 np2 i1 null kp2 kp4 d3 null c3 null np2 np4 Dodaj do tabeli nowy przedmiot. Usuń wiersze dla daty d1. Czy można po tej operacji określić nazwę przedmiotu kp1? Zmień nazwę przedmiotu kp2 na np3. Co będzie, gdy zapomnimy zaktualizować wszystkie pozycje? Czy jest w tabeli nadmiar danych? Czy możemy spodziewać nadmiaru czynności przy aktualizacji danych? odmowa! dr inż. Witold Rekuć Bazy danych 189
Przykład Tabela2 Dodaj do tabeli nowego klienta, który jeszcze nic nie wypożyczył. Usuń wiersze dla daty > 2004-09-14. Czy możesz znaleźć tytuł kasety o numerze 1? Zmień tytuł kasety Speed na Prędkość. Czy jest w tabeli nadmiar danych? Czy możemy spodziewać nadmiaru czynności przy aktualizacji danych? dr inż. Witold Rekuć Bazy danych 190
dr inż. Witold Rekuć Bazy danych 191
Rozkład schematu relacyjnego (nagłówka tabeli) Dane są: schemat relacyjny (nagłówek tabeli) R(Z, F) niepuste zbiory X 1, X 2,...,X p Z takie, że ich suma daje z powrotem zbiór Z, czyli X 1 X 2... X p = Z Rozkładem (dekompozycją) schematu relacyjnego R(Z, F) na X 1, X 2,...,X p nazywamy zestaw schematów relacyjnych: R 1, R 2,...,R p takich, że R i = R i (X i,f i ), F i F dla i = 1,..., p. W wyniku rozkładu nagłówka danej tabeli otrzymujemy p nowych nagłówków, które zawierają zbiory atrybutów odpowiednio X 1, X 2,...,X p wraz z zależnościami między tymi atrybutami F 1, F 2,...,F p, wziętymi z F. dr inż. Witold Rekuć Bazy danych 192
Przykład SchematTabeli2( {NrKasety, NrKlienta, DataWypozycz, Nazwisko, Tytuł, Zapłacono}, {NrKasety,NrKlienta,DataWypozycz Zapłacono, NrKasety,NrKlienta,DataWypozycz Tytuł, NrKasety,NrKlienta,DataWypozycz Nazwisko, NrKasety Tytuł, NrKlienta Nawisko} ) SchematTabeli2 rozkładamy na: X 1 = {NrKasety, NrKlienta, DataWypozycz, Nazwisko, Zapłacono } X 2 = {NrKasety, Tytuł} Otrzymujemy schematy: SchematDlaR1( {NrKasety, NrKlienta, DataWypozycz, Nazwisko, Zapłacono}, { NrKasety,NrKlienta,DataWypozycz Zapłacono, NrKasety,NrKlienta,DataWypozycz Nazwisko, NrKlienta Nazwisko} ) SchematDlaR2( {NrKasety, Tytuł}, {NrKasety Tytuł} ) dr inż. Witold Rekuć Bazy danych 193
Tabela2 Tabela21 Tabela22 dr inż. Witold Rekuć Bazy danych 194
Rozkład bez straty danych usuwający ze schematu zależności niepełne od klucza Dany jest schemat (nagłówek) R(Z,F) z kluczem K oraz zbiorem atrybutów niekluczowych X, dla których istnieje podzbiór właściwy K' klucza K taki, że K' X Rozkład bez straty danych usuwający ze schematu zależności niepełne od klucza polega na utworzeniu: schematu R 1 (K' X, K' X) zawierającego K oraz atrybuty X wraz z zależnością K' X oraz schematu R 2 (Z X, F P ) zawierającego wszystkie atrybuty oprócz X oraz pozostałe zależności funkcyjne F p. Tabelę o schemacie (nagłówku) R(Z,F) można zastąpić dwiema tabelami o schematach (nagłówkach) R 1 (K' X, K' X) oraz R 2 (Z X, F P ). dr inż. Witold Rekuć Bazy danych 195
Przykład R( indeks, kod_prz, data, ocena, nazwa_prz ) R1 ( kod_prz, nazwa_prz ) R2 ( indeks, kod_prz, data, ocena ) dr inż. Witold Rekuć Bazy danych 196
Przykład 1: R( {A,B,C,D,E,F}, {AB F, AC F, B DE, C DE, B C, C B} ) K1 = {A,B} K2 = {A,C} Atrybuty niekluczowe D, E, F AB DE jest niepełna od klucza bo B DE AC DE jest niepełna od klucza bo C DE Są dwa warianty rozkładów: * Interpretacja: R={Miesiąc, Pesel, Nip, Nazwisko, Adres, Dochód} dr inż. Witold Rekuć Bazy danych 197
Wariant 1 R1( {B,D,E}, {B DE} ), K = {B} Atrybuty niekluczowe: D, E R2( {A,B,C,F}, {AB F, AC F, B C, C B } ) K1 = {A, B}, K2 = {A, C} Atrybuty niekluczowe: F Wariant 2 R1( {C,D,E}, {C DE} ), K = {C} Atrybuty niekluczowe: D, E R2( {A,B,C,F}, {AB F, AC F, B C, C B } ) K1 = {A, B}, K2 = {A, C} Atrybuty niekluczowe: F dr inż. Witold Rekuć Bazy danych 198
Przykład 2: R( {A,B,C,D,E,F}, {ABC F, BC D, B E} ) K = {A,B,C} Atrybuty niekluczowe D, E, F ABC D jest niepełna od klucza bo BC D R1( {B,C,D}, {BC D} ), K = {BC} Atrybuty niekluczowe: D R2( {A,B,C,E,F}, {ABC F, B E} ) K = {A, B, C}, Atrybuty niekluczowe: E,F ABC E jest niepełna od klucza bo B E R21( {B,E}, {B E} ), K = {B} Atrybuty niekluczowe: E R22( {A,B,C,F}, {ABC F} ), K = {A,B,C} Atrybuty niekluczowe: F dr inż. Witold Rekuć Bazy danych 199
Zależności funkcyjne przechodnie od klucza Dany jest schemat relacyjny R( Z, F ) z kluczem K oraz niekluczowy atrybut A Z. Atrybut A jest przechodnio zależny od klucza K wtedy i tylko wtedy, gdy istnieje taki zbiór atrybutów X Z nie będący kluczem oraz nie zawierający A (A X), który wyznacza funkcyjnie A. K X A dr inż. Witold Rekuć Bazy danych 200
Przykład 1 R ( Kod, Nazwa, kodwoj, nazwawoj ) km1 nm1 kw1 nw1 km2 nm2 kw1 nw1 km3 nm3 kw2 nw2 km4 nm4 kw1 nw1 Przykład 2 K Nr Nazwa Ulica KodMjc Telefon Nazwa (Mjc) KodWoj 0 Nasza Firma Nasza 1 234 23 Wrocław DL 1 Abeja Abejowska 3 234 55 Wałbrzych DL 2 Audi Audiego 2 Opole OP 3 Pafawag Wagonowa 2 Opole OP 4 Iase Energetyczna 3 256 12 Wałbrzych DL 5 Dolmed Medyczna 1 Wrocław DL dr inż. Witold Rekuć Bazy danych 201
Skutkami występowania przechodnich zależności funkcyjnych atrybutów niekluczowych od kluczy są: - anomalie aktualizacji, - nadmiar danych i czynności. dr inż. Witold Rekuć Bazy danych 202
Przykład R ( Kod, Nazwa, kodwoj, nazwawoj ) km1 nm1 kw1 nw1 km2 nm2 kw1 nw1a km3 nm3 kw2 nw2 km4 nm4 kw1 nw1 null null kw3 nw3 odmowa! Dodaj do tabeli nowe województwo, którym jeszcze nie mamy miejscowości. Usuń wiersze dla kodu km3. Czy można teraz określić nazwę województwa o kodzie kw2. Zmień nazwę województwa kw1 na nw1a. Czy jest w tabeli nadmiar danych? Czy możemy spodziewać nadmiaru czynności przy aktualizacji danych? dr inż. Witold Rekuć Bazy danych 203
Przykład K Nr Nazwa Ulica KodMjc Telefon Nazwa (Mjc) KodWoj 0 Nasza Firma Nasza 1 234 23 Wrocław DL 1 Abeja Abejowska 3 234 55 Wałbrzych DL 2 Audi Audiego 2 Opole OP 3 Pafawag Wagonowa 2 Opole OP 4 Iase Energetyczna 3 256 12 Wałbrzych DL 5 Dolmed Medyczna 1 Wrocław DL Dodaj do tabeli nową miejscowość. Usuń wiersze dla numeru 2 i 3. Czy możesz określić województwo dla Opola? Zmień nazwę miejscowości o kodzie 3. Czy jest w tabeli nadmiar danych? Czy możemy spodziewać nadmiaru czynności przy aktualizacji danych? dr inż. Witold Rekuć Bazy danych 204
Rozkład bez straty danych usuwający ze schematu zależności przechodnie od klucza Dany jest schemat (nagłówek) R(Z,F) z kluczem K, atrybutem niekluczowym A oraz zbiorem atrybutów niekluczowych X, dla których X {A} Rozkład bez straty danych usuwający ze schematu zależności przechodnie od klucza polega na utworzeniu: schematu R 1 (X {A}, X {A}) zawierającego X oraz atrybut A wraz z zależnością X {A} oraz schematu R 2 (Z {A},F p ) zawierającego wszystkie atrybuty Z oprócz A oraz pozostałe zależności funkcyjne F p. Tabelę o schemacie (nagłówku) R(Z,F) można zastąpić dwiema tabelami o schematach (nagłówkach) R 1 (X {A}, X {A}) oraz R 2 (Z {A},F p ). dr inż. Witold Rekuć Bazy danych 205
Przykład R( Kod, Nazwa, kodwoj, nazwawoj ) R1( kodwoj, nazwawoj ) R2( Kod, Nazwa, kodwoj ) dr inż. Witold Rekuć Bazy danych 206
Przykład : R( {A,B,C,D,E,F}, {ABC F, F D, B E} ) K = {A,B,C} Atrybuty niekluczowe D, E, F ABC E ABC D jest niepełna od klucza bo, B E i B jest częścią klucza jest przychodnia od klucza bo ABC F i F D Usuńmy zależność niepełną: R1( {B,E}, {B E} ) K = {B} R2( {A,B,C,D,F}, {ABC F, F D} ) K = {A,B,C} Usuńmy zależność przechodnią: R21( {D,F}, {F D} ) K = {F} R22( {A,B,C,F}, {ABC F} ) K = {A,B,C} dr inż. Witold Rekuć Bazy danych 207
Normalizacja schematów relacji Pierwsza postać normalna (1PN) schematu relacyjnego Schemat relacyjny R(Z,F) jest w pierwszej postaci normalnej, jeżeli dziedzina wartości każdego atrybutu A Z zawiera wartości atomowe (niepodzielne). Przykład Wyrób brak normalizacji id nazwa wymiary producent id nazwa adres kraj adres_w_kraju 1PN Wyrób id nazwa w 1 w 2 w 3 id pr nazwa producenta kraj_ producenta adres_w_krajuproducenta dr inż. Witold Rekuć Bazy danych 208
Druga postać normalna (2PN) schematu relacyjnego Schemat relacyjny R(Z,F) jest w drugiej postaci normalnej, wtedy i tylko wtedy, gdy jest w pierwszej postaci normalnej i każdy niekluczowy atrybut A Z jest w pełni zależny funkcyjnie od każdego klucza tego schematu. Które schematy są w 2PN?: R( {A,B,C,D,E,F}, {ABC F, BC D, B E} ) R( {A,B,C,D,E,F}, {AB F, F DE, D C} ) R( {A,B,C,D,E,F}, {A F, BC D, B E, F BC} ) dr inż. Witold Rekuć Bazy danych 209
Trzecia postać normalna (3PN) schematu relacyjnego Schemat relacyjny R(Z,F) jest w trzeciej postaci normalnej, wtedy i tylko wtedy, gdy jest w drugiej postaci normalnej i każdy niekluczowy atrybut A Z jest nieprzechodnio zależny funkcyjnie od każdego klucza tego schematu. Które schematy są w 3PN?: R( {A,B,C,D,E,F}, {ABC F, BC D, B E} ) R( {A,B,C,D,E,F}, {AB F, F DE, D C} ) R( {A,B,C,D,E,F}, {AB F, AB D, AB E, AB C ) R( {A,B,C,D,E,F}, {AB DEF, AB C, C B ) dr inż. Witold Rekuć Bazy danych 210
Procedura normalizacji Start Opracowanie schematów relacji (R,F) Test na 1PN Korekta schematów są schematy nie spełniające wymogu 1PN? nie tak Test na 2PN i 3PN Rozkład schematów są schematy nie spełniające wymogu 2 i 3PN? nie tak Stop dr inż. Witold Rekuć Bazy danych 211
Celowa denormalizacja Modyfikacja schematu bazy danych do stanu naruszającego reguły dla postaci normalnych mająca na celu poprawienie szybkości wyszukiwania danych, kosztem nadmiaru danych i szybkości aktualizacji: 1) wprowadzenie przechodniej zależności od kluczy (3PN 2PN), 2) wprowadzenie niepełnej zależności od kluczy (2PN 1PN), 3) inne dr inż. Witold Rekuć Bazy danych 212
VII. Normalizacja relacyjnej bazy danych studium przypadku Karta urządzenia Typ urządzenia Id Nazwa Wymiary Wys. Szer Głęb. Numer inwentarzowy Data zakupu Data instalacji Producent Naprawy Id Nazwa Adres Kod kraju Nazwa Kraju Adres w kraju Data Koszt Kod wykonawcy Data ostatniego przeglądu dr inż. Witold Rekuć Bazy danych 213
Podejście analityczne dr inż. Witold Rekuć Bazy danych 214
1. Zbierzmy wszystkie dane w jednej tabeli Nr in we nt. Data Typ urządzenia Producent Naprawy Data ost. Zak upu Id Nazwa Wymiary Id Nazwa producenta Adres producenta Data Koszt Kod wykonawcy przeglądu Inst alac ji W ys. Sz er. G łę b. produ centa Kod kraju Nazwa Kraju Adres w kraju Czy wszystkie kolumny w tej tabeli są proste? Tabela NrInwent Data TypUrządzenia Producent Naprawy Data ost. przeglądu Zakupu Instalacji Id Nazwa Wymiary Id Nazwa Adres Producenta Data Koszt Kod Wykonawcy Wys Szer Głęb Kod Kraju Nazwa Kraju Adres w kraju Tabela nie jest w 1PN! dr inż. Witold Rekuć Bazy danych 215
2. Zlikwidujmy kolumny złożone, zastępując je wieloma kolumnami prostymi Nr in we nt. Data Typ urządzenia Producent Naprawy Data ost. Zak upu Id Nazwa Wymiary Id Nazwa producenta Adres producenta Data Koszt Kod wykonawcy przeglądu Inst alac ji W ys. Sz er. G łę b. produ centa Kod kraju Nazwa Kraju Adres w kraju Tabela Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt naprawy Kod wykonawcy naprawy Data ost. przeglądu Tabela jest w 1PN! dr inż. Witold Rekuć Bazy danych 216
3. Określmy nietrywialne zależności funkcyjne w tej tabeli Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Czy schemat (nagłówek) tej tabeli jest w postaci wyższej niż 1PN? Czy są w tym schemacie zależności niepełne atrybutów niekluczowych od kluczy? Czy są w tym schemacie zależności przechodnie atrybutów niekluczowych od kluczy? dr inż. Witold Rekuć Bazy danych 217
4. Określmy klucze tabeli Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Czy są w tej tabeli pojedyncze atrybuty, które określają funkcyjnie wszystkie atrybuty tej tabeli (pozwalają znaleźć jeden i tylko jeden wiersz)? Które atrybuty mogłyby kandydować do roli bycia kluczem? Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 218
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 219
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 220
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 221
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 222
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Numer inwentarzowy? Id typu? Id producenta? Kod kraju? Kod wykonawcy naprawy? dr inż. Witold Rekuć Bazy danych 223
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Czy są w tej tabeli złożone atrybuty, które określają funkcyjnie wszystkie atrybuty tej tabeli (pozwalają znaleźć jeden i tylko jeden wiersz)? Które atrybuty mogłyby kandydować do roli bycia kluczem? Może pewna kombinacja atrybutów ze zbioru?: { Numer inwentarzowy, Id typu, Id producenta, Kod kraju, Kod wykonawcy naprawy }? dr inż. Witold Rekuć Bazy danych 224
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Może : { Numer inwentarzowy, Data naprawy}? dr inż. Witold Rekuć Bazy danych 225
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu {Numer inwentarzowy, Data naprawy} {Numer inwentarzowy} { Koszt naprawy, Kod wykonawcy naprawy} { Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Data ost. przeglądu } dr inż. Witold Rekuć Bazy danych 226
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu {Numer inwentarzowy, Data naprawy} {Numer inwentarzowy, Data naprawy} { Koszt naprawy, Kod wykonawcy naprawy} { Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Data ost. przeglądu } dr inż. Witold Rekuć Bazy danych 227
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu {Numer inwentarzowy, Data naprawy} {Numer inwentarzowy, Data naprawy, Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Koszt naprawy, Kod wykonawcy naprawy, Data ost. przeglądu } dr inż. Witold Rekuć Bazy danych 228
{Numer inwentarzowy, Data naprawy} {Numer inwentarzowy, Data naprawy, Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Koszt naprawy, Kod wykonawcy naprawy, Data ost. przeglądu } Powyższy zbiór atrybutów {Numer inwentarzowy, Data naprawy} wyznacza funkcyjnie wszystkie atrybuty tabeli. Czy może więc być kluczem tej tabeli? dr inż. Witold Rekuć Bazy danych 229
Przypomnijmy sobie! Określenie klucza tabeli za pomocą zależności funkcyjnych Dany jest schemat relacyjny R( Z, F ) - nagłówek pewnej tabeli. Kluczem tabeli o nagłówku (schemacie relacyjnym) niepusty zbiór atrybutów K Z taki, że: R( Z, F ) nazywamy a) K określa funkcyjnie wszystkie atrybuty (K Z F + ) i b) żaden podzbiór właściwy K nie spełnia (a) (dla każdego K' K, K' R F + ). Wniosek Klucz to taki minimalny zbiór atrybutów należący Z, który funkcyjnie określa wszystkie atrybuty Z, każdy atrybut z osobna lub każdy podzbiór Z. dr inż. Witold Rekuć Bazy danych 230
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Czy prawdą jest, że: {Numer inwentarzowy} Odpowiedź: NIE {Numer inwentarzowy, Data naprawy, Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Koszt naprawy, Kod wykonawcy naprawy, Data ost. przeglądu } dr inż. Witold Rekuć Bazy danych 231
Nr in we nt. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządze nia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Data napr awy Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Czy prawdą jest, że: {Data naprawy} Odpowiedź: NIE {Numer inwentarzowy, Data naprawy, Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Koszt naprawy, Kod wykonawcy naprawy, Data ost. przeglądu } dr inż. Witold Rekuć Bazy danych 232
{Numer inwentarzowy, Data naprawy} {Numer inwentarzowy, Data naprawy, Data zakupu, Data instalacji, Id typu urządzenia, Nazwa typu urządzenia, Wys., Szer., Głęb., Id producenta, Nazwa producenta, Kod kraju producenta, Nazwa kraju producenta, Adres w kraju producenta, Koszt naprawy, Kod wykonawcy naprawy, Data ost. przeglądu } Wniosek: powyższy zbiór atrybutów, tzn., {Numer inwentarzowy, Data naprawy} a) wyznacza funkcyjnie wszystkie atrybuty tabeli i b) żaden jego podzbiór właściwy, tzn., ani {Numer inwentarzowy} ani {Data naprawy} nie wyznaczają funkcyjnie wszystkich atrybutów (a). Zbiór atrybutów {Numer inwentarzowy, Data naprawy} jest kluczem rozpatrywanej tabeli. dr inż. Witold Rekuć Bazy danych 233
5. Zbadajmy: czy schemat tej tabeli jest 3PN? Nr in w en t. Da ta na pr a wy Da ta za ku pu Da ta Ins tal acj i Id typ u urz ądz eni a Nazw a typu urząd zenia W y s. S z e r. G ł ę b. Id produ centa Nazwa producenta Kod kraju prod ucen ta Nazwa kraju producenta Adres w kraju produc enta Koszt naprawy Kod wykonawcy naprawy Data ost. przeglądu klucz Schemat tej tabeli nie jest 3PN, bo występują w nim niepełne i przechodnie zależności od klucza dr inż. Witold Rekuć Bazy danych 234
6. Zdekomponujmy schemat tej tabeli na mniejsze usuwając niepełne i przechodnie zależności Nr in w en t. Da ta na pr a wy Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządz enia W y s. S z e r. G ł ę b. Id producenta Nazwa producenta Kod kraju prod ucen ta Adres w kraju produc enta Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Kod kraju Nazwa kraju dr inż. Witold Rekuć Bazy danych 235
Nr in w en t. Da ta na pr a wy Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Nazwa typu urządz enia W y s. S z e r. G ł ę b. Id producenta Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Kod kraju Nazwa kraju Id producenta Nazwa producenta Kod kraju prod ucen ta Adres w kraju produc enta dr inż. Witold Rekuć Bazy danych 236
Nr in w en t. Da ta na pr a wy Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Id producenta Koszt napra wy Kod wykonawcy naprawy Data ost. przeglądu Kod kraju Nazwa kraju Id producenta Nazwa producenta Kod kraju prod ucen ta Adres w kraju produc enta Id ty pu ur zą dz en ia Nazwa typu urządz enia W y s. S z e r. G ł ę b. dr inż. Witold Rekuć Bazy danych 237
Efekt końcowy normalizacji: czy schematy tych tabel są w 3PN? NaprawyUrządzeń Urządzenia Nr in w en t. Da ta na pr a wy Koszt napra wy Kod wykonawcy naprawy Nr in w en t. Da ta za ku pu Da ta Ins tal acj i Id ty pu ur zą dz en ia Id producenta Data ost. przeglądu Kraje Producenci TypyUrządzeń Kod kraju Nazwa kraju Id producenta Nazwa producenta Kod kraju prod ucen ta Adres w kraju produc enta Id ty pu ur zą dz en ia Nazwa typu urządz enia W y s. S z e r. G ł ę b. dr inż. Witold Rekuć Bazy danych 238
Projekt bazy danych w 3PN: dr inż. Witold Rekuć Bazy danych 239
Reasumując: przeanalizowałem dany dokument i zrozumiałem jego sens i sens jego pól, opracowałem schemat (nagłówek) tabeli, która mogłaby służyć do pamiętania danych z dokumentów tego typu, stwierdziłem, że w schemacie tym pewne atrybuty (kolumny) są złożone, a więc schemat ten nie jest w 1PN; zlikwidowałem atrybuty złożone zastępując je atrybutami prostymi otrzymując 1PN, zidentyfikowałem nietrywialne zależności funkcyjne między atrybutami w schemacie tej tabeli, określiłem klucz tabeli, zbadałem, czy są w tym schemacie zależności funkcyjne niepełne lub przechodnie atrybutów niekluczowych od klucza, rozłożyłem bez straty danych schemat tabeli na mniejsze schematy tak, aby otrzymać bazę danych o schematach tabel w 3PN. dr inż. Witold Rekuć Bazy danych 240
VIII. Pojęciowe (konceptualne) modelowanie danych. Model związków encji. Model klas UML 1. Encja i jej instancje 2. Związki między encjami - asocjacje 3. Atrybuty encji 4. Atrybuty związków 5. Szczególne struktury związków 6. Związki generalizacji/specjalizacji dr inż. Witold Rekuć Bazy danych 241
Typ urządzenia # Id * Nazwa * Wysokość * Szerokość * Głębokość Kraj # Kod * Nazwa Serwisant # Kod * Nazwisko Urządzenie # NrInwentarzowy * DataZakupu * DataInstalacji * DataOstPrzeglądu Miejscowość # Kod * Nazwa Naprawa # Data * Koszt Producent # Id * Nazwa Miejsce # NazwaUlPl # Numer dr inż. Witold Rekuć Bazy danych 242
1. Encja i jej instancje Encja jest to element modelu reprezentujący, istniejące w rozpatrywanym świecie (rzeczywistości), przedmioty, rzeczy, byty indywidualne (indywidua): materialne lub niematerialne, mające ten sam sens ogólny wyrażony ich wspólną nazwą, dające się zidentyfikować (odróżnić od innych) i o których informacje powinny być znane lub przechowywane Przykłady Przedmioty materialne mające wspólny sens wyrażony nazwą Samochód osobowy... Przedmioty niematerialne mające wspólny sens wyrażony nazwą Kategoria prawa jazdy A B C D A1... dr inż. Witold Rekuć Bazy danych 243
Przedmioty niematerialne mające wspólny sens wyrażony nazwą Marka samochodu Fiat Volvo Citroen Daewoo FSO... Przedmioty materialne mające wspólny sens wyrażony nazwą Przedmiot nauczania Fiz Che Mat Bio Ast... Przedmioty materialne mające wspólny sens wyrażony nazwą Student 1 2 4 5 3... dr inż. Witold Rekuć Bazy danych 244
Co to znaczy dające się zidentyfikować w rozpatrywanym świecie? Musi istnieć zbiór istotnych cech (atrybutów) pozwalających na odróżnienie modelowanego przedmiotu od przedmiotów innych w praktyce nadaje się przedmiotom proste lub złożone identyfikatory. Przykład pozytywny Samochód PK 23234 Kategoria prawa jazdy Marka samochodu Przedmiot nauczania Student Dokument 13/2016 Przykład negatywny 2 Długopis? numer rejestracyjny symbol nazwa nazwa (lub kod) numer indeksu (lub pesel) numer dokumentu brak potrzeby / sposobu identyfikacji dr inż. Witold Rekuć Bazy danych 245
Instancja encji jest to przedmiot, rzecz, byt indywidualny (indywiduum) reprezentowany w modelu przez encję. Zakres znaczeniowy encji zbiór instancji encji. Uwaga. Encja powinna być traktowana jako reprezentant instancji jakie są lub mogą się pojawić w czasie istnienia modelu/rzeczywistości Język Model Rzeczywistość nazwa encji (w liczbie pojedynczej) Zakres encji Samochód osobowy Samochód osobowy... symbol graficzny encji encja instancje encji dr inż. Witold Rekuć Bazy danych 246
Przykłady encji reprezentujących pewien rozpatrywany świat (rzeczywistość) Typ urządzenia Kraj Serwisant Urządzenie Miejscowość Naprawa Producent Miejsce dr inż. Witold Rekuć Bazy danych 247
Znajdowanie encji (przykład: analiza dokumentu ustrukturalizowanego) dr inż. Witold Rekuć Bazy danych 248
wpłata dowód wpłaty KP pozycja dowodu wpłaty wpłacający wystawiający sprawdzający zatwierdzający przedmiot (za co) Wpłata Dowód wypłaty Pozycja dowodu wpłaty Wpłacający Pracownik Tytuł wpłaty dr inż. Witold Rekuć Bazy danych 249
Znajdowanie encji (przykład: analiza wypowiedzi, tekstu) Firma nasza obsługuje klientów z terenu naszego miasta. Misją firmy jest odpłatne wypożyczanie osobom fizycznym sprzętu różnego typu (w tym sportowego, AGD itp.). Firmą kieruje dwuosobowy zarząd. Są mu podporządkowane jednostki organizacyjne: dział obsługi klienta, magazyn, księgowość i biuro zamówień. Zadania jednostek wynikają z ich nazw. Zarząd decyduje o uzupełnieniu sprzętu, ściąga należności i zajmuje się typowymi sprawami kierowniczymi. Ja jestem pracownikiem działu obsługi klienta i o tym dziale opowiem. Gdy zjawia się klient próbuję określić jego problem i staram się znaleźć rozwiązanie tego problemu. Magazynier ma kartotekę sprzętu dostępnego w magazynie i staram się telefonicznie razem z magazynierem znaleźć coś co klientowi najbardziej odpowiada. Gdy nie ma odpowiedniego sprzętu staramy się nakłonić klienta do zmodyfikowania potrzeby i szukamy czegoś zastępczego. Samo zarejestrowanie wypożyczenia jest dość proste. Najpierw sprawdzam obecność klienta w mojej kartotece klientów na okoliczność zalegania ze zwrotami. Karta klienta zawiera nazwisko, imię, adres, nr pesel i nr dowodu osobistego. Do tej karty są dołączane kopie karty wypożyczenia. Jeżeli klient nie ma karty w mojej kartotece zakładam ją. Jeżeli ma - sprawdzam czy nie zalega za zwrotami. Jeżeli zalega, grzecznie umawiam się z nim na inny dzień - dzień zwrotu zaległości. Gdy nie zalega rejestruje wypożyczenie. Na karcie wypożyczenia rejestruję dane o kliencie oraz dane o wypożyczanym sprzęcie. Jeśli chodzi o klienta wystarczy nazwisko, imię, adres, nr pesel i nr dowodu osobistego. Odnośnie sprzętu zapisuję typ, nazwę, numer inwentarzowy, datę wypożyczenia, przewidywaną datę zwrotu i stawkę dzienną, którą klient akceptuje podpisując kartę. Gdy karta jest już podpisana wystawiam polecenie wydania sprzętu, z którym klient udaje się do magazynu i tam go odbiera. Na tym kończy się obsługa klienta w zakresie wypożyczenia. Gdy klient oddaje sprzęt, udaje się bezpośrednio do magazynu, gdzie otrzymuje potwierdzenie zdania sprzętu. Z tym potwierdzeniem przychodzi do mnie i ja rejestruję zwrot wpisując na karcie wypożyczenia datę faktycznego zwrotu i, co najważniejsze, wystawiam polecenie zapłaty za użytkowanie sprzętu (kwota = ilość dni * stawka dzienna). Klient, po otrzymaniu polecenia zapłaty, idzie do kasy i tam płaci. Na tym kończy się obsługa klienta w zakresie zwrotu sprzętu. dr inż. Witold Rekuć Bazy danych 250
Klient Sprzęt Istotne rzeczowniki Klient Sprzęt Wypożyczenie Zwrot Karta klienta Karta wypożyczenia Polecenie wydania sprzętu Potwierdzenie zdania sprzętu Polecenie zapłaty Zapłata (płaci)? Wypożyczenie Zwrot Wydanie sprzętu Zapłata dr inż. Witold Rekuć Bazy danych 251
2. Związki między encjami - asocjacje Związek dwóch encji reprezentuje w modelu związki między instancjami tych encji mające wspólny sens. Kategoria prawa jazdy Osoba A ma instruktora przyznana 1 B przyznana 2 C A1 przyznana przyznana 3 D przyznana 4 5... ma instruktora... dr inż. Witold Rekuć Bazy danych 252
A ma instruktora przyznana 1 B przyznana 2 C A1 przyznana przyznana 3 D przyznana 4 5... ma instruktora... Kategoria prawa jazdy Osoba Kategoria prawa jazdy może mieć instruktora jako Osoba Osoba może być instruktorem w zakresie Kategorii prawa jazdy Kategoria prawa jazdy może być przyznana Osoba Osoba może mieć Kategorii prawa jazdy dr inż. Witold Rekuć Bazy danych 253
Kategoria prawa jazdy jest przyznana ma Osoba ma instruktora jest instruktorem Kategoria prawa jazdy może mieć wielu instruktorów jako Osoba Osoba może być instruktorem w zakresie wielu Kategorii prawa jazdy Kategoria prawa jazdy może być przyznana wielu Osobom Osoba może mieć wiele Kategorii prawa jazdy dr inż. Witold Rekuć Bazy danych 254
Notacja ogólna dla związku encji Nazwa encji 1 nazwa udziału encji 1* nazwa udziału encji 2* Nazwa encji 2 wiele jeden wymagany (udział encji 1 w związku jest obowiązkowy) opcjonalny (udział encji 2 w związku nie jest obowiązkowy) * Richard Barker używa tu nazwy nazwa końca 1 / nazwa końca 2 dr inż. Witold Rekuć Bazy danych 255
Przykłady Każdy wyrób musi mieć co najwyżej jednego producenta Każdy producent może produkować wiele wyrobów Wyrób ma producenta produkuje Firma dr inż. Witold Rekuć Bazy danych 256
Przykład encji i ich związków reprezentujących pewien rozpatrywany świat (rzeczywistość) Typ urządzenia Kraj Serwisant jest przedmiotem Urządzenie jest charakteryzuje w Miejscowość wykonuje jest produkowane wykonywana przez Naprawa dotyczy produkuje Producent w Miejsce ma siedzibę w dr inż. Witold Rekuć Bazy danych 257
Kardynalność związku Kardynalność związku 1 : 1 Nazwa encji 1 nazwa udziału encji 1 nazwa udziału encji 2 Nazwa encji 2 Kardynalność związku 1 : N Nazwa encji 1 nazwa udziału encji 1 nazwa udziału encji 2 Nazwa encji 2 Kardynalność związku M : N Nazwa encji 1 nazwa udziału encji 1 nazwa udziału encji 2 Nazwa encji 2 dr inż. Witold Rekuć Bazy danych 258
Warianty związku encji [ 0 lub 1 ] : [ 0 lub 1 ] Nazwa encji 1 nazwa udziału encji 1 nazwa udziału encji 2 Nazwa encji 2...... dr inż. Witold Rekuć Bazy danych 259
1 : [ 0 lub 1 ] Zamówienie ma wystawioną wystawiona do Faktura Zamówienie może mieć maksymalnie jedną wystawioną Fakturę Faktura musi być wystawiona do maksymalnie jednego Zamówienia...... dr inż. Witold Rekuć Bazy danych 260
1 : 1 Wpłata ma wystawiony do Dowód wpłaty Wpłata musi mieć maksymalnie jeden wystawiony Dowód wpłaty Dowód wpłaty musi być wystawiony do maksymalnie jednej Wpłaty...... dr inż. Witold Rekuć Bazy danych 261
[ 1 lub więcej ] : [ 0 lub 1] Pracownik jest konserwatorem ma konserwatora Urządzenie Pracownik może być konserwatorem maksymalnie jednego Urządzenia Urządzenie musi mieć co najmniej jednego konserwatora Pracowników...... dr inż. Witold Rekuć Bazy danych 262
1 : [ 0 lub więcej ] Towar figuruje w opisuje Pozycja dokumentu Towar może figurować w zero lub więcej Pozycji dokumentu Pozycja dokuemtu musi opisywać co najwyżej jeden Towar...... dr inż. Witold Rekuć Bazy danych 263
[ 1 lub więcej ] : 1 Pozycja dokumentu wchodzi w skład składa się z Dokument lub więcej...... dr inż. Witold Rekuć Bazy danych 264
[ 0 lub więcej ] : [ 0 lub więcej] Użytkownik portalu jest zainteresowany jest przemiotem zainteresowania Tematyka Użytkownik portalu może być zainteresowany zero lub więcej Tematykami Tematyka może być przedmiotem zainteresowania zero lub więcej Użytkowników portalu...... dr inż. Witold Rekuć Bazy danych 265
[ 0 lub więcej ] : [ 1 lub więcej] Pracownik badawczy jest członkiem ma Zespół badawczy Pracownik badawczy musi być członkiem co najmniej jednego Zespołu badawczego Zespół badawczy musi mieć co najmniej jednego Pracownika badawczego...... dr inż. Witold Rekuć Bazy danych 266
Nazwa encji 1 [ 1 lub więcej ] : [ 1 lub więcej] nazwa udziału encji 1 nazwa udziału encji 2 Nazwa encji 2...... dr inż. Witold Rekuć Bazy danych 267
[ 0 lub więcej ] : [ 0 lub 1] Pracownik jest członkiem ma Zespół badawczy Pracownik może być członkiem maksymalnie jednego Zespołu badawczego Zespół badawczy może mieć zero lub więcej Pracowników...... dr inż. Witold Rekuć Bazy danych 268
Znajdowanie związków (przykład: analiza dokumentu ustrukturalizowanego)........ dr inż. Witold Rekuć Bazy danych 269
Pracownik Dowód wypłaty Wpłata Wpłacający Pozycja dowodu wpłaty Tytuł wpłaty dr inż. Witold Rekuć Bazy danych 270
Pracownik Wpłacający Dowód wypłaty (Wpłata) Pozycja dowodu wpłaty (Pozycja wpłaty) Tytuł wpłaty dr inż. Witold Rekuć Bazy danych 271
Znajdowanie związków (przykład: analiza wypowiedzi, tekstu) Firma nasza obsługuje klientów z terenu naszego miasta. Misją firmy jest odpłatne wypożyczanie osobom fizycznym sprzętu różnego typu (w tym sportowego, AGD itp.). Firmą kieruje dwuosobowy zarząd. Są mu podporządkowane jednostki organizacyjne: dział obsługi klienta, magazyn, księgowość i biuro zamówień. Zadania jednostek wynikają z ich nazw. Zarząd decyduje o uzupełnieniu sprzętu, ściąga należności i zajmuje się typowymi sprawami kierowniczymi. Ja jestem pracownikiem działu obsługi klienta i o tym dziale opowiem. Gdy zjawia się klient próbuję określić jego problem i staram się znaleźć rozwiązanie tego problemu. Magazynier ma kartotekę sprzętu dostępnego w magazynie i staram się telefonicznie razem z magazynierem znaleźć coś co klientowi najbardziej odpowiada. Gdy nie ma odpowiedniego sprzętu staramy się nakłonić klienta do zmodyfikowania potrzeby i szukamy czegoś zastępczego. Samo zarejestrowanie wypożyczenia jest dość proste. Najpierw sprawdzam obecność klienta w mojej kartotece klientów na okoliczność zalegania ze zwrotami. Karta klienta zawiera nazwisko, imię, adres, nr pesel i nr dowodu osobistego. Do tej karty są dołączane kopie karty wypożyczenia. Jeżeli klient nie ma karty w mojej kartotece zakładam ją. Jeżeli ma - sprawdzam czy nie zalega za zwrotami. Jeżeli zalega, grzecznie umawiam się z nim na inny dzień - dzień zwrotu zaległości. Gdy nie zalega rejestruje wypożyczenie. Na karcie wypożyczenia rejestruję dane o kliencie oraz dane o wypożyczanym sprzęcie. Jeśli chodzi o klienta wystarczy nazwisko, imię, adres, nr pesel i nr dowodu osobistego. Odnośnie sprzętu zapisuję typ, nazwę, numer inwentarzowy, datę wypożyczenia, przewidywaną datę zwrotu i stawkę dzienną, którą klient akceptuje podpisując kartę. Gdy karta jest już podpisana wystawiam polecenie wydania sprzętu, z którym klient udaje się do magazynu i tam go odbiera. Na tym kończy się obsługa klienta w zakresie wypożyczenia. Gdy klient oddaje sprzęt, udaje się bezpośrednio do magazynu, gdzie otrzymuje potwierdzenie zdania sprzętu. Z tym potwierdzeniem przychodzi do mnie i ja rejestruję zwrot wpisując na karcie wypożyczenia datę faktycznego zwrotu i, co najważniejsze, wystawiam polecenie zapłaty za użytkowanie sprzętu (kwota = ilość dni * stawka dzienna). Klient, po otrzymaniu polecenia zapłaty, idzie do kasy i tam płaci. Na tym kończy się obsługa klienta w zakresie zwrotu sprzętu. dr inż. Witold Rekuć Bazy danych 272
Klient Sprzęt Słowa kojarzone ze związkami Klient Sprzęt Wypożyczenie Zwrot Karta klienta Karta wypożyczenia Polecenie wydania sprzętu Potwierdzenie zdania sprzętu Polecenie zapłaty Zapłata (płaci)? Wypożyczenie Zwrot Wydanie sprzętu Zapłata dr inż. Witold Rekuć Bazy danych 273
Klient Sprzęt 1 1 Zapłata [0,1] 1 wiele wiele Wypożyczenie 1 1 [0,1] Wydanie sprzętu [0,1] Zwrot dr inż. Witold Rekuć Bazy danych 274
Klient Sprzęt wypożycza wypożyczany Zapłata za Wypożyczenie dotyczy Wydanie sprzętu do Zwrot dr inż. Witold Rekuć Bazy danych 275
3. Atrybuty encji Atrybutem encji jest cecha, własność, istniejących w rozpatrywanym świecie (rzeczywistości), przedmiotów, rzeczy, bytów indywidualnych (indywiduów) reprezentowanych w modelu przez encje. Atrybuty mają swoje nazwy oraz zbiory dopuszczalnych wartości. Numer Data Zbiór dopuszczalnych numerów Zbiór dopuszczalnych dat Nazwa Wynagrodzenie Zbiór 7 dopuszczalnych nazw Zbiór 7 dopuszczalnych wynagrodzeń dr inż. Witold Rekuć Bazy danych 276
Atrybut encji jest to funkcja, która każdej instancji encji przyporządkowuje pewną wartość ze zbioru jego (atrybutu) dopuszczalnych wartości. Przykład Władca Instancje {,,,...} Atrybuty władcy Imię, Numer_kolejny, Przydomek, Rok_urodzenia Zbiór dopuszczalnych wartości(imię) = { Bolesław, Mieszko, Kazimierz, Władysław,... } Zbiór dopuszczalnych wartości(numer_kolejny) = { I, II, III, IV,... } Zbiór dopuszczalnych wartości(przydomek) = { Chrobry, Lambert, Odnowiciel, Herman,... } Zbiór dopuszczalnych wartości(rok_urodzenia) = Liczby_całkowite_>0 dr inż. Witold Rekuć Bazy danych 277
Argument funkcji Imię ( ) = Bolesław Numer_kolejny( ) = I Przydomek ( ) = Chrobry Rok_urodzenia( ) = 967 dr inż. Witold Rekuć Bazy danych 278
Rok_urodzenia( ) = 990 Rok_urodzenia( ) = 1016 Rok_urodzenia( ) = 1043 Rok_urodzenia( ) = 967 dr inż. Witold Rekuć Bazy danych 279
Definicja atrybutów nazwa encji z nazwa_atrybutu_1 z atrybut_atrybutu_2... z atrybut_atrybutu_n Zasady: 1) każdy atrybut jest przypisany do encji, którą charakteryzuje, 2) nazwy atrybutów powinny być w liczbie pojedynczej, 3) nazwy atrybutów powinny proste (w tym, nie powinny zawierać nazwy encji), 4) należy unikać atrybutów wielokrotnych (atrybutów mających ten sam sens ale traktowanych jako odrębne), 5) wartościami atrybutów nie mogą być instancje pewnej encji. z { #, *, o } # - atrybut jest identyfikatorem lub składnikiem identyfikatora * - atrybut musi przyjmować konkretną wartość (wymagany, obowiązkowy) o - atrybut może przyjmować konkretną wartość (niewymagany, opcjonalny) dr inż. Witold Rekuć Bazy danych 280
Atrybuty obowiązkowe (*) i opcjonalne (o) nazwa encji nazwa encji not null # atrybut_1 * atrybut_2...... * atrybut_n null # atrybut_1 o atrybut_2...... o atrybut_n Przykład Osoba # pesel * nazwisko o nazwisko_panieńskie * data_urodzenia * imię1 o imię2 dr inż. Witold Rekuć Bazy danych 281
Atrybuty identyfikujące encje (identyfikatory instancji encji) nazwa encji # atrybut_1 z atrybut_2... z atrybut_n { nazwa encji # atrybut_1... # atrybut_k... z atrybut_n identyfikator prosty (jedno-atrybutowy) identyfikator złożony (wielo-atrybutowy) Przykłady Student # NrAlbumu z Nazwisko z Imię1 z Imię2 uwaga: encje słabe dr inż. Witold Rekuć Bazy danych 282
Encje słabe i ich identyfikacja Encja słaba jest modelem zbioru obiektów, których atrybuty nie są wystarczające do identyfikacji tych obiektów Przykład Firma # Regon * Nazwa Identyfikatorem firmy jest jej numer id = {Regon} ma wystawcę Faktura # numer * Data wystawienia Identyfikatorem faktury jest jej numer plus numer firmy ją wystawiającej id = {Firma.Regon, Numer} wchodzi w skład Pozycja faktury # numer Identyfikatorem Pozycji faktury jest jej numer plus numer faktury plus numer firmy ją wystawiającej id = {Numer, Faktura.Numer, Firma.Regon} dr inż. Witold Rekuć Bazy danych 283
Adres # kraj # miejscowość # ulica # numer identyfikator złożony (wieloatrybutowy) Kraj # kod * nazwa w Miejscowość # kod * nazwa Firma ma siedzibę w identyfikator rozproszony (wieloatrybutowy) w Miejsce # ulica # numer Firma ma siedzibę w dr inż. Witold Rekuć Bazy danych 284
4. Atrybuty związków między encjami Student Przedmiot # indeks * nazwisko * imię1 o imię2 zdaje jest zdawany # kod * nazwa? * data * ocena dr inż. Witold Rekuć Bazy danych 285
Student Przedmiot # indeks * nazwisko * imię1 o imię2 zdaje zdawany # kod * nazwa zdaje zdawany # data * ocena Egzamin Data i ocena są atrybutami związku między studentem i przedmiotem reprezentowanym przez odrębną encję o nazwie, na przykład, Egzamin Identyfikatorem egzaminu w tym świecie jest trójka: {indeks, kod, data}, to znaczy: ocena = f (indeks, kod, data ) dr inż. Witold Rekuć Bazy danych 286
Student Przedmiot # indeks * nazwisko * imię1 o imię2 zdaje zdawany # kod * nazwa zdaje zdawany! * data * ocena Egzamin Identyfikatorem egzaminu w tym świecie jest para: {indeks, kod} }, to znaczy: ocena = f (indeks, kod ) dr inż. Witold Rekuć Bazy danych 287
5. Szczególne struktury związków Związki encji samej z sobą (rekursywne/rekurencyjne) Struktury wielozwiązkowe Związki wykluczające się (wyłączne) Związki nietransferowalne dr inż. Witold Rekuć Bazy danych 288
Związki encji samej z sobą (rekursywne/rekurencyjne) Część-0... Część-11 Część-12 Część-1n 1... Część-121 Część-122 Część-12n 2... Część-1221 Część-1222 Część-122n 22 podrzędna Część # kod * nazwa nadrzędna dr inż. Witold Rekuć Bazy danych 289
podrzędna Część # kod * nazwa nadrzędna Część może mieć co najwyżej jedną nadrzędną Część Część może mieć wiele podrzędnych Części podrzędna Część # kod * nazwa nadrzędna Część może mieć co najwyżej jedną nadrzędną Część Część musi mieć wiele podrzędnych Części podrzędna Część # kod * nazwa nadrzędna Część musi mieć jedną nadrzędną Część może mieć wiele podrzędnych Część Części dr inż. Witold Rekuć Bazy danych 290
wchodzi w skład Część # kod * nazwa składa się z Część może wchodzić w skład wielu Części Część może składać się z wielu Części wchodzi w skład Część # kod * nazwa składa się z Część może wchodzić w skład wielu Części Część musi składać się z wielu Części wchodzi w skład Część # kod * nazwa składa się z Część musi wchodzić w skład wielu Części Część możę składać się z wielu Części wchodzi w skład Część # kod * nazwa składa się z Część musi wchodzić w skład wielu Części Część musi składać się z wielu Części dr inż. Witold Rekuć Bazy danych 291
odnosi się do Przedmiot # kod * nazwa jest odniesieniem dla Przedmiot może odnosić się do jednego Przedmiotu Przedmiot może być odniesieniem dla jednego Przedmiotu odnosi się do Przedmiot # kod * nazwa jest odniesieniem dla Przedmiot może odnosić się do jednego Przedmiotu Przedmiot musi być odniesieniem dla jednego Przedmiotu odnosi się do Przedmiot # kod * nazwa jest odniesieniem dla Przedmiot musi odnosić się do jednego Przedmiotu Przedmiot może być odniesieniem dla jednego Przedmiotu dr inż. Witold Rekuć Bazy danych 292
Struktury wielozwiązkowe Przykład z n=4 Rodzaj samochodu # kod * nazwa przewożący Rodzaj trasy # kod * nazwa do przejechania encja słaba Stawka * stawkastała * stawkakm Te cztery związki stanowią całość wyznaczającą wartość stawek Rodzaj ładunku # kod * opis przewożonego przejazdu Sezon # kod * nazwa (stawkastała, stawkakm) = f(rodzajsamochodu, RodzajTrasy, RodzajŁadunku, Sezon) dr inż. Witold Rekuć Bazy danych 293
Związki wykluczające się (wyłączne) Obowiązująca reguła: instancja encji A może być związana albo z pewną instancją encji B albo z pewną instancją encji C, nigdy jednocześnie z obiema instancjami Notacja Encja A Encja B Encja D Encja C dr inż. Witold Rekuć Bazy danych 294
Przykład Notacja Obowiązująca reguła: Umowa o serwisowanie danego urządzenia może być zawarta albo z firmą (podmiotem gospodarczym) albo z osobą fizyczną, nigdy jednocześnie z obiema Urządzenie Umowa o serwisowa nie Firma Osoba fizyczna dr inż. Witold Rekuć Bazy danych 295
Związki nietransferowalne Obowiązująca reguła: instancja encji B związana z pewną instancją encji A nie może być przekazana innej instancji encji A Notacja Encja A Encja B dr inż. Witold Rekuć Bazy danych 296
Przykład Obowiązująca reguła dotycząca przyznawania dowodów osobistych: dowód osobisty nie może być przekazany (transferowany) innej osobie, nawet wtedy, gdy straci swą ważność do1 do2 do3 Osoba # pesel * nazwisko * imię1 o imię2 otrzymała wydany Dowód osobisty # numer * data_wydania o data_zwrotu jest zatrudniona w Jednostka organizacyjna zatrudnia # symbol * nazwa dr inż. Witold Rekuć Bazy danych 297
6. Związki generalizacji/specjalizacji Pojazd... dr inż. Witold Rekuć Bazy danych 298
Podział zbioru instancji na podzbiory instancji o wspólnych cechach Pojazd Pojazd osobowy...... Pojazd ciężarowy... Pojazd specjalny dr inż. Witold Rekuć Bazy danych 299
Atrybuty wspólne i specyficzne Atrybuty wspólne Pojazd nr rejestracyjny masa własna data produkcji Pojazd osobowy Pojazd ciężarowy Pojazd specjalny liczba drzwi liczba osób model (sedan, kombi, hachback) ładowność rodzaj ładunku rodzaj podwozia rodzaj czynności Atrybuty specyficzne dr inż. Witold Rekuć Bazy danych 300
Związki wspólne i specyficzne Pojazd Producent Atrybuty wspólne Atrybuty specyficzne # nr rejestracyjny * masa własna * data produkcji Pojazd osobowy * liczba drzwi * liczba osób * model Pojazd ciężarowy * ładowność Związek wspólny * regon * nazwa Rodzaj ładunku * kod * nazwa Związki specyficzne Pojazd specjalny * rodzaj podwozia Rodzaj czynności technologicznych * kod * nazwa dr inż. Witold Rekuć Bazy danych 301
Hierarchia generalizacji/specjalizacji Osoba Pracownik Pracownik administracji generalizacja Osoba Pracownik dydaktyczny specjalizacja Pracownik Doktorant Doktorant Pracownik administracji Pracownik dydaktyczny Zasady omawianego modelu/notacji: podzbiory instancji są zawsze rozłączne, instancje niższego poziomu hierarchii posiadają (dziedziczą) atrybuty i związki wyższego poziomu. dr inż. Witold Rekuć Bazy danych 302
IX. Budowa modeli związków encji/modeli klas - studium przypadku dr inż. Witold Rekuć Bazy danych 303
Podatnik składa jest poprzedzane przez jest składane Zgłoszenie NIP 1 poprzedza adresowane do jest adresatem Urząd skarbowy dr inż. Witold Rekuć Bazy danych 304
Miejscowość zlokalizowana w jest miejscem urodzenia Numer identyfilacyjny miejsce urodzenia otrzymał kraj lokalizacji kraj nadania Podatnik Kraj posiada miejsce wydania poświadcza tożsamość wydany w Dokument tożsamości Dowód osobisty Paszport dr inż. Witold Rekuć Bazy danych 305
Miejsce Zamieszkanie # data Miejscowość zlokalizowana w jest miejscem urodzenia miejsce urodzenia Podatnik zamieszkuje kraj lokalizacji kraj nadania Kraj dr inż. Witold Rekuć Bazy danych 306
Miejsce Zamieszkanie # data Zameldowanie # data Miejscowość jest miejscem urodzenia miejsce urodzenia Podatnik zamieszkuje zameldowany dr inż. Witold Rekuć Bazy danych 307
jest miejscem siedziby Oddział/ bank obsługiwany przez otwarty dla Rachunek bankowy Miejsce Miejscowość jest miejscem urodzenia miejsce urodzenia Podatnik posiada dr inż. Witold Rekuć Bazy danych 308
obsługiwany przez Miejsce Klasa działalności (PKD) Miejscowość jest miejscem urodzenia miejsce urodzenia Podatnik prowadzi Działalność gospodarcza dr inż. Witold Rekuć Bazy danych 309
jest miejscem siedziby Oddział/ bank obsługiwany przez otwarty dla Rachunek bankowy Miejsce otwarty dla działalności gospodarczej Miejscowość jest miejscem urodzenia miejsce urodzenia Podatnik posiada używa w działalności dr inż. Witold Rekuć Bazy danych 310
Miejsce Biuro rachunkowe Klasa działalności (PKD) Miejscowość miejsce przechowywania dokumentacji obsługuje jest miejscem urodzenia miejsce urodzenia Podatnik prowadzi Działalność gospodarcza dr inż. Witold Rekuć Bazy danych 311
Miejsce Biuro rachunkowe Klasa działalności (PKD) Miejscowość miejsce przechowywania dokumentacji obsługuje Organ rejestrowy Podatnik prowadzi Działalność gospodarcza rejestruje dokonywany Wpis do rejestru dotyczy zarejestrowana dr inż. Witold Rekuć Bazy danych 312
Miejsce miejsce prowadzenia pozostałe miejsce prowadzenia Miejscowość miejsce przechowywania dokumentacji Organ rejestrowy Podatnik prowadzi Działalność gospodarcza rejestruje dokonywany Wpis do rejestru dotyczy zarejestrowana dr inż. Witold Rekuć Bazy danych 313
Przyjmujący Podatnik prowadzi Działalność gospodarcza zgłaszana Reprezentant podatnika Wpis do rejestru dotyczy zarejestrowana Zgłoszenie NIP 1 dr inż. Witold Rekuć Bazy danych 314
dr inż. Witold Rekuć Bazy danych 315
X. Odwzorowanie modelu związków encji/klas w schemat relacyjnej bazy danych - podstawy metodologiczne Odwzorowanie encji mocnych nazwa encji nazwa encji # atrybut_1 atrybut_2... atrybut_n # atrybut_1 z atrybut_2... z atrybut_n e 1 e 2... e k Encji mocnej odpowiada tabela bazy danych, przy czym: atrybutom encji odpowiadają kolumny tabeli, przy czym: atrybutom obowiązkowym odpowiadają kolumny z wartościami wymaganymi (not null), atrybutom opcjonalnym odpowiadają kolumny z wartościami niewymaganymi (null), identyfikatorom encji odpowiadają klucze tabel. nazwy: encji i atrybutów mogą stać się nazwami tabeli i kolumn, każdej potencjalnej instancji encji odpowiada potencjalny wiersz tabeli. dr inż. Witold Rekuć Bazy danych 316
Przykład Osoba # pesel * nazwisko o nazwisko_panieńskie * data_urodzenia * imię1 o imię2 dr inż. Witold Rekuć Bazy danych 317
Odwzorowanie związku mocnych encji [ 1 ] : [ 0 lub więcej ] nazwa encji1 # atrybut_11 z atrybut_12... z atrybut_1n nazwa encji2 # atrybut_21 z atrybut_22... z atrybut_2k Encji mocnej występującej w związku po stronie 1 odpowiada tabela bazy danych, o nagłówku zgodnym z zasadami określonymi dla encji mocnej. Kluczem tabeli jest identyfikator tej encji. Encji mocnej występującej w związku po stronie wiele odpowiada tabela bazy danych, o nagłówku zgodnym z zasadami określonymi dla encji mocnej, rozszerzonym o klucz obcy do tabeli po stronie 1. Kluczem tabeli jest identyfikator tej encji. dr inż. Witold Rekuć Bazy danych 318
Odwzorowanie związku mocnych encji [ 1 ] : [ 0 lub więcej ] nazwa encji1 # atrybut_11 atrybut_12... atrybut_1n # atrybut_11 z atrybut_12... z atrybut_1n klucz [ 1 ] [ 0 lub więcej ] nazwa encji2 # atrybut_21 atrybut_22... atrybut_2k # atrybut_21 z atrybut_22... z atrybut_2k klucz obcy klucz dr inż. Witold Rekuć Bazy danych 319
Przykład Województwo # kod * nazwa Miejscowość # kod * nazwa dr inż. Witold Rekuć Bazy danych 320
Zamówienie Zamówienie # numer z data... # numer data... 1 2 3 4 # numer z data... Faktura Faktura # numer nr_zam data... 1 1 2 3 klucz obcy dr inż. Witold Rekuć Bazy danych 321
Odwzorowanie związku encji mocnej i słabej [ 1 ] : [ 0 lub więcej ] nazwa encji1 # atrybut_11 z atrybut_12... z atrybut_1n nazwa encji2 # atrybut_21 z atrybut_22... z atrybut_2k Encji mocnej występującej w związku po stronie 1 odpowiada tabela bazy danych, o nagłówku zgodnym z zasadami określonymi dla encji mocnej. Kluczem tabeli jest identyfikator tej encji. Encji słabej występującej w związku po stronie wiele odpowiada tabela bazy danych, o nagłówku zgodnym z zasadami określonymi dla encji mocnej, rozszerzonym o klucz obcy do tabeli po stronie 1. Kluczem tej tabeli jest para (identyfikator encji mocnej, identyfikator encji słabej). dr inż. Witold Rekuć Bazy danych 322
Przykład 1 Student # nr * nazwisko zdaje Przedmiot # kod * nazwa jest zdawany Egzamin # data * ocena dr inż. Witold Rekuć Bazy danych 323
Przykład 2 Firma # nr * nazwa * ulica * kodmjc * telefon jest sprzedawcą jest nabywcą Dokument # nrfaktury * data dr inż. Witold Rekuć Bazy danych 324
Przykład 3 # nr * nazwa Klub? Spotkanie # nr_kolejny * wynik * data # nr * nazwa Stadion dr inż. Witold Rekuć Bazy danych 325
Odwzorowanie związku encji [ 0 lub więcej ] : [ 0 lub więcej ] nazwa encji1 # atrybut_11 z atrybut_12... z atrybut_1n nazwa encji1 # atrybut_11 z atrybut_12... z atrybut_1n nazwa encji12 nazwa encji2 # atrybut_21 z atrybut_22... z atrybut_2k nazwa encji2 # atrybut_21 z atrybut_22... z atrybut_2k Związek encji wiele do wielu zastępujemy parą związków encji, w których uczestniczy encja słaba bez atrybutów. dr inż. Witold Rekuć Bazy danych 326
Przykład # ISBN * Tytuł Książka # ISBN * Tytuł Książka Autorstwo Autor # pesel * nazwisko Autor # pesel * nazwisko dr inż. Witold Rekuć Bazy danych 327
# ISBN * Tytuł Książka Książka # ISBN Tytuł Autorstwo Autorstwo # ISBN # pesel Autor # pesel * nazwisko Autor # pesel Nazwisko dr inż. Witold Rekuć Bazy danych 328
Odwzorowanie związków jest ( ISA ) Dwie strategie: całej strukturze przyporządkujemy jedną relację bazy danych (podejście z NULL). relację bazy danych przyporządkujemy każdej encji (podejście ER), dr inż. Witold Rekuć Bazy danych 329
Przykład Pracownik Osoba Student Osoba # pesel * nazwisko Student # indeks * średnia Student stacjonarny * dochód Student nie stacjonarny Student stacjonarny Student nie stacjonarny * zawód Pracownik # numer * publikacje dr inż. Witold Rekuć Bazy danych 330
podejście z NULL WszystkieOsoby pesel nazwisko indeks średnia nrprac publikacje dochód zawód typ p1 n1 i1 4,5 null null 800 null ss p2 n2 i2 3,5 null null null ochroniarz sn p3 n3 null null pr1 3 null null pr dr inż. Witold Rekuć Bazy danych 331
podejście obiektowo-związkowe (ER) Osoba pesel p1 p2 p3 nazwisko n1 n2 n3 Student pesel indeks średnia p1 i1 4,5 p2 i2 3,5 Pracownik pesel nrprac publikacje p3 pr1 3 StudentST pesel dochód p1 800 StudentNST pesel zawód p2 ochroniarz dr inż. Witold Rekuć Bazy danych 332
dr inż. Witold Rekuć Bazy danych 333
dr inż. Witold Rekuć Bazy danych 334
XI. Odwzorowanie modelu związków encji w schemat bazy danych - studium przypadku. dr inż. Witold Rekuć Bazy danych 335
dokument tożsamości następstwo zgłoszeń dr inż. Witold Rekuć Bazy danych 336
XII. Rola baz danych w systemach informacyjnych zarządzania. 1. System informacyjny zarządzania 2. Baza danych w systemach informacyjnych zarządzania 3. Modelowy cykl życia systemu informatycznego dr inż. Witold Rekuć Bazy danych 337
1. System informacyjny zarządzania Przedsiębiorstwo, firma, instytucja itp. i otoczenie Podmioty zewnętrzne System informacyjny (przepływ informacji) Maszyny i urządzenia Robotnicy, pracownicy ruchu Kadra administracyjna Kierownicy, menedżerowie dr inż. Witold Rekuć Bazy danych 338
2. Baza danych w systemach informacyjnych zarządzania System informacyjny (przepływ informacji) Baza danych Kierownicy, menedżerowie Podmioty zewnętrzne Kadra administracyjna Robotnicy, pracownicy ruchu Maszyny i urządzenia dr inż. Witold Rekuć Bazy danych 339
System informatyczny (przepływ informacji) Baza danych Kierownicy, menedżerowie Podmioty zewnętrzne Oprogramowanie Kadra administracyjna Robotnicy, pracownicy ruchu Maszyny i urządzenia dr inż. Witold Rekuć Bazy danych 340
Systemy ewidencyjno-sprawozdawcze Kierownicy, menedżerowie Analitycy dr inż. Witold Rekuć Bazy danych 341
Analitycy Kierownicy, menedżerowie dr inż. Witold Rekuć Bazy danych 342
Analitycy Kierownicy, menedżerowie dr inż. Witold Rekuć Bazy danych 343
3. Modelowy cykl życia systemu informatycznego dr inż. Witold Rekuć Bazy danych 344