Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki Pokój: 57/B4 E-mail: witold.rekuc@pwr.edu.pl Telefon: 7-0--5 www: kbo.pwr.edu.pl/pracownik/rekuc dr inż. Witold Rekuć Technologia przetwarzania danych
TECHNOLOGIA PRZETWARZANIA DANYCH Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie Literatura. C. Date. Wprowadzenie do systemów baz danych. WNT, 000.. J. Ullman, J. Widom. Podstawowy wykład z systemów baz danych. WNT, 000.. Materiały do wykładu dr inż. Witold Rekuć Technologia przetwarzania danych
dr inż. Witold Rekuć Technologia przetwarzania danych
dr inż. Witold Rekuć Technologia przetwarzania danych 4
Plan wykładu I. Opis programu przedmiotu, organizacja zajęć oraz zasady zaliczania i oceniania. Technologia relacyjnych baz danych. Aplikacja z bazą danych. Relacyjna baza danych i jej struktura. II. III. IV. Operacje aktualizacji danych. Więzy integralności. Formularze Definicja, zastosowanie i realizacja operacji na tabelach: selekcja, projekcja, równozłączenie, theta-złączenie, złączenie naturalne. V. Raporty VI. Definicja, zastosowanie i realizacja operacji na tabelach: operacje teoriomnogościowe: suma, iloczyn, różnica niesymetryczna, dopełnienie. VII. Definicja, zastosowanie i realizacja operacji na tabelach: dzielenie. VIII. Podstawy normalizacji relacyjnej bazy danych: zależności funkcyjne i ich rodzaje, dekompozycja relacji i ich schematów, formy normalne schematów relacji. IX. Podsumowanie. Sprawdzian teoretyczny (P) dr inż. Witold Rekuć Technologia przetwarzania danych 5
I. Technologia relacyjnych baz danych. Aplikacja z bazą danych. Relacyjna baza danych i jej struktura.. Podstawowe pojęcia systemu bazy danych.. Założenia modelu relacyjnego.. Klucze tabel (relacji). dr inż. Witold Rekuć Technologia przetwarzania danych 6
. Podstawowe pojęcia systemu bazy danych Baza danych System bazy danych System zarządzania bazą danych Meta baza danych (opis bazy danych) Interfejs aplikacja-szbd Aplikacje/programy Interfejs użytkowników aplikacji... Język użytkowników bazy danych... Język administratora /projektanta bazy danych Użytkownicy aplikacji Użytkownicy bazy danych Administrator /projektant bazy danych dr inż. Witold Rekuć Technologia przetwarzania danych 7
Baza danych Meta baza danych (opis bazy danych) System zarządzania bazą danych Aplikacje/programy Formularze Raporty Formularze Raporty Język użytkowników aplikacji... Język użytkowników bazy danych... Język administratora /projektanta bazy danych Użytkownicy aplikacji Użytkownicy bazy danych Administrator bazy danych dr inż. Witold Rekuć Technologia przetwarzania 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ć Technologia przetwarzania 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ć Technologia przetwarzania danych 0
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ć Technologia przetwarzania danych
. Założenia modelu relacyjnego Laboratorium IBM San Jose (California) A relational model for large shared data banks Communication of the ACM, :6,970 System R - prototyp oprogramowania Edgar F. Codd dr inż. Witold Rekuć Technologia przetwarzania danych
Czym jest relacyjna baza danych? dr inż. Witold Rekuć Technologia przetwarzania danych
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ć Technologia przetwarzania danych 4
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ć Technologia przetwarzania danych 5
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ć Technologia przetwarzania danych 6
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) -768 +767 +, -, *, <, >, >=,... Pojedyncza precyzja (liczba rzeczywista).408e8....4098e 45; 0;.4098E 45....408E8 +, -, *, /, <, >, >=,... Tak/Nie (boolean) {PRAWDA, FAŁSZ} and, or, not,... Tekst krótki (short text) ciag znaków o długości 0...55 +, &, <, >, >=,... Data krótka 00-0-0 9999-- <, >, =,... dr inż. Witold Rekuć Technologia przetwarzania danych 7
Przykłady definicji kolumn Nazwa kolumny Typ danej Ograniczenia Nrklienta Liczba całkowita between and 0000 >= and <=0000 Kapitał Pojedyncza precyzja >=0000 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ć Technologia przetwarzania danych 8
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ć Technologia przetwarzania danych 9
Dodanie nowego wiersza/rekordu do tabeli Klienci Nowy wiersz 7 Beck Andrzej Jawalska 7 7 Zbiór dopuszczalnych numerów klientów Beck Zbiór dopuszczalnych nazwisk Andrzej Zbiór dopuszczalnych imion Jawajska 7 Zbiór dopuszczalnych adresów dr inż. Witold Rekuć Technologia przetwarzania danych 0
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ę Imię Nr telefonu Klinton Regan Joanna 4 Regan Abejowska Hilary Joanna 4 55 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Technologia przetwarzania danych
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ę Imię Nr telefonu Klinton Regan Joanna null 4 4 Regan Audiński Pafawagow Abejowska null null Hilary Józef Paweł Joanna null null 4 55 null null 5 Jordański null Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina null null dr inż. Witold Rekuć Technologia przetwarzania danych
Reakcja systemu bazy danych na dane niezgodne z ograniczeniem NULL not null Osoba Nr Nazwisko Nazwisko panieńskie Imię Imię Nr telefonu Klinton Regan Joanna null 4 Regan Abejowska Hilary Joanna 4 55 Audiński null Józef null null 4 Pafawagow null Paweł null null 5 Jordański null Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina null null 7 Beck Andrzej null Jerzy 45 987 odrzucony! 7 Beck null Andrzej Jerzy 45 987 przyjęty! dr inż. Witold Rekuć Technologia przetwarzania danych
Nieokreśloność wartości w kolumnach i logika trójwartościowa 6 Dolmel Elektryczna 45 4 Czy Telefon = 45 4? PRAWDA (TRUE) 6 Dolmel Elektryczna 4 09 FALSZ (FALSE) 6 Dolmel Elektryczna NIE WIEM (UNKNOWN) NULL trzecia wartość logiczna dr inż. Witold Rekuć Technologia przetwarzania danych 4
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: i, 05-0-09 i 05-0-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 tekst o zerowej długości 6 Dolmel Elektryczna Czy Telefon is NULL? FALSZ PRAWDA NULL dr inż. Witold Rekuć Technologia przetwarzania danych 5
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ć Technologia przetwarzania danych 6
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ć Technologia przetwarzania danych 7
Reakcja systemu bazy danych na wartości niezgodne z ograniczeniem zerowej długości danych tekstowych not zero-length not null Osoba Nr Nazwisko Nazwisko panieńskie Imię Imię Nr telefonu Klinton Regan Joanna null 4 Regan Abejowska Hilary Joanna 4 55 Audiński null Józef null null 4 Pafawagow null Paweł null null 5 Jordański null Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina null null 7 Andrzej Andrzej 45 987 odrzucony! 7 Beck null Andrzej Jerzy przyjęty! 7 Beck null Andrzej null null przyjęty! dr inż. Witold Rekuć Technologia przetwarzania danych 8
Nieokreśloność wartości w kolumnach i operacje na wartościach oraz 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: 00 + 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: 00 >= 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, wszędzie gdzie jest to możliwe i konieczne, były zawsze określone. dr inż. Witold Rekuć Technologia przetwarzania danych 9
Zachowanie systemu bazy danych podczas wykonywania operacji na danych nieokreślonych Nr Nazwa Kwota Przykład MS ACCESS 4 5 6 Nazwa Nazwa null Nazwa5 Nazwa6 004 4 0 suma(kwota) = 7 średnia(kwota) = 7,75 (=7/4) policz(kwota) = 4 policz(nazwa) = 5 Zachowanie systemu bazy danych podczas ustalania relacji między danymi nieokreślonymi Nr Nazwa Nazwa Kwota 004 4 Kwota 00 0 Wyświetl wiersze, dla których: Kwota<Kwota 4 Nazwa 0 0 0 Nr Nazwa Kwota Kwota 5 Nazwa5 4 0 0 6 Nazwa6 400 6 Nazwa6 400 dr inż. Witold Rekuć Technologia przetwarzania danych 0
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ć Technologia przetwarzania danych
Uwagi podsumowujące i uzupełniające. 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ę Imię Nr telefonu Klinton Regan Joanna 4 Regan Abejowska Hilary Joanna 4 55 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina Osoba Nr Nazwisko Nazwisko panieńskie Imię Imię Nr telefonu Klinton Regan Joanna 4 Regan Abejowska Joanna Hilary 4 55 Audiński Józef 4 Pafawagow Paweł 5 Jordański Adam Andrzej 56 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Technologia przetwarzania danych
. 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ę Imię Nr telefonu Klinton Regan Joanna 4 Regan Abejowska Hilary Joanna 4 55 Audiński Józef 4 Pafawagow Paweł 5 Jordański Andrzej Adam 56 6 Dolmedicka Dolmedicka Janina Osoba Nr Nazwisko Nazwisko panieńskie Imię Imię Nr telefonu Klinton Regan Joanna 4 5 Jordański Andrzej Adam 56 Audiński Józef 4 Pafawagow Paweł Regan Abejowska Hilary Joanna 4 55 6 Dolmedicka Dolmedicka Janina dr inż. Witold Rekuć Technologia przetwarzania danych
. Wiersze tabeli mogą tworzyć wielozbiory (zestawy wierszy z duplikatami) po warunkiem, że dopuszcza się duplikaty wierszy. Osoba Nr Nazwisko Nazwisko panieńskie Imię Imię Nr telefonu 5 Klinton Jordański Audiński Regan Joanna Andrzej Józef Adam 4 56 wiersze zduplikowane 4 Pafawagow Paweł 6 5 4 Regan Abejowska Hilary Joanna 4 55 Dolmedicka Dolmedicka Janina Jordański Andrzej Adam 56 Pafawagow Paweł wiersze zduplikowane dr inż. Witold Rekuć Technologia przetwarzania danych 4
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 Klinton Regan Audiński Regan Abejowska Joanna Hilary Józef 998 998 998 09 0 4 4 55 struktura niedopuszczalna 4 5 Pafawagow Jordański Paweł Andrzej 998 998 08 0 08 56 6 Dolmedicka Dolmedicka Janina 998 04 4 Osoba Nr Nazwisko Nazwisko panieńskie Imię Data urodzenia Nr telefonu 4 5 Klinton Regan Audiński Pafawagow Jordański Regan Abejowska Joanna Hilary Józef Paweł Andrzej 998/09/ 998/0/ 998// 998/08/08 998/0/ 4 4 55 56 struktura dopuszczalna 6 Dolmedicka Dolmedicka Janina 998/04/4 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ć Technologia przetwarzania danych 5
. Klucze tabel (relacji) Kluczem tabeli nazywamy niepusty zbiór kolumn (atrybutów) taki, że: a) dla dowolnej pary różnych wierszy t i t 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 /0 /0 0 0.0.0.0.0 K = {Nr, NrSprzedawcy} /0 /0 0 0 0.0.0.04.0 Kluczem w tabeli Dokumenty nie może być zbiór: /0 4/0 0 0 4 7.0.0.0.0 K = {Nr} K ' = {Nr, NrSprzedawcy, NrNabywcy} dr inż. Witold Rekuć Technologia przetwarzania danych 6
Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) Klucz={Pesel}, Klucz={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ść) Klucz={Nr, NrSprzedawcy, Np}, Klucz={Nr, NrSprzedawcy, SmbTow} dr inż. Witold Rekuć Technologia przetwarzania danych 7
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:. Każda tabela, będąca zbiorem wierszy posiada co najmniej jeden klucz (bo nie zawiera dwóch lub więcej identycznych wierszy).. Jeżeli tabela ma więcej niż jeden klucz, to klucze te różnią się co najmniej jedną kolumną (atrybutem).. Klucze mogą być proste (jednokolumnowe) lub złożone (wielokolumnowe) dr inż. Witold Rekuć Technologia przetwarzania danych 8
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 tabeli nazywa się kandydującymi Przykład: Przedmiot (Kod, Nazwa, Opis), Kluczem podstawowy: K={Kod} Klucz kandydujący: K={Nazwa} Określoność wartości klucza podstawowego Klucz podstawowy tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) dr inż. Witold Rekuć Technologia przetwarzania danych 9
Definicja tabeli w MS ACCESS (język graficzny) dr inż. Witold Rekuć Technologia przetwarzania 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ć Technologia przetwarzania danych 4
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ć Technologia przetwarzania danych 4
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 mogły być prowadzone do bazy danych (aby była ona 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ć Technologia przetwarzania danych 4
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 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna Wstaw wiersz - Makrosoft Informatyczna A NULL Naruszenie więzów dziedziny dr inż. Witold Rekuć Technologia przetwarzania 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 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna Wstaw wiersz NULL Makrosoft Informatyczna NULL Naruszenie więzów dziedziny Naruszenie więzów klucza Wstaw wiersz Makrosoft Informatyczna NULL dr inż. Witold Rekuć Technologia przetwarzania danych 45
Więzy integralności referencyjnej Odwołanie, odniesienie, referencja jednej tabeli do drugiej. Co to znaczy? Przykład Firmy Nr 0 4 Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc Telefon 4 4 55 56 Miejscowości Kod Nazwa Wrocław Opole Wałbrzych KodWoj DL OP DL 5 Dolmed Medyczna 4 Kraków MP dr inż. Witold Rekuć Technologia przetwarzania danych 46
Dlaczego odwołanie, odniesienie, referencja jednej tabeli do drugiej musi być przedmiotem więzów integralności? Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 4 55 56 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL i OP dr inż. Witold Rekuć Technologia przetwarzania danych 47
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 56 4 Kraków MP 5 Dolmed Medyczna 6 TP SA Telewizyjna 5 45 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ć Technologia przetwarzania danych 48
Firmy Nr Nazwa Ulica KodMjc Telefon Miejscowości Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 4 55 56 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna 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ć Technologia przetwarzania danych 49
Firmy Nr Nazwa Ulica KodMjc Telefon Miejscowości Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL 4 Abeja Audi Pafawag Iase Abejowska Audiego Wagonowa Energetyczna 4 55 56 5 4 Opole Wałbrzych Kraków OP DL MP 5 Dolmed Medyczna Zmień kod Miejscowości na 4 Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? Odpowiedź: DL, OP,??? dr inż. Witold Rekuć Technologia przetwarzania danych 50
Firmy (Tabela odwołująca się) Miejscowości (Tabela odniesienia) Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Kraków MP 4 Iase Energetyczna 56 5 Dolmed Medyczna 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ć Technologia przetwarzania danych 5
Firmy (Tabela odwołująca się) Miejscowości (Tabela odniesienia) Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Kraków MP 4 Iase Energetyczna 56 5 Dolmed Medyczna 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ć Technologia przetwarzania danych 5
Firmy (Tabela odwołująca się) Miejscowości (Tabela odniesienia) Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL 4 5 Pafawag Iase Dolmed Wagonowa Energetyczna Medyczna 56 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ą odniesienia (docelowa) 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 odniesienia zawierający wartość tego klucza. dr inż. Witold Rekuć Technologia przetwarzania danych 5
Przykład : Student (Nr, Nazwisko, Adres) Klucz={Nr} Egzamin (NrStudenta, KodPrzedmiotu, Data, Ocena) Klucz={NrStudenta, KodPrzedmiotu, Data} KluczObcy do tabeli Student KO={NrStudenta} KluczObcy do tabeli Przedmiot KO={KodPrzedmiotu} Przedmiot (Kod, Nazwa) Klucz={Kod} tabela odniesienia tabela odwołująca się tabela odniesienia Przykład : 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 odniesienia? dr inż. Witold Rekuć Technologia przetwarzania danych 54
Przykład : dr inż. Witold Rekuć Technologia przetwarzania danych 55
Przykład - 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. Klucze obce mogą być proste (jednokolumnowe) lub złożone (wielokolumnowe).. Skład klucza obcego musi odpowiadać składowi klucza, do którego on się odwołuje. dr inż. Witold Rekuć Technologia przetwarzania danych 56
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:. Data dostawy nie może być wcześniejsza od daty zamówienia tej dostawy.. Dla każdego promotora liczba dyplomatów nie może być większa od 5.. Nie może być wykonane wypożyczenie książki czytelnikowi, który zalega ze zwrotem innych książek. dr inż. Witold Rekuć Technologia przetwarzania danych 57
Baza danych Meta baza danych (opis bazy danych) System zarządzania bazą danych Aplikacje/programy Formularze Raporty Formularze Raporty Język użytkowników aplikacji... Użytkownicy aplikacji Język użytkowników bazy danych... Użytkownicy bazy danych Język administratora /projektanta bazy danych Administrator /projektant bazy danych dr inż. Witold Rekuć Technologia przetwarzania danych 58
III. Formularze Dwie tabele z relacją :n Tabela Formularz Formularz z pod-formularzem dr inż. Witold Rekuć Technologia przetwarzania danych 59
Dwie tabele z relacją :n Formularz połączone dr inż. Witold Rekuć Technologia przetwarzania danych 60
Kolumnowy Tabelaryczny dr inż. Witold Rekuć Technologia przetwarzania danych 6
Arkusz danych Wyjustowany dr inż. Witold Rekuć Technologia przetwarzania danych 6
IV. 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ć Technologia przetwarzania danych 6
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ć Technologia przetwarzania danych 64
Przykład r({a,b,c,d}) A B C D a5 b c d a6 b4 c5 d a6 b4 c d a6 b4 c d a b c d {C,D} ( r ({A,B,C,D}) ) = q({c,d}) C c c5 c c c D d d d d d {A,B} ( r ({A,B,C,D}) ) = q({a,b}) A a5 a6 a B b b4 b dr inż. Witold Rekuć Technologia przetwarzania danych 65
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 4 0 Nasza Firma Nasza 4 Abeja 4 55 Abeja Abejowska 4 55 Audi Pafawag {Nazwa, Telefon} Audi Pafawag Audiego Wagonowa Iase 56 4 Iase Energetyczna 56 Dolmed 5 Dolmed Medyczna wiersze zredukowane do X={Nazwa, Telefon} dr inż. Witold Rekuć Technologia przetwarzania danych 66
dr inż. Witold Rekuć Technologia przetwarzania danych 67
Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) dr inż. Witold Rekuć Technologia przetwarzania danych 68
q Firmy KodMjc Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 {KodMjc} Audi Pafawag Audiego Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna dr inż. Witold Rekuć Technologia przetwarzania danych 69
Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) dr inż. Witold Rekuć Technologia przetwarzania danych 70
q KodMjc {KodMjc} Firmy Nr Nazwa 0 Nasza Firma Abeja Audi Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon 4 4 55 4 Iase Energetyczna 56 5 Dolmed Medyczna dr inż. Witold Rekuć Technologia przetwarzania danych 7
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 00 00 00 00 00 00 {Obrót} Styczeń Luty Marzec Kwiecień Maj czerwiec 00 00 00 00 00 00 Zostaw duplikaty w tabeli wynikowej dr inż. Witold Rekuć Technologia przetwarzania danych 7
W języku SQL: select nazwa, telefon from Firmy; select distinct nazwa, telefon from Firmy; select * from Firmy; dr inż. Witold Rekuć Technologia przetwarzania danych 7
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ć Technologia przetwarzania danych 74
Przykład r({a,b,c,d}) A B C D a5 a a6 4 a5 a6 4 a a6 4 a a a r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D a6 4 a5 a6 4 a a6 4 a r ({A,B,C,D}) ) = q ({A,B,C,D}) B A B C D and D< a6 4 a r ({A,B,C,D}) ) = q ({A,B,C,D}) B=4 or D< A B C D a5 a a6 4 a5 a6 4 a a6 4 a a a dr inż. Witold Rekuć Technologia przetwarzania danych 75
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 Nazwa Wrocław KodWoj DL Wrocław DL Wałbrzych DL Kod Nazwa KodWoj KodWoj=DL Opole OP Wałbrzych DL 4 Warszawa MZ 5 6 Katowice Kraków SL MP dr inż. Witold Rekuć Technologia przetwarzania danych 76
dr inż. Witold Rekuć Technologia przetwarzania danych 77
q({... })= (KodMjc=) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) and dr inż. Witold Rekuć Technologia przetwarzania danych 78
q({... })= (KodMjc=) or (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) or dr inż. Witold Rekuć Technologia przetwarzania danych 79
Realizacja selekcji w SQL select * from Miejscowości where KodWoj = DL ; select * from Firmy where (KodMjc = ) and (Telefon IS NULL); select * from Firmy where (KodMjc = ) or (Telefon IS NULL); dr inż. Witold Rekuć Technologia przetwarzania danych 80
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=) and (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) (Telefon is NULL) Firmy q Nr 0 Nazwa Nasza Firma Ulica Nasza KodMjc Telefon 4 Nazwa Abeja Abejowska 4 55 Pafawag Pafawag Wagonowa Audi {Nazwa} ( (KodMjc=) and (Telefon is NULL) Audi Audiego 4 Iase Energetyczna 56 5 Dolmed Medyczna dr inż. Witold Rekuć Technologia przetwarzania danych 8
q({nazwa})= {Nazwa} ( (KodMjc=) and (Telefon is NULL) (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) W języku graficznym: dr inż. Witold Rekuć Technologia przetwarzania danych 8
W języku SQL: select Nazwa from Firmy where KodMjc = and Telefon IS NULL; dr inż. Witold Rekuć Technologia przetwarzania danych 8
Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. Firmy Nr Nazwa 0 Nasza Firma Abeja Audi Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon 4 4 55 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL Wojewodztwa Kod Nazwa DL Dolnośląskie OP Opolskie 4 Iase Energetyczna 56 5 Dolmed Dokumenty Medyczna PozycjeDokumentu Nr NrSprzerdawcy Np SmbTow CenaNetto Ilość Nr NrSprzerdawcy NrNabywcy Data /0 0 00,00 0 /0 0.0.0 /0 0 00 4,50 00 /0 0.0.0 /0 0 004 7,00 50 /0 0 0.0.0 /0 00,00 00 /0 0.04.0 /0 00,00 0 /0 0 7.0.0 /0 004 7,50 0 4/0 0 4.05.0 /0 0 00,00 45 Towary Smb Nazwa 00 Pasztet 00 Mortadela Jm kg kg StawkaVat 7% 7% /0 /0 /0 /0 /0 0 0 0 4 00 004 005 00 00 4,50 7,80,0,00 4,60 5 5 00 0 50 00 004 Chipsy Kawa Jakobs paczka 400g paczka 00g 7% 7% 4/0 0 005,60 90 005 Makrela kons. puszka 50g 7% dr inż. Witold Rekuć Technologia przetwarzania danych 84
Złączenie tabel 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ć Technologia przetwarzania danych 85
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ć Technologia przetwarzania danych 86
Przykład r (A,B,C,D) A B C D a5 b c d a6 b4 c d a6 b4 c d a6 b4 c d a b c d S (CK, CN) CK CN c cn c cn c cn c4 cn4 q(a,b,c,d,ck,cn) := r [ C=CK ] s A B C D CK CN a5 b c d c cn a6 b4 c d c cn a6 b4 c d c cn a6 b4 c d c cn a b c d c cn dr inż. Witold Rekuć Technologia przetwarzania danych 87
Przykład Firmy Nr Nazwa 0 Nasza Firma Abeja Audi Pafawag Ulica Nasza Abejowska Audiego Wagonowa KodMjc Telefon 4 4 55 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL 4 Iase Energetyczna 56 5 Dolmed Medyczna Firmy [ KodMjc = Kod ] Miejscowości Firmy Nr 0 4 Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc Telefon 4 4 55 56 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL 5 Dolmed Medyczna dr inż. Witold Rekuć Technologia przetwarzania danych 88
Firmy Nr 0 4 Nazwa Nasza Firma Abeja Audi Pafawag Iase Ulica Nasza Abejowska Audiego Wagonowa Energetyczna KodMjc Telefon 4 4 55 56 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL 5 Dolmed Medyczna Firmy [ KodMjc = Kod ] Miejscowości Zestawienie firm Nr Nazwa Ulica KodMjc Telefon Kod Nazwa (Mjc) KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Wałbrzych DL Audi Audiego Opole OP Pafawag Wagonowa Opole OP 4 Iase Energetyczna 56 Wałbrzych DL 5 Dolmed Medyczna Wrocław DL dr inż. Witold Rekuć Technologia przetwarzania danych 89
Firmy [ KodMjc = Kod ] Miejscowości dr inż. Witold Rekuć Technologia przetwarzania danych 90
Firmy [ ] Miejscowości = Firmy Miejscowości - iloczyn kartezjański dr inż. Witold Rekuć Technologia przetwarzania danych 9
Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 56 5 Dolmed Medyczna Firmy [ ] Miejscowości = Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod Nazwa KodWoj - iloczyn kartezjański { { { { { { 0 0 0 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 4 4 4 4 55 4 55 4 55 56 56 56 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ć Technologia przetwarzania danych 9
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ć Technologia przetwarzania danych 9
równo-złączenie projekcja selekcja dr inż. Witold Rekuć Technologia przetwarzania danych 94
Podaj zestawienie towarów sprzedawanych poszczególnych województwach Iloczyn kartezjański tabel dr inż. Witold Rekuć Technologia przetwarzania danych 95
Równo-złączenie wielu tabel dr inż. Witold Rekuć Technologia przetwarzania danych 96
Równo-złączenie tabel po polach o tych samych nazwach Te pola mają identyczne nazwy, ale różny sens!!! dr inż. Witold Rekuć Technologia przetwarzania danych 97
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant ) Znajdź dane firmsprzedawców dr inż. Witold Rekuć Technologia przetwarzania danych 98
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant ) Znajdź dane firmnabywców dr inż. Witold Rekuć Technologia przetwarzania danych 99
Równo-złączenie tabel po polach o różnych nazwach, ale mających ten sam sens (wariant ) Znajdź dane firm, w dokumencie występują jednocześnie w dwóch rolach: sprzedawcy i nabywcy dr inż. Witold Rekuć Technologia przetwarzania danych 00
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ć Technologia przetwarzania danych 0
Zadania F( Nr, Nazwa ) T ( Smb, Nazwa ) n a na n b nb n c nc 4 n4 D (NrD, NrS, NrN,Data) P ( NrD, NrS, Np, Smb, Ilosc, Cena) d a 0 d b 5 d a 0 4 d a 5 4 4 d b 7 c 4 5 a 5 c 0 5 4 4 b 4 4 c 0 5 F Firmy, T Towary, D Dokumenty, P PozycjeDokumentu dr inż. Witold Rekuć Technologia przetwarzania danych 0
Oblicz: ) {Data}(D) ) NrS= and NrN=(D), NrS= or NrN=(D) ) {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ń: ) Podaj nazwy firm, które coś kupiły w dniu 'd'. ) Podaj nazwy towarów kupionych przez firmę o nazwie 'n'. ) Podaj dni, w których kupiono towar o nazwie 'na'. 4) Podaj nazwy towarów sprzedanych po cenie >. dr inż. Witold Rekuć Technologia przetwarzania danych 0
Podaj nazwy firm, które coś kupiły w dniu 'd'. {Nazwa}( Data= d (F[Nr=NrN]D)) dr inż. Witold Rekuć Technologia przetwarzania danych 04
Podaj nazwy towarów kupionych przez firmę o nazwie 'n'. {T.Nazwa} F.Nazwa= n ( F.Nazwa= n T[Smb=Smb]P[NrD=NrD,NrS=NrS]D[NrN=Nr]F)) dr inż. Witold Rekuć Technologia przetwarzania danych 05
Podaj dni, w których kupiono towar o nazwie 'na'. {D.Data} T.Nazwa= na (T[Smb=Smb] T.Nazwa= na P[NrD=NrD,NrS=NrS]D)) dr inż. Witold Rekuć Technologia przetwarzania danych 06
Podaj nazwy towarów sprzedanych po cenie >. {T.Nazwa} Cena> (T[Smb=Smb]P)) dr inż. Witold Rekuć Technologia przetwarzania danych 07
Złączenie tabel 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ć Technologia przetwarzania danych 08
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 v v t v v Θ v v dr inż. Witold Rekuć Technologia przetwarzania danych 09
Przykład r A B r C D a a5 a5 a a a6 4 a6 4 a a r [ B > D ] r = A B C D a5 a a6 4 a5 a6 4 a a6 4 a a a dr inż. Witold Rekuć Technologia przetwarzania danych 0
Przykład Grupa Autokar Nazwa Liczność Numer rej Pojemność Pielgrzymka 0 WRU 49 5 Studenci 50 DW 658 45 Emeryci 55 WCX 8 60 Szkoła 0 WWX 6745 5 Urząd Miejski 0 WRA 0 Pafawag 0 DW 6789 0 Podać autokary, które mogą obsłużyc poszczególne grupy turystyczne [Grupa] [Liczność] <= [Autokar].Pojemność ] Grupa Autokar Nazwa Liczność Numer rej Pojemność Pielgrzymka 0 WRU 49 5 Studenci 50 DW 658 45 Emeryci 55 WCX 8 60 Szkoła 0 WWX 6745 5 Urząd Miejski 0 WRA 0 Pafawag 0 DW 6789 0 dr inż. Witold Rekuć Technologia przetwarzania danych
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ć Technologia przetwarzania danych
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ć Technologia przetwarzania danych
Przykład r A B r B C a b b5 c a5 b b c a b b6 c4 a6 b5 b c a b r r = A B C a b c a b c a b c a b c a6 b5 c dr inż. Witold Rekuć Technologia przetwarzania danych 4
Przykład ( iloczyn kartezjański!!! ) r A B r C D a b c5 d a5 b c d a b r r = A B C D a b c5 d a b c d a5 b c5 d a5 b c d a b c5 d a b c d dr inż. Witold Rekuć Technologia przetwarzania danych 5
Baza danych Meta baza danych (opis bazy danych) System zarządzania bazą danych Aplikacje/programy Formularze Raporty Formularze Raporty Język użytkowników aplikacji... Użytkownicy aplikacji Język użytkowników bazy danych... Użytkownicy bazy danych Język administratora /projektanta bazy danych Administrator /projektant bazy danych dr inż. Witold Rekuć Technologia przetwarzania danych 6
V. Raporty dr inż. Witold Rekuć Technologia przetwarzania danych 7
dr inż. Witold Rekuć Technologia przetwarzania danych 8
dr inż. Witold Rekuć Technologia przetwarzania danych 9
VI. 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ć Technologia przetwarzania danych 0
Operacje teoriomnogościowe suma tabel Dane są tabele o jednakowych nagłówkach (schematach): r(r) s(r) Przykład r(r) s(r) = q(r) = { t : t r lub t s } r A B s A B q A B a b a5 b a b a5 b a b a5 b a b a6 b4 a b a6 b4 a b a6 b4 a b a b a b dr inż. Witold Rekuć Technologia przetwarzania danych
Realizacja operacji sumy tabel w MS ACCESS za pomocą kwerendy dołączającej dr inż. Witold Rekuć Technologia przetwarzania danych
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ć Technologia przetwarzania danych
Kwerenda dołączająca: Realizacja operacji sumy tabel w SQL Kwerenda sumująca: select * from r union all select * from s; insert into r(a,b) select s.a, s.b from s; insert into r select s.* from s; {z duplikatami} select * from r union select * from s; {bez duplikatów} dr inż. Witold Rekuć Technologia przetwarzania danych 4
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 a b a5 b a5 b a b a b a6 b4 a6 b4 a b q A a5 a a6 B b b b4 a b dr inż. Witold Rekuć Technologia przetwarzania danych 5
Realizacja operacji iloczynu tabel w MS ACCESS za pomocą kwerendy wybierającej q := r s {r.*} (r [ r.a =s.a,..., r.a n =s.a n ] s) r A B s A B q A B a b a5 b a5 b {r.a,r.b} (r [ r.a = s.a, r.b = s.b ] s) a5 b a b a b a b a6 b4 a6 b4 a6 b4 a b a b dr inż. Witold Rekuć Technologia przetwarzania danych 6
złączenie po wszystkich polach dr inż. Witold Rekuć Technologia przetwarzania danych 7
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ć Technologia przetwarzania danych 8
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 a b a5 b a5 b a b a b a6 b4 q A a a B b b a6 b4 a b a b dr inż. Witold Rekuć Technologia przetwarzania danych 9
Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej Rekordy unikatowe dr inż. Witold Rekuć Technologia przetwarzania danych 0
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ć Technologia przetwarzania danych
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ć Technologia przetwarzania danych
insert into Odbiorca select from Dostawca.* Dostawca; dr inż. Witold Rekuć Technologia przetwarzania danych
select Dostawca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); dr inż. Witold Rekuć Technologia przetwarzania danych 4
delete distinctrow Odbiorca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); dr inż. Witold Rekuć Technologia przetwarzania danych 5
Operacje teoriomnogościowe dopełnienie Dana jest tabela r(r), w której R={A,A,...,A n } Każdej nazwie A,A,...,A n przyporządkowano zbiór dopuszczalnych wartości D,D,...,D n dop(r(r)) = D D... D n r(r) Przykład R={A,A } D = {,} D = {a,b} D D A A a b a r A A a b dop(r) A A a b b dr inż. Witold Rekuć Technologia przetwarzania danych 6
Przykład Obiekt Nazwa Adres Grupa Numer Liczność Zwiedziła Nazwa Numer Muzeum Muzealna 0 Muzeum Park zdrojowy Parkowa 50 Park zdrojowy Zamek Zapora Zamkowa Wodna 55 Zamek Zapora 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ć Technologia przetwarzania danych 7
dr inż. Witold Rekuć Technologia przetwarzania danych 8
dr inż. Witold Rekuć Technologia przetwarzania danych 9
Czy można realizować dopełnienie za pomocą selekcji z zaprzeczeniem? Przypadek wiele do jeden (n:) Przypadek wiele do wielu (n:m) dr inż. Witold Rekuć Technologia przetwarzania danych 40
Przypadek wiele do jeden (n:) Odejmowanie od uniwersum Miejscowości 4 5 6 7 8 9 0 Województwa WP Miejscowości KodWoj= DL (Miejscowości) KodWoj<> DL (Miejscowości) DL SL PM Selekcja z zaprzeczeniem {,,,7,8,9,0,,} odpowiedź prawidłowa {,,,7,8,9,0,,} odpowiedź prawidłowa dr inż. Witold Rekuć Technologia przetwarzania danych 4
Kupowały Przypadek wiele do wielu (n:m) Firmy 4 5 6 Towary Śledzie Zupa Odejmowanie od uniwersum 7 8 9 0 Pasztet Chipsy Selekcja z zaprzeczeniem Firmy Nazwa= Pasztet (Kupowały) Nazwa<> Pasztet (Kupowały) {,,,4,5,6, 0, } odpowiedź prawidłowa {,,,4,5,6,8,9,0,,} odpowiedź błędna dr inż. Witold Rekuć Technologia przetwarzania danych 4
Kupowały Przypadek wiele do wielu (n:m) 4 5 6 Firmy Towary Śledzie Zupa Odejmowanie od uniwersum 7 8 9 0 Pasztet Chipsy Selekcja z zaprzeczeniem Nazwa= Pasztet (Kupowały) Nazwa= Zupa (Kupowały) {7,8,9,} {,4,5,6,8} = {7,9,} odpowiedź prawidłowa Nazwa= Pasztet and Nazwa<> Zupa (Kupowały) {7, 8, 9, } odpowiedź błędna dr inż. Witold Rekuć Technologia przetwarzania danych 4
Przemianowanie atrybutów Firmy Nr Nazwa 0 Nasza Firma Abeja Audi Pafawag 4 Iase 5 Dolmed Ulica Nasza Abejowska Audiego Wagonowa Energetyczna Medyczna KodMjc Telefon 4 4 55 56 Dokumenty Nr NrSprzerdawcy /0 0 /0 0 /0 /0 0 /0 4/0 0 NrNabywcy 0 0 4 Data.0.0.0.0 0.0.0.04.0 7.0.0.05.0 {NrSprzedawcy} (Dokumenty) {NrNabywcy} (Dokumenty) ) [??=Nr ]Firmy ta nazwa powinna być wspólna dr inż. Witold Rekuć Technologia przetwarzania danych 44
SELECT Osoba.Pesel, [Pesel rodzica] AS Pesel, [Pesel dziadka] AS Pesel, [Pesel pradziadka] AS Pesel FROM ((Osoba INNER JOIN...)...)... ; dr inż. Witold Rekuć Technologia przetwarzania danych 45
VII. Definicja, zastosowanie i realizacja operacji na tabelach: dzielenie 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ć Technologia przetwarzania danych 46
Przykład Obiekt Nazwa Muzeum Adres Muzealna Grupa Numer Liczność 0 Zwiedziła Nazwa Muzeum Park zdrojowy Numer Park zdrojowy Parkowa 50 Muzeum 55 Muzeum Podać, które grupy zwiedziły już każdy obiekt: Zwiedziła Obiekt Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Numer Obiekt Nazwa Muzeum Park zdrojowy Adres Muzealna Parkowa Muzeum {Nazwa,Numer} {Nazwa, Adres} Grupy Numer Numery grup, które w tabeli Zwiedziła łączą się z każdym obiektem dr inż. Witold Rekuć Technologia przetwarzania danych 47
Przykład Obiekt Nazwa Muzeum Adres Muzealna Grupa Numer Liczność 0 Zwiedziła Nazwa Muzeum Park zdrojowy Numer Park zdrojowy Parkowa 50 Muzeum 55 Muzeum Podać obiekty zwiedzone już przez każdą grupę: Zwiedziła Grupa Zwiedziła Nazwa Muzeum Park zdrojowy Muzeum Muzeum Numer Grupa Numer Liczność 0 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ć Technologia przetwarzania danych 48
Realizacja operacji dzielenia za pomocą kwerend q = r s R-S ( r ) R-S (( R-S ( r ) s) r) r s R-S ( r ) rob ( rob s ) kwerenda tworząca tabelę rob kwerenda tworząca tabelę rob rob r rob r kwerenda usuwająca rob kwerenda usuwająca rob R-S (rob) rob dr inż. Witold Rekuć Technologia przetwarzania danych 49
Realizacja operacji dzielenia w SQL select Nazwa from Zwiedziła as r where not exists (select * from Grupa where not exists ( select * from Zwiedziła as r where (r.nazwa=r.nazwa) and (r.numer=grupa.numer ))); dr inż. Witold Rekuć Technologia przetwarzania danych 50
VIII. Podstawy normalizacji relacyjnej bazy danych: zależności funkcyjne i ich rodzaje, dekompozycja relacji i ich schematów, formy normalne schematów relacji PROJEKTOWANIE TABEL Anomalie aktualizacji Dodaj towar : < 004, Mentos, 00 > Dodaj sklep : <, Marketowa > Usuń towar : <00> Usuń sklep : <> Usuń sprzedaż : <,00,00--*> Zmień adres sklepu : <, Supermarketowa > Zmień stan towaru w magazynie : <00,0> Klucz = {NumerSklepu, SymbolTowaru, Data} dr inż. Witold Rekuć Technologia przetwarzania danych 5
Anomalie aktualizacji: - niemożność wykonania operacji aktualizacji bazy danych zapewniającej utrzymanie bazy danych w stanie aktualnym; - dopuszczanie do sprzecznych aktualizacji danych, powielonych (zduplikowanych) w tabelach. Nadmiar: - nadmiar danych - wielokrotne zapisanie tych samych danych w różnych wierszach tej samej tabeli, - nadmiar czynności - wielokrotne wykonywanie tej samej czynności przy aktualizacji tabeli bazy danych. dr inż. Witold Rekuć Technologia przetwarzania danych 5
Sklep {NumerSklepu,AdresSklepu} Tabela dr inż. Witold Rekuć Technologia przetwarzania danych 5
Towar {SymbolTowaru,NazwaTowaru,StanMagaz} Tabela) dr inż. Witold Rekuć Technologia przetwarzania danych 54
SprzedażTowaruWSklepie {NumerSklepu, SymbolTowaru,Data,IlośćSprzedana} Tabela) dr inż. Witold Rekuć Technologia przetwarzania danych 55
Klucz={NumerSklepu} Klucz={SymbolTowaru} Klucz={NumerSklepu,SymbolTowaru,Data} dr inż. Witold Rekuć Technologia przetwarzania danych 56
Dodaj towar : < 004, Mentos, 00 > Dodaj sklep : <, Marketowa > Usuń towar : <00> Usuń sklep : <> Usun sprzedaż : <,00,00--*> Zmień adres sklepu : <, Supermarketowa > Zmień stan towaru w magazynie : <00,0> dr inż. Witold Rekuć Technologia przetwarzania danych 57
Rozkład (dekompozycja) tabeli Dane są: - tabela r(r) - podzbiory schematu R, R,...,Rp takie, że R R... Rp = R Rozkładem (dekompozycją) tabeli r(r) na R, R,...,Rp nazywamy zestaw: Przykład R (r), R (r),..., Rp (r) r R (r) = q A B C a b c A B C D a b c a b c d a b c a b c d a4 b c R ={A,B,C) i a b c d R ={C,D} R (r) = q C D a4 b c d c d c d dr inż. Witold Rekuć Technologia przetwarzania danych 58 c d
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ć Technologia przetwarzania danych 59
Przykład r A B r B C a b a5 c a5 b a c a b a6 c4 a6 b5 a c a b r r = A B C a b c a b c a b c a b c a6 b5 c dr inż. Witold Rekuć Technologia przetwarzania danych 60
Przykład ( iloczyn kartezjański!!! ) r A B r C D a b c5 d a5 b c d a b r r = A B C D a b c5 d a b c d a5 b c5 d a5 b c d a b c5 d a b c d dr inż. Witold Rekuć Technologia przetwarzania danych 6
Rozkład tabel bez straty danych Rozkład tabeli r(r) na R, R,...,Rp nazywamy rozkładem bez straty danych jeżeli: R (r) R (r)... Rp (r) = r(r) Przykład r A B C D a b c d a b c d a b c d a4 b c d R = {A,B,C) i R = {C,D} R (r) = q R (r) = q A B C a b c a b c a b c a4 b c dr inż. Witold Rekuć Technologia przetwarzania danych 6 C c c c D d d d
Przykład r A B C D a b c d a b c d a b c d a4 b c d R = {A,B) i R = {C,D} R (r) = q A a a a a4 B b b b b R (r) = q C c D d c d R (r) R (r)? r(r) c d Przykład R={A,C) i R={B,C,D} Przykład 4 R={A,B) i R={A,C,D} Przykład 5 R={A,B,C,D) i R={D} dr inż. Witold Rekuć Technologia przetwarzania danych 6
Przykład 6 tab( NrSklepu, AdresSklepu, KodTowaru, NazwaTowaru, Sprzedaż ) klucz={nrsklepu, KodTowaru} a) R={NrSklepu, AdresSklepu}, R={NrSklepu,KodTowaru, NazwaTowaru, Sprzedaż} b) R={KodTowaru, NazwaTowaru}, R={NrSklepu,AdresSklepu,KodTowaru, Sprzedaż} c) R={NrSklepu, KodTowaru, AdresSklepu}, R={NrSklepu, KodTowaru, NazwaTowaru} R={NrSklepu, KodTowaru, Sprzedaż} d) R={NrSklepu, AdresSklepu}, R={NrSklepu, NazwaTowaru} R={NrSklepu, Sprzedaż} R4={KodTowaru,Sprzedaż} dr inż. Witold Rekuć Technologia przetwarzania danych 64
Zależności funkcyjne między danymi Dane są: - tabela r(r), R={A,A,...,A n } - zbiory X, Y R 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 dr inż. Witold Rekuć Technologia przetwarzania danych 65
Przykład r A B C D a b c d a b c d a b c d a4 b c d Czy {C} {D}? {C,D} (r) = q C c c c D d d d Czy {C,D} {A,B}? R (r) = q A B C D a b c d a b c d a b c d a4 b c d Czy {B,C} {C,D}? {B,C,D} (r) = q B C D b c d b c d b c d b c d dr inż. Witold Rekuć Technologia przetwarzania danych 66
Przykład tab( NrSklepu, AdresSklepu, KodTowaru, NazwaTowaru, Sprzedaż ) klucz={nrsklepu,kodtowaru} a) czy {NrSklepu, KodTowaru} {AdresSklepu, NazwaTowaru, Sprzedaż}? b) czy {NrSklepu, KodTowaru} {NrSklepu, KodTowaru}? c) czy {NrSklepu} {AdresSklepu}? d) czy {KodTowaru} {NazwaTowaru}? e) czy {KodTowaru} {Sprzedaż}? dr inż. Witold Rekuć Technologia przetwarzania danych 67
NumerSklepu AdresSklepu SymbolTowaru NazwaTowaru,StanMagaz NumerSklepu,SymbolTowaru,Data IlośćSprzedana dr inż. Witold Rekuć Technologia przetwarzania danych 68
NumerSklepu,SymbolTowaru,Data AdresSklepu NumerSklepu,SymbolTowaru,Data NazwaTowaru NumerSklepu,SymbolTowaru,Data StanMagaz dr inż. Witold Rekuć Technologia przetwarzania danych 69