abeja
Transkrypt
abeja
Dr inż. Ludmiła Rekuć p. 518 B4 www.ioz.pwr.wroc.pl, [email protected] Dr inż. Witold Rekuć p. 517 B4 www.ioz.pwr.wroc.pl, [email protected] -Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium Literatura 1. C. Date. Wprowadzenie do systemów baz danych. WNT, 2000. 2. J. Ullman, J. Widom. Podstawowy wykład z systemów baz danych. WNT, 2000. 3. Podręczniki systemu MS ACCESS. 4. Materiały do wykładu © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 1 Laboratorium IBM San Jose (California) ”A relational model for large shared data banks” Communication of the ACM, 13:6,1970. System R - prototyp oprogramowania SEQUEL2 – prototyp języka Dziś: Oprogramowanie MS ACCESS, SQL Server, PostgreSQL, INGRES, ORACLE, DB2, Informix, Progres, … Język SQL Edgar F. Codd © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 2 Baza danych jest zbiorem tabel (relacji) pamiętanych w jednym lub wielu plikach Firmy Firm2000.mdb Miejscowości Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Kod 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 5 Dolmed Medyczna 1 Nazwa Wojewodztwa KodWoj Kod Nazwa DL Dolnośląskie OP Opolskie 256 12 PozycjeDokumentu Dokumenty 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 3/02 0 2 003 4,50 125 3/02 0 3 004 7,80 35 3/02 0 4 005 3,20 200 2/02 3 1 001 12,00 30 2/02 3 2 003 4,60 50 4/02 0 1 005 3,60 90 Towary Smb Nazwa Jm StawkaVat 001 Pasztet kg 7% 002 Mortadela kg 7% 003 Chipsy paczka 400g 7% 004 Kawa Jakobs paczka 100g 7% 005 Makrela kons. puszka 250g 7% © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 3 System zarządzania bazą danych Baza danych System zarządzania bazą danych Język użytkowników bazy danych Język administratora bazy danych ... Użytkownicy bazy danych © Ludmiła Rekuć, Witold Rekuć Administrator bazy danych Technologia przetwarzania danych 4 Tabela (relacja) Nazwa tabeli (relacji) nazwa kolumny (atrybutu, pola) 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 5 Dolmed Medyczna 1 256 12 nagłówek (schemat) Wiersz (rekord, krotka) kolumna (atrybut, pole) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 5 Wartości w kolumnach (wartości atrybutów) 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 5 Dolmed Medyczna 1 6 Dolmel 256 12 Elektryczna 3 452 34 6 Zbiór dopuszczalnych numerów firm Dolme l Zbiór dopuszczalnych nazw firm © Ludmiła Rekuć, Witold Rekuć 452 34 Elektryczn a Zbiór dopuszczalnych nazw ulic 3 Zbiór dopuszczalnych kodów miejscowości Technologia przetwarzania danych Zbiór dopuszczalnych numerów telefonów 6 Dziedzina Dziedzina wartości jest to zbiór wartości, które potencjalnie mogą pojawić się w kolumnie tabeli (które może przyjmować atrybut). Różne dziedziny wartości nie muszą być rozłączne Dziedzinę określa się przez podanie typu danych oraz dodatkowych ograniczeń (więzów) lub właściwości MS ACCESS: Nazwa pola Typ danych Nr Liczba Liczba całkowita >=0 i <=999 Nazwa Tekst Długość 30 znaków Ulica Tekst Długość 20 znaków KodMjc Liczba Liczba całkowita between 1 and 99 Telefon Tekst Maska 999-99 © Ludmiła Rekuć, Witold Rekuć Właściwości Technologia przetwarzania danych 7 Określoność wartości w kolumnach (wartości atrybutów) 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 5 Dolmed Medyczna 1 6 Dolmel 256 12 Elektryczna Wartość nieokreślona 3 6 Zbiór dopuszczalnych numerów firm Dolm el Zbiór dopuszczalnych nazw firm © Ludmiła Rekuć, Witold Rekuć 452 34 Elektrycz na Zbiór dopuszczalnych nazw ulic 3 Zbiór dopuszczalnych kodów miejscowości Technologia przetwarzania danych Zbiór dopuszczalnych numerów telefonów 8 Projektując tabelę dla pewnego zastosowania możemy rozstrzygnąć dla każdej kolumny: - czy wartość w kolumnie musi być zawsze określona, - czy wartość w kolumnie może być nieokreślona. Do oznaczenia wartości nieokreślonych stosuje się słowo NULL Telefon is NULL – telefon jest nieokreślony Telefon is not NULL – telefon jest określony Nieokreśloność wartości typu Tekst 6 Dolmel Elektryczna 3 Tekst nieokreślony lub pusty Tekst niepusty “452 34” - tekst określony niepusty “” - tekst określony pusty - tekst nieokreślony © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 9 Nieokreśloność wartości w kolumnach i logika trójwartościowa Telefon = “452 34” ? Telefon is NULL? Telefon is not NULL? 6 Dolmel Elektryczna 3 452 34 TRUE FALSE TRUE 6 Dolmel Elektryczna 3 234 09 FALSE FALSE TRUE 6 Dolmel Elektryczna 3 UNKNOWN TRUE FALSE NULL Operacje na wartościach nieokreślonych X is NULL Y is not NULL lub is NULL X + Y is NULL © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 10 Wartości domyślne (default) 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 5 Dolmed Medyczna 1 Wartością domyślną danego atrybutu nazywamy wartość z dziedziny tego atrybutu, która ma być wstawiona przez system do każdego dodawanego wiersza 256 12 3 6 Zbiór dopuszczalnych numerów firm Dolm el Zbiór dopuszczalnych nazw firm © Ludmiła Rekuć, Witold Rekuć 452 34 Elektrycz na Zbiór dopuszczalnych nazw ulic 3 Zbiór dopuszczalnych kodów miejscowości Technologia przetwarzania danych Zbiór dopuszczalnych numerów telefonów 11 Klucze tabeli Kluczem tabeli nazywamy zbiór atrybutów tabeli, które identyfikują wiersz tabeli i żaden jego podzbiór właściwy tej własności nie ma Dokumenty Nr NrSprzerdawcy NrNabywcy Data 1/02 0 2 13.02.02 2/02 0 3 21.03.02 1/02 1 0 03.01.02 3/02 0 1 31.04.02 2/02 3 0 17.02.02 4/02 0 4 13.05.02 © Ludmiła Rekuć, Witold Rekuć Kluczem w tabeli Dokumenty jest zbiór K = {Nr, NrSprzedawcy} Technologia przetwarzania danych 12 Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) K1={Pesel}, K2={Nip} Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena) K={NrStudenta, KodPrzedmiotu, Data} PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość) K1={Nr, NrSprzedawcy, Np}, K2={Nr, NrSprzedawcy, SmbTow} ObrotyMiesięczne(Rok, Mc, Wartość) K={Rok, Mc} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 13 Kluczem podstawowym tabeli nazywamy klucz, który ze względu na pewne cechy praktyczne zostaje arbitralnie wybrany spośród kluczy tabeli Przykład: Przedmiot (Kod, Nazwa, Opis) K1={Kod}, K2={Nazwa} Kluczem podstawowy: K1 Zbiór atrybutów zawierający klucz nazywamy nadkluczem Przykład: Przedmiot (Kod, Nazwa, Opis) K1={Kod}, K2={Nazwa} Nadkluczem jest: {Kod, Opis} Określoność wartości kluczy Każdy klucz tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 14 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 15 Przykład definicji tabeli w języku SQL (system PostgreSQL) create table "Firmy" ( Nr decimal(4) Nazwa varchar(30) Ulica varchar(30) KodMjc decimal(3) Telefon varchar(20) ); © Ludmiła Rekuć, Witold Rekuć primary key check(Nr>=0), not null, not null, not null, Technologia przetwarzania danych 16 Operacje aktualizacji - dodaj nowy wiersz do tabel - usuń istniejący wiersz z tabeli - zmień wartości w istniejącym wierszu tabeli W aktualizacji bazy danych musimy zapewnić poprawność bazy danych: Poprawność formalna – zgodność bazy danych z regułami formalnymi Poprawność merytoryczna – zgodność bazy danych z rzeczywistością © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 17 Poprawność formalna – więzy integralnościowe: więzy dziedziny – wartość atrybutu w tabeli musi należeć do dziedziny tego atrybutu lub jeżeli jest to dopuszczalne może być nieokreślona (NULL) więzy klucza – w tabeli nie mogą występować dwa lub więcej wierszy o tej samej wartości klucza; klucz musi mieć wartość określoną więzy integralności referencyjnej – patrz niżej inne więzy – patrz niżej © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 18 Więzy dziedziny i klucza Firmy Dodaj wiersz 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 5 Dolmed Medyczna 1 Informatyczna A1 -3 Makrosoft 256 12 NULL Naruszenie więzów dziedziny Dodaj wiersz NULL Makrosoft Informatyczna 1 NULL Naruszenie więzów klucza Dodaj wiersz © Ludmiła Rekuć, Witold Rekuć 2 Makrosoft Informatyczna Technologia przetwarzania danych 1 NULL 19 Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 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 Pafawag Wagonowa 2 3 Wałbrzych DL 4 Iase Energetyczna 3 5 Dolmed Medyczna 1 Nazwa KodWoj 256 12 Dodaj do tabeli Firmy wiersz: 6 TP SA Telewizyjna 4 345 90 Usuń z tabeli Miejscowości wiersz: 2 Opole DL Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 20 Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 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 5 Dolmed Medyczna 1 Nazwa KodWoj 256 12 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 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 21 Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 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 5 Dolmed Medyczna 1 256 12 Nazwa KodWoj Klucz = {Kod} Klucz = {Nr} Klucz obcy = {KodMjc} Dane są dwie tabele: To – zwana tabelą odwołania Td – zwana tabelą docelową Kluczem obcym tabeli To do tabeli Td nazywamy taki zbiór 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łania musi istnieć wiersz w tabeli docelowej zawierający wartość tego klucza. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 22 Przykład: 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} Przykład: Dostawca (Kod, Nazwa, Ulica, KodMjc) Miejscowość (Kod, Nazwa) Dostawa (KodDostawcy, SmbTowaru, Data, Ilość) Towar (Symbol, Nazwa, Cena, Jm) Wskazać klucze i klucze obce! © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 23 Jm © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 24 Przykład definicji tabeli w języku SQL (system PostgreSQL) create domain "NumeryFirm" decimal(4) not null; -create table "Miejscowosci" ( Kod decimal(3) Nazwa varchar(30) ); -create table "Firmy" ( Nr "NumeryFirm" Nazwa varchar(30) Ulica varchar(30) KodMjc decimal(3) Telefon varchar(20) ); © Ludmiła Rekuć, Witold Rekuć primary key check(Kod>0), not null primary key check(Nr>=0), not null, not null, not null references "Miejscowosci"(Kod), Technologia przetwarzania danych 25 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. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 26 Operacje na tabelach Operacje relacyjne Operacje teoriomnogościowe Projekcja Suma Selekcja Iloczyn Złączenie Różnica niesymetryczna Dzielenie Dopeł nienie Przemianowanie © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 27 Operacja projekcji Wyznacza tabelę o schemacie ograniczonym do zbioru zadanych nazw r(R) - tabela r o schemacie R poddawana projekcji X – schemat nowej tabeli - zbiór zadanych nazw (X ⊆ R) 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 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 28 Przykład r({A,B,C,D}) A B C D a5 a6 a6 a6 a1 b2 b4 b4 b4 b2 c1 c5 c1 c1 c2 d1 d2 d3 d2 d1 π π {C,D} {A,B} ( r ({A,B,C,D}) ) = q({C,D}) C D c1 c5 c1 c1 c2 d1 d2 d3 d2 d1 ( r ({A,B,C,D}) ) = q({A,B}) A a5 a6 a1 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych B b2 b4 b2 29 Przykład Podaj nazwy i numery telefonów firm q({Nazwa, Telefon}) = π {Nazwa, Telefon} ( Firmy ({Nr, Nazwa, Ulica,KodMjc, Telefon})) Firmy q 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 2 Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 5 Dolmed Medyczna 1 π Audi Pafawag Iase 256 12 Dolmed {Nazwa, Telefon} 256 12 wiersze zredukowane do X={Nazwa, Telefon} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 30 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 31 Przykład: Podaj kody miejscowości siedzib firm q({KodMjc}) = π © Ludmiła Rekuć, Witold Rekuć {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Technologia przetwarzania danych 32 Przykład: Podaj kody miejscowości siedzib firm q({KodMjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Firmy q KdMjc Nr Nazwa Ulica 1 0 Nasza Firma 3 1 KodMjc Telefon Nasza 1 234 23 Abeja Abejowska 3 234 55 2 Audi Audiego 2 3 Pafawag Wagonowa 2 3 4 Iase Energetyczna 3 1 5 Dolmed Medyczna 1 2 2 π © Ludmiła Rekuć, Witold Rekuć {KodMjc} Technologia przetwarzania danych 256 12 33 Przykład: Podaj kody miejscowości siedzib firm q({KodMjc}) = π © Ludmiła Rekuć, Witold Rekuć {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Technologia przetwarzania danych 34 Przykład: Podaj kody miejscowości siedzib firm q({KodMjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Firmy q KdMjc 1 3 2 © Ludmiła Rekuć, Witold Rekuć π {KodMjc} 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 5 Dolmed Medyczna 1 Technologia przetwarzania danych 256 12 35 Przykład Chcemy obliczyć wartość średnią obrotu miesięcznego w roku q({Obrót}) = π {Obrót} ( Obroty ({Miesiąc,Obrót}) ) Obroty q Obrót 100 100 200 200 300 100 © Ludmiła Rekuć, Witold Rekuć π {Obrót} Miesiąc Obrót Styczeń 100 Luty 100 Marzec 200 Kwiecień 200 Maj 300 czerwiec 100 Technologia przetwarzania danych Zostaw duplikaty w tabeli wynikowej 36 Realizacja projekcji w SQL select nazwa, telefon from Firmy; select distinct nazwa, telefon from Firmy; select * from Firmy; © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 37 Operacja selekcji Wyznacza tabelę o schemacie identycznym schematowi tabeli zadanej ale o wierszach spełniających pewien warunek selekcji r(R) F q(R) = – tabela r o schemacie R poddawana selekcji – warunek selekcji (formuła logiczna) σ F ( r (R) ) = { t : t ∈ r i F(t) = prawda } wiersze spełniające warunek selekcji © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 38 Przykład σ B=4 ( r ({A,B,C,D}) ) = q ({A,B,C,D}) r({A,B,C,D}) A B a5 a6 a6 a6 a1 2 4 4 4 2 C D a1 a5 a1 a1 a1 1 2 1 2 1 A B C D a6 a6 a6 4 4 4 a5 a1 a1 2 1 2 σ B=4 ( r ({A,B,C,D}) ) = q ({A,B,C,D}) and D<2 A B C D a6 4 a1 1 σ B=4 ( r ({A,B,C,D}) ) = q ({A,B,C,D}) or D<2 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych A a5 a6 a6 a6 a1 B 2 4 4 4 2 C a1 a5 a1 a1 a1 D 1 2 1 2 1 39 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 Kod q Kod Nazwa KodWoj 1 Wrocław DL 3 Wałbrzych DL © Ludmiła Rekuć, Witold Rekuć σ KodWoj=DL Technologia przetwarzania danych Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 4 Warszawa MZ 5 Katowice SL 6 Kraków MP 40 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 41 q({ ... })= σ (KodMjc=2) and (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) (Telefon is NULL) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 42 q({ ... })= σ (KodMjc=2) or (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) (Telefon is NULL) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 43 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); © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 44 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} ( σ (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) (KodMjc=2) and (Telefon is NULL) Firmy q Nazwa Audi Pafawag π {Nazwa} ( σ © Ludmiła Rekuć, Witold Rekuć Nr Nazwa Ulica 0 Nasza Firma 1 (KodMjc=2) and (Telefon is NULL) Technologia przetwarzania danych KodMjc Telefon Nasza 1 234 23 Abeja Abejowska 3 234 55 2 Audi Audiego 2 3 Pafawag Wagonowa 2 4 Iase Energetyczna 3 5 Dolmed Medyczna 1 256 12 45 q({Nazwa})= π {Nazwa} ( σ (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) (KodMjc=2) and (Telefon is NULL) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 46 Realizacja projekcji i selekcji w SQL select Nazwa from Firmy where KodMjc = 2 and Telefon IS NULL; © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 47 Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. 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 5 Dolmed Medyczna 1 Miejscowości Kod Nazwa Wojewodztwa KodWoj 1 Wrocław DL Kod Nazwa 2 Opole OP DL Dolnośląskie 3 Wałbrzych DL OP Opolskie 256 12 PozycjeDokumentu Dokumenty 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 3/02 0 2 003 4,50 125 3/02 0 3 004 7,80 35 3/02 0 4 005 3,20 200 2/02 3 1 001 12,00 30 2/02 3 2 003 4,60 50 4/02 0 1 005 3,60 90 Towary Smb Nazwa Jm StawkaVat 001 Pasztet kg 7% 002 Mortadela kg 7% 003 Chipsy paczka 400g 7% 004 Kawa Jakobs paczka 100g 7% 005 Makrela kons. puszka 250g 7% © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 48 Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. 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 5 Dolmed Medyczna 1 © Ludmiła Rekuć, Witold Rekuć 256 12 Technologia przetwarzania danych Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 49 Operacja równozłą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 = Ø) q(R∪S) = r [ A=B ] s = { t : t[R] ∈ r, t[S] ∈ s i t[A] = t[B] } R A r S B s v t © Ludmiła Rekuć, Witold Rekuć v v v Technologia przetwarzania danych 50 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 5 Dolmed Medyczna 1 Miejscowości Kod Nazwa KodWoj 1 Wrocław DL 2 Opole OP 3 Wałbrzych DL 256 12 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 3 Wałbrzych 1 Wrocław 5 Dolmed © Ludmiła Rekuć, Witold Rekuć Medyczna 256 12 1 Technologia przetwarzania danych DL DL 51 Firmy [ KodMjc = Kod ] Miejscowości © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 52 Firmy [ ] Miejscowości = Firmy × Miejscowości © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 53 Złożenie operacji projekcji, selekcji i równozłą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 )) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 54 Złożenie operacji projekcji, selekcji i równozłączenia © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 55 Iloczyn kartezjański tabel © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 56 Równozłączenie wielu tabel © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 57 Równozłą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; © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 58 Zadania F( Nr, Nazwa ) 1 n1 2 n2 3 n3 4 n4 T ( Smb, Nazwa ) a na b nb c nc 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 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 59 Oblicz: 1) 2) 3) 4) π σ π {Data} (D) (D), NrS=1 and NrN=2 σ σ NrS=1 or NrN=2 (D) ( Smb=a(P)) D [NrS=Nr] F, D [NrN=Nr] F, D [Nrd=Nrd,NrS=NrS] P {NrD,NrS} 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. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 60 Operacje na tabelach Operacje relacyjne Operacje teoriomnogościowe Projekcja Suma Selekcja Iloczyn Złączenie Różnica niesymetryczna Dzielenie Dopeł nienie Przemianowanie © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 61 Operacje teoriomnogościowe – suma tabel Dane są tabele o jednakowych schematach: r(R) s(R) r(R) ∪ s(R) = q(R) = { t : t ∈ r lub t ∈ s } Przykład r A a2 a5 a1 a6 a3 B b1 b2 b1 b4 b2 © Ludmiła Rekuć, Witold Rekuć q s A a5 a1 a6 a1 B b2 b1 b4 b2 Technologia przetwarzania danych A a2 a5 a1 a6 a3 a1 B b1 b2 b1 b4 b2 b2 62 Realizacja operacji sumy tabel w MS ACCESS za pomocą kwerendy dołączającej © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 63 Realizacja operacji sumy tabel w MS ACCESS za pomocą kwerendy dołączającej b) q := r ∪ s a) r := r ∪ s r s kwerenda dołączająca r r q := r q := q ∪ s s kwerenda tworząca tabelę q kwerenda dołączająca q © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 64 Realizacja operacji sumy tabel w SQL Kwerenda dołączająca: 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} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 65 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 a2 a5 a1 a6 a3 b1 b2 b1 b4 b2 © Ludmiła Rekuć, Witold Rekuć s A B a5 a1 a6 a1 b2 b1 b4 b2 Technologia przetwarzania danych q A a5 a1 a6 B b2 b1 b4 66 Realizacja operacji iloczynu tabel w MS ACCESS za pomocą kwerendy wybierającej q := r ∩ s ≡ r A B a2 a5 a1 a6 a3 b1 b2 b1 b4 b2 s A a5 a1 a6 a1 © Ludmiła Rekuć, Witold Rekuć B b2 b1 b4 b2 π{r.*}(r [ r.A =s.A ,..., r.A =s.A 1 1 n n ] s) π{r.A,r.B}(r [ r.A = s.A, r.B = s.B ] s) Technologia przetwarzania danych q A B a5 a1 a6 b2 b1 b4 67 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; © Ludmiła Rekuć, Witold Rekuć select r.* from r intersect all select s.* from s; Technologia przetwarzania danych 68 Operacje teoriomnogościowe – różnica niesymetryczna 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 a2 a5 a1 a6 a3 b1 b2 b1 b4 b2 © Ludmiła Rekuć, Witold Rekuć s A a5 a1 a6 a1 B q b2 b1 b4 b2 Technologia przetwarzania danych A a2 a3 B b1 b2 69 Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych Rekordy unikatowe 70 Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej b) q := r − s a) r := r − s r s kwerenda usuwająca r q := r q := q − s r s kwerenda tworząca tabelę q kwerenda usuwająca q © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 71 Realizacja odejmowania w SQL MS ACCESS: delete distinctrow s.* from r inner join s on (r.A=s.A) and ( r.B=s.B); PostgreSQL: select r.* from r except select s.* from s; © Ludmiła Rekuć, Witold Rekuć select r.* from r except all select s.* from s; Technologia przetwarzania danych 72 insert into Odbiorca select Dostawca.* from Dostawca; © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 73 select Dostawca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 74 delete distinctrow Odbiorca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych (Dostawca.Nazwa=Odbiorca.Nazwa); 75 Operacje teoriomnogościowe – dopełnienie Dana jest tabela r(R), w której R={A1,A2,...,An} Każdej nazwie A1,A2,...,An przyporządkowano zbiór dopuszczalnych wartości D1,D2,...,Dn dop(r(R)) = D1 × D2 × ... × Dn − r(R) Przykład R={A1,A2} D1 = {1,2} D2 = {a,b} © Ludmiła Rekuć, Witold Rekuć D1 × D2 A 1 1 1 2 2 A2 a b a b r A1 A2 2 1 a b Technologia przetwarzania danych dop(r) A1 1 2 A2 a b 76 Przykład Obiekt Nazwa Zwiedziła Grupa Adres Liczność Numer Nazwa Numer Muzeum Muzealna 1 10 Muzeum 1 Park zdrojowy Parkowa 2 50 Park zdrojowy 1 Zamek Zamkowa 3 55 Zamek 2 Zapora Wodna Zapora 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; © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 77 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 78 Przemianowanie atrybutów Dokumenty 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 5 Dolmed Medyczna 1 (π {NrSprzedawcy} 256 12 (Dokumenty) ∩ π Nr NrSprzerdawcy NrNabywcy Data 1/02 0 2 13.02.02 2/02 0 3 21.03.02 1/02 1 0 03.01.02 3/02 0 1 31.04.02 2/02 3 0 17.02.02 4/02 0 4 13.05.02 {NrNabywcy} (Dokumenty) ) [ ??=Nr ]Firmy ta nazwa powinna być wspólna © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 79 Dana jest tabela r(R) o schemacie R={A1,A2,...,An}, dla której: a) wybieramy nazwy A1,A2,...,Ak ∈ R = {A1,A2,...,An} b) określamy nazwy B1,B2,...,Bk z zamiarem aby Bi zastępowało Ai (i = 1...k) c) tworzymy nowy schemat Q = ( R − {A1,A2,...,Ak} ) ∪ {B1,B2,...,Bk} δ {A1,A2,...,Ak <-- B1,B2,...,Bk} ( r(R) ) = q( Q ) Kontynuacja przykładu: π {Nr} (δ { NrSprzedawcy <-- Nr} ∩ © Ludmiła Rekuć, Witold Rekuć ) (Dokumenty) π ( (δ {Nr} {NrNabywcy <-- Nr} (Dokumenty) Technologia przetwarzania danych ) [ Nr=Nr ] Firmy 80 Osoba_1.pesel as rodzic, Osoba_2.pesel as dziadek, Osoba_3.pesel as pradziadek, from (Osoba inner join Osoba_1 ...)...); select Osoba.pesel, © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 81 Operacja dzielenia Dane są tabele: r(R), która będzie dzielną, s(S), która będzie dzielnikiem. Utworzymy tabelę: q(T), która będzie ilorazem. Przy czym T = R – S ≠ ∅ q(T) = r(R) ÷ s(S) = { t : dla każdej ts ∈ s, istnieje tr ∈ r taka, że tr[R-S]= t i tr[S] = ts} Nieformalnie: operacja dzielenia znajduje te wiersze dzielnej, które łaczą się z każdym wierszem dzielnika © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 82 Przykład Zwiedziła Obiekt Grupa Nazwa Adres Numer Nazwa Liczność Numer Muzeum 1 Muzeum Muzealna 1 10 Park zdrojowy 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 Obiekt Numer Muzeum 1 Park zdrojowy 1 Muzeum 2 Muzeum 3 ÷ Nazwa Adres Muzeum Muzealna Park zdrojowy Parkowa {Nazwa,Numer} – {Nazwa, Adres} Grupy Numer 1 © Ludmiła Rekuć, Witold Rekuć Numery grup, które w tabeli Zwiedziła łączą się z każdym obiektem Technologia przetwarzania danych 83 Przykład Zwiedziła Obiekt Grupa Nazwa Adres Numer Nazwa Liczność Numer Muzeum 1 Muzeum Muzealna 1 10 Park zdrojowy 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 Grupa Numer Muzeum 1 Park zdrojowy 1 Muzeum 2 Muzeum 3 Numer ÷ Liczność 1 10 2 50 3 55 {Nazwa,Numer} – {Numer, Liczność} Obiekty Nazwa Muzeum © Ludmiła Rekuć, Witold Rekuć Nazwy obiektów, które w tabeli Zwiedziła łączą się z każdą grupą Technologia przetwarzania danych 84 Realizacja operacji dzielenia za pomocą kwerend q=r ÷s = R-S (r)− π R-S π (( R-S ( r ) × s) − r) s r π R-S ( r ) π rob1 kwerenda tworząca tabelę rob1 kwerenda tworząca tabelę rob2 ( rob1 × s ) rob2 r rob2 − r kwerenda usuwająca rob2 rob1 − π R-S(rob2) rob1 kwerenda usuwająca © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 85 Realizacja operacji dzielenia w SQL select from where Nazwa Zwiedziła as r1 not exists (select * from Grupa where not exists ( select * from Zwiedziła as r2 where (r1.Nazwa=r2.Nazwa) and (r2.Numer=Grupa.Numer ))); © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 86 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 q(R∪S) = r [ AΘB ] s = { t : t[R] ∈ r, t[S] ∈s i t[A] Θ t[B] } r R A s v1 t © Ludmiła Rekuć, Witold Rekuć S B v2 v2 v1 v1 Θ v2 Technologia przetwarzania danych 87 Przykład r1 A a2 a5 a1 a6 a1 r2 C B a5 a1 a6 a1 1 2 1 4 2 r1 [ B > D ] r2 = © Ludmiła Rekuć, Witold Rekuć D 2 1 4 2 A B C D a5 a6 a6 a6 a1 2 4 4 4 2 a1 a5 a1 a1 a1 1 2 1 2 1 Technologia przetwarzania danych 88 Przykład Grupa Nazwa Liczność Pielgrzymka 10 Studenci 50 Emeryci 55 Szkoła 20 Urząd Miejski 30 Pafawag 20 Autokar Numer rej Pojemność WRU 3492 15 DW 65182 45 WCX 2381 60 WWX 6745 25 WRA 1212 30 DW 67892 10 Podać autokary, które mogą obsłużyc poszczególne grupy turystyczne Grupa [ Liczność <= Pojemność ] Autokar © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 89 Teta – złączenie w języku SQL select from where © Ludmiła Rekuć, Witold Rekuć Autokar.Numer rej, Grupa.Nazwa Autokar, Grupa Autokar.Pojemność >= Grupa.Liczność; Technologia przetwarzania danych 90 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 © Ludmiła Rekuć, Witold Rekuć s = { t : t[R] ∈ r, t[S] ∈ s } Technologia przetwarzania danych 91 Przykład r1 A a2 a5 a1 a6 a1 r1 © Ludmiła Rekuć, Witold Rekuć B r2 B b1 b2 b1 b5 b2 b5 b1 b6 b1 r2 = A B C a2 a2 a1 a1 a6 b1 b1 b1 b1 b5 c1 c2 c1 c2 c2 Technologia przetwarzania danych C c2 c1 c4 c2 92 Przykład ( iloczyn kartezjański!!! ) r1 A a2 a5 a1 r1 © Ludmiła Rekuć, Witold Rekuć B r2 C b1 b2 b1 c5 c1 r2 = D d2 d1 A B C D a2 a2 a5 a5 a1 a1 b1 b1 b2 b2 b1 b1 c5 c1 c5 c1 c5 c1 d2 d1 d2 d1 d2 d1 Technologia przetwarzania danych 93 PROJEKTOWANIE TABEL Anomalie aktualizacji Klucz = {NumerSklepu, SymbolTowaru, Data} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 94 Dodaj towar : < 004, Mentos, 300 > Dodaj sklep : <2, Marketowa 23> Usuń towar : <003> Usuń sklep : <3> Usun sprzedaż : <3,003,2003-11-*> Zmień adres sklepu : <3, Supermarketowa 13> Zmień stan towaru w magazynie : <002,220> © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 95 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. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 96 Sklep = π {NumerSklepu,AdresSklepu} (Tabela1 © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 97 Towar = π {SymbolTowaru,NazwaTowaru,StanMagaz} (Tabela1) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 98 SprzedażTowaruWSklepie © Ludmiła Rekuć, Witold Rekuć =π{NumerSklepu, SymbolTowaru,Data,IlośćSprzedana} (Tabela1) Technologia przetwarzania danych 99 Klucz={NumerSklepu} Klucz={SymbolTowaru} Klucz={NumerSklepu,SymbolTowaru,Data} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 100 Dodaj towar : < 004, Mentos, 300 > Dodaj sklep : <2, Marketowa 23> Usuń towar : <003> Usuń sklep : <3> Usun sprzedaż : <3,003,2003-11-*> Zmień adres sklepu : <3, Supermarketowa 13> Zmień stan towaru w magazynie : <002,220> © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 101 Rozkład (dekompozycja) tabeli Dane są: - tabela r(R) - podzbiory schematu R1, R2, ...,Rp takie, że R1 ∪ R2 ∪ ... ∪ Rp = R Rozkładem (dekompozycją) tabeli r(R) na R1, R2, ...,Rp nazywamy zestaw: π Przykład r (A B a1 b1 a2 b3 a3 b2 a4 b1 C c1 c2 c1 c3 D) d1 d2 d1 d3 π (r), R1 π (r), ..., R2 (r) = q1 ( A a1 a2 a3 a4 R1 π B b1 b3 b2 b1 (r) Rp C ) c1 c2 c1 c3 π R2 (r) = q2 ( C c1 c2 c3 D ) d1 d2 d3 R1={A,B,C) i R2={C,D} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 102 Rozkład tabel bez straty danych Rozkład tabeli r(R) na R1, R2, ...,Rp nazywamy rozkładem bez straty danych jeżeli: π Przykład 1 r (A B a1 b1 a2 b3 a3 b2 a4 b1 C c1 c2 c1 c3 R1 D) d1 d2 d1 d3 π (r) π R2 (r) (r) = q1 ( A a1 a2 a3 a4 R1 π ... B b1 b3 b2 b1 (r) = r(R) Rp C ) c1 c2 c1 c3 π R2 (r) = q2 ( C c1 c2 c3 D ) d1 d2 d3 R1={A,B,C) i R2={C,D} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 103 Przykład 2 r (A B a1 b1 a2 b3 a3 b2 a4 b1 C c1 c2 c1 c3 π D) d1 d2 d1 d3 (r) = q1 ( A a1 a2 a3 a4 R1 B ) b1 b3 b2 b1 π R2 (r) = q2 ( C c1 c2 c3 D ) d1 d2 d3 R1={A,B) i R2={C,D} π R1 Przykład 3 R1={A,C) i R2={B,C,D} © Ludmiła Rekuć, Witold Rekuć (r) π (r) ? r(R) R2 Przykład 4 R1={A,B) i R2={A,C,D} Technologia przetwarzania danych Przykład 5 R1={A,B,C,D) i R2={D} 104 Przykład 6 tab1( NrSklepu, AdresSklepu, KodTowaru, NazwaTowaru, Sprzedaż ) klucz={NrSklepu, KodTowaru} a) R1={NrSklepu, AdresSklepu}, R2={NrSklepu,KodTowaru, NazwaTowaru, Sprzedaż} b) R1={KodTowaru, NazwaTowaru}, R2={NrSklepu,AdresSklepu,KodTowaru, Sprzedaż} c) R1={NrSklepu, KodTowaru, AdresSklepu}, R2={NrSklepu, KodTowaru, NazwaTowaru} R3={NrSklepu, KodTowaru, Sprzedaż} d) R1={NrSklepu, AdresSklepu}, R2={NrSklepu, NazwaTowaru} R3={NrSklepu, Sprzedaż} R4={KodTowaru,Sprzedaż} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 105 Zależności funkcyjne miedzy danymi Dane są: - tabela r(R), R={A1,A2, ...,An} - 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 ∈ © Ludmiła Rekuć, Witold Rekuć πX(r) liczba wierszy w πX∪Y(r) jest równa 1 Technologia przetwarzania danych 106 Przykład 1 r (A B C D) a1 a2 a3 a4 c1 c2 c1 c3 d1 d2 d1 d3 b1 b3 b2 b1 Czy {C} → {D} ? π{C,D}(r) = q Czy {C,D} → {A,B} ? πR(r) = q b1 b2 b3 b1 c1 c1 c2 c3 © Ludmiła Rekuć, Witold Rekuć D) c1 d1 c2 d2 c3 d3 Czy {B,C} → {C,D} ? (A B C D ) a1 a3 a2 a4 ( C d1 d1 d2 d3 π{B,C,D}(r) = q Technologia przetwarzania danych ( B C D) b1 b2 b3 b1 d1 d1 d2 d3 c1 c1 c2 c3 107 Przykład 2 tab1( 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ż} ? © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 108 NumerSklepu → AdresSklepu SymbolTowaru → NazwaTowaru,StanMagaz NumerSklepu,SymbolTowaru,Data → IlośćSprzedana © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 109 NumerSklepu,SymbolTowaru,Data → AdresSklepu NumerSklepu,SymbolTowaru,Data → NazwaTowaru NumerSklepu,SymbolTowaru,Data → StanMagaz © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 110 Schemat relacyjny Nagłówek tabeli nie jest prostym zbiorem nazw, lecz zbiorem nazw, między którymi występują zależności funkcyjne. Schematem relacyjnym nazywamy parę R = ( R, F ) gdzie R – jest zbiorem nazw atrybutów F – jest zbiorem zależności funkcyjnych w R © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych R={A1,A2, ...,An} F={X→Y: X,Y⊆ R} 111 Przykład R = ( {A,B,C}, { AB→C, B → C } ) {A B C} Przykład 2 R = ( R, F ) dla tabeli Tabela1 R={ NumerSklepu, AdresSklepu, SymbolTowaru, NazwaTowaru, StanMagaz, Data, IlośćSprzedana } F={ NumerSklepu → AdresSklepu, SymbolTowaru → NazwaTowaru,StanMagaz, NumerSklepu,SymbolTowaru,Data → IlośćSprzedana © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych } 112 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ść: 2) rozszerzenie: 3) addytywność: 4) projektywność: 5) przechodniość: 6) pseudoprzechodniość: Schemat relacyjny © Ludmiła Rekuć, Witold Rekuć jeżeli Y ⊆ X, to X → Y jeżeli X → Y, to XZ → YZ jeżeli X → Y i X → Z to X → YZ jeżeli X → YZ to X → Y i X → Z jeżeli X → Y i Y → Z, to X → Z jeżeli X → Y i YZ → W, to XZ → W Reguły wnioskowania Technologia przetwarzania danych Pozostałe zależności funkcyjne 113 Przykład R R = ( {A,B,C}, { B → C } ) = ( {A,B,C}, {B→C}) Reguły wnioskowania © Ludmiła Rekuć, Witold Rekuć 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 → ΑB, AB → C, Technologia przetwarzania danych 114 Domknięcie zbioru zależności funkcyjnych Dany jest schemat relacyjny R = ( R, F ). 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 } © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 115 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 tabeli o danym schemacie © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 116 Określenie klucza tabeli za pomocą zależności funkcyjnych Dany jest schemat relacyjny R = ( R, F ). Kluczem relacji (tabeli) o schemacie R nazywamy zbiór atrybutów K ⊆ R taki, że: a) b) K określa funkcyjnie wszystkie atrybuty (K → R ∈ F+) i żaden podzbiór właściwy K nie spełnia (a) (K' ⊂ K, K' → R ∉ F+). Wniosek Klucz to taki minimalny zbiór atrybutów R, który funkcyjnie określa wszystkie atrybuty R, każdy atrybut z osobna lub każdy podzbiór R. Przykłady Firmy(Nr, Nazwa, Ulica, KodMjc, Telefon) Towary(Symbol, Nazwa, StawkaVAT, JM) Dokumenty(NrDokumentu, NrSprzedawcy, PD(NrDokumentu, NrSprzedawcy,NrPozycji, © Ludmiła Rekuć, Witold Rekuć NrNabywcy, SmbTow, Technologia przetwarzania danych Data) Ilość, CenaJedn) 117 Algorytm określenia klucza tabeli na podstawie zależności funkcyjnych Dany jest schemat relacyjny R = ( R, F ) oraz zbiór X ⊆ R. Domknięciem zbioru atrybutów X, oznaczanym przez X+, nazywamy zbiór atrybutów z R, które 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 R-X, które zależą funkcyjnie od dowolnych podzbiorów X, 3) zakończ, gdy nie będzie możliwe dodawanie atrybutów do X+. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 118 Przykład 1 R = ( {A,B,C,D,E}, { AB → C, D → E } ) a) X=AB b) X=ABD 1) X+ = ABD, bo X=ABD 2) X+ = ABCD, bo AB → C 3) X+ = ABCDE, bo D → E 4) stop 1) X+ = AB, bo X=AB 2) X+ = ABC, bo AB → C 3) stop Odpowiedź: X+ = ABC Odpowiedź: X+ = ABCDE Który ze zbiorów X jest kluczem? © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 119 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 Hipoteza2 X=BCD 1) X+ = BCD 2) X+ = BCDEF 3) X+ = ABCDEF 4) X+ = ABCDEFG 5) stop K1=BCD Hipoteza3 X=AB 1) X+ = AB 2) X+ = ABC 3) X+ = ABCEF 4) X+ = ABCEFG 5) stop Hipoteza4 X=ABD 1) X+ = ABD 2) X+ = ABCD 3) X+ = ABCDEF 4) X+ = ABCDEFG 5) stop K2=ABD © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 120 Zależności funkcyjne pełne i niepełne Dane są X,Y ⊂ R takie, że: X ∩ Y = ∅ oraz X → Y. Pełna zależność funkcyjna Zależność X → Y jest pełną zależnością funkcyjną Y od X, wtedy i tylko wtedy, gdy Y nie zależy funkcyjnie od żadnego podzbioru właściwego X. Mówimy wtedy, że Y w pełni zależy od X Niepełna zależność funkcyjna Zależność X → Y jest niepełną zależnością funkcyjną Y od X, wtedy i tylko wtedy, gdy Y zależy funkcyjnie od pewnego podzbioru właściwego X. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 121 Pełne i niepełne zależności funkcyjne od klucza Atrybut kluczowy Atrubut A ∈R nazywamy atrybutem kluczowym wtedy i tylko wtedy, gdy wchodzi w skład pewnego klucza schematu R = (R,F). Atrybut niekluczowy Atrubut A ∈R nazywamy atrybutem niekluczowym wtedy i tylko wtedy, gdy nie wchodzi w skład żadnego klucza schematu R = (R,F). Pełna zależność atrybutu niekluczowego od klucza Atrubut niekluczowy A ∈R w pełni zależy od klucza K ⊆ R wtedy i tylko wtedy, gdy nie zależy funkcyjnie od żadnego podzbioru właściwego klucza K. Niepełna zależność atrybutu niekluczowego od klucza Atrubut niekluczowy A ∈R nie w pełni zależy od klucza K ⊆ R wtedy i tylko wtedy, gdy zależy funkcyjnie od pewnego podzbioru właściwego klucza K. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 122 Skutki występowania niepełnych zależności funkcyjnych atrybutów niekluczowych od kluczy - anomalie aktualizacji, - nadmiar danych i czynności. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 123 Przykład 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, i1 i1 i2 i3 © Ludmiła Rekuć, Witold Rekuć kp1 kp2 kp2 kp2 d1 d2 d1 d2 ) ocena, nazwa_prz ) c1 c3 c2 c4 np1 np2 np2 np2 Technologia przetwarzania danych 124 R={ NumerSklepu, AdresSklepu,SymbolTowaru,NazwaTowaru, StanMagaz,Data,IlośćSprzedana } F={ NumerSklepu → AdresSklepu, SymbolTowaru → NazwaTowaru,StanMagaz, NumerSklepu,SymbolTowaru,Data → IlośćSprzedana } K = { NumerSklepu,SymbolTowaru,Data } NumerSklepu,SymbolTowaru,Data NumerSklepu,SymbolTowaru,Data NumerSklepu,SymbolTowaru,Data NumerSklepu,SymbolTowaru,Data © Ludmiła Rekuć, Witold Rekuć → → → → IlośćSprzedana AdresSklepu NazwaTowaru StanMagaz Technologia przetwarzania danych 125 Rozkład schematu relacyjnego Dane są: - schemat relacyjny R = (R, F) - zbiory R1, R2, ...,Rp takie, że R1 ∪ R2 ∪ ... ∪ Rp = R Rozkładem (dekompozycją) schematu relacyjnego nazywamy zestaw schematów relacyjnych: R = (R, F) na R1, R2, ...,Rp R1, R2 , ...,Rp takich, że R = (Ri ,Fi) , Fi ⊆ F dla i = 1, ..., p. i © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 126 Rozkład bez straty danych usuwający ze schematu zależności niepełne od klucza R = (R,F) K – klucz Z – zbiór atrybutów niekluczowych, dla których istnieje podzbiór właściwy K' klucza K taki, że K'→ Z Utwórz schematy: R1 = (K' ∪ Z ,F1) r ( indeks, kod_prz, data, r1 ( kod_prz, nazwa_prz ) © Ludmiła Rekuć, Witold Rekuć R2 = (R − Z ,F2) ocena, nazwa_prz ) r2 ( indeks, kod_prz, data, ocena ) Technologia przetwarzania danych 127 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} © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 128 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 © Ludmiła Rekuć, Witold Rekuć R2 =( {A,B,C,F}, {AB → F, AC → F, B → C, C → B } ) K1 = {A, B}, K2 = {A, C} Atrybuty niekluczowe: F Technologia przetwarzania danych 129 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 = {B,C} 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 © Ludmiła Rekuć, Witold Rekuć R22 =( {A,B,C,F}, {ABC → F} ), K = {A,B,C} Atrybuty niekluczowe: F Technologia przetwarzania danych 130 Pierwsza postać normalna (1PN) schematu relacyjnego Schemat relacyjny R = (R,F) jest w pierwszej postaci normalnej, jeżeli dziedzina wartości każdego atrybutu A ∈ R zawiera wartości atomowe (niepodzielne). Druga postać normalna (2PN) schematu relacyjnego Schemat relacyjny R = (R,F) jest w drugiej postaci normalnej, wtedy i tylko wtedy, gdy jest w pierwszej postaci normalnej i każdy niekluczowy atrybut A ∈ R jest w pełni zależny funkcyjnie od każdego klucza tego schematu. R R R =( {A,B,C,D,E,F}, {ABC → F, BC → D, B → E} ) =( {A,B,C,D}, {A → Β, A → C, A → D} ) =( {A,B,C,D,E,F}, {ABC → D, D → E, D → F} ) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 131 Zależności funkcyjne przechodnie od klucza Atrybut A jest przechodnio zależny od klucza K schematu R = ( R, F ) wtedy i tylko wtedy, gdy istnieje taki zbiór atrybutów X nie będący kluczem, że A ∉X i A zależy funkcyjnie od X. Przykład r( Kod, km1 km2 km3 km4 © Ludmiła Rekuć, Witold Rekuć Nazwa, kodwoj, nm1 nm2 nm3 nm4 kw1 kw1 kw2 kw1 Technologia przetwarzania danych nazwawoj ) nw1 nw1 nw2 nw1 132 Skutki występowania przechodnich zależności funkcyjnych atrybutów niekluczowych od kluczy - anomalie aktualizacji, - nadmiar danych i czynności. © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 133 Rozkład bez straty danych usuwający ze schematu zależności przechodnie od klucza R = (R,F) A – atrybut niekluczowy (A ∉ X) X – zbiór atrybutów niekluczowych, dla których X → A Utwórz schematy: R1 r( Kod, r1( kodwoj, nazwawoj © Ludmiła Rekuć, Witold Rekuć = (X ∪ {A} ,F1) R2 Nazwa, kodwoj, ) = (R − {A} ,F2) nazwawoj r2( Kod, Technologia przetwarzania danych ) Nazwa, kodwoj ) 134 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 → D ABC → E jest przechodnia od klucza bo ABC → F i F → D jest niepełna od klucza bo, B → E i B jest częścią klucza Usuńmy zależność niepełną: R 1 = ( {B,E}, {B → E} ) K = {B} R 2 = ( {A,B,C,D,F}, {ABC → F, F → D} ) K = {A,B,C} Usuńmy zależność przechodnią: R 21 = ( {D,F}, {F → D} ) K = {F} © Ludmiła Rekuć, Witold Rekuć R 22 = ( {A,B,C,F}, {ABC → F} ) K = {A,B,C} Technologia przetwarzania danych 135 Trzecia postać normalna (3PN) schematu relacyjnego Schemat relacyjny R = (R,F) jest w trzeciej postaci normalnej, wtedy i tylko wtedy, gdyjest w pierwszej postaci normalnej i każdy niekluczowy atrybut A ∈R jest nieprzechodnio zależny funkcyjnie od każdego klucza tego schematu. R = ( {A,B,C,D,E,F}, {ABC → F, F → D, B → E} ) R =( {A,B,C,D,E,F}, {ABC → F, BC → D, B → E} ) R = ( {A,B,C,D,E}, { AB → C, D → E } ) © Ludmiła Rekuć, Witold Rekuć Technologia przetwarzania danych 136