-Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium

Podobne dokumenty
- Przedmiot kończy się egzaminem - Egzamin ma formę testu teoretycznego

Operacja Teta-złączenia. v1 v1 Θ v2

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Dr inż. Witold Rekuć Katedra Badań Operacyjnych, Finansów i Zastosowań Informatyki

Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium, które zostanie przeprowadzone na przedostatnim wykładzie

1 Wstęp do modelu relacyjnego

Model relacyjny. Wykład II

Model relacyjny. Wykład II

Wprowadzenie do SQL TEMAT 3 - Zadania dodatkowe

Krok 1. SELECT Symbol AS KS INTO Dzielnik FROM Towary WHERE (Nazwa='Orzeszki solone') OR (Nazwa = 'Zupy CHOISE') OR (Nazwa = 'Kawa BURG');

Bazy danych. Dr inż. Paweł Kasprowski

Systemy baz danych. Notatki z wykładu

INFORMATYKA GEODEZYJNO- KARTOGRAFICZNA Relacyjny model danych. Relacyjny model danych Struktury danych Operacje Oganiczenia integralnościowe

PLAN WYKŁADU BAZY DANYCH MODEL DANYCH. Relacyjny model danych Struktury danych Operacje Integralność danych Algebra relacyjna HISTORIA

Pojęcie zależności funkcyjnej

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Egzamin / zaliczenie na ocenę* 0,5 0,5

Autor: Joanna Karwowska

Bazy danych. Algebra relacji

Normalizacja. Pojęcie klucza. Cel normalizacji

Bazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.

Tadeusz Pankowski Relacyjne bazy danych. są podstawą zachodniej cywilizacji

Technologie baz danych

Grupa kursów: Wykład Ćwiczenia Laboratorium Projekt Seminarium 15 30

Wprowadzenie do SQL TEMAT 4 - Zadania dodatkowe

Cel normalizacji. Tadeusz Pankowski

Wykład 2. Relacyjny model danych

KaŜdemu atrybutowi A przyporządkowana jest dziedzina Dom(A), czyli zbiór dopuszczalnych wartości.

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

PLAN WYKŁADU BAZY DANYCH ZALEŻNOŚCI FUNKCYJNE

Bazy danych. Andrzej Łachwa, UJ, /15

Algebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.

Bazy Danych i Usługi Sieciowe

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

BAZY DANYCH algebra relacyjna. Opracował: dr inż. Piotr Suchomski

Definicja bazy danych TECHNOLOGIE BAZ DANYCH. System zarządzania bazą danych (SZBD) Oczekiwania wobec SZBD. Oczekiwania wobec SZBD c.d.

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Projektowanie relacyjnych baz danych

Zasady transformacji modelu DOZ do projektu tabel bazy danych

Jak wiernie odzwierciedlić świat i zachować występujące w nim zależności? Jak implementacja fizyczna zmienia model logiczny?

Relacyjny model baz danych, model związków encji, normalizacje

Relacyjny model danych

RBD Relacyjne Bazy Danych Więzy realcji

RBD Relacyjne Bazy Danych

KARTA PRZEDMIOTU. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI Ogólne umiejętności posługiwania się komputerem

Paweł Rajba

Wykład 5. SQL praca z tabelami 2

Wykład 6. SQL praca z tabelami 3

Normalizacja relacyjnych baz danych. Sebastian Ernst

Przestrzenne bazy danych Podstawy języka SQL

Zależności funkcyjne c.d.

Bazy danych - wykład wstępny

030 PROJEKTOWANIE BAZ DANYCH. Prof. dr hab. Marek Wisła

Widok Connections po utworzeniu połączenia. Obszar roboczy

BAZY DANYCH. Anomalie. Rozkład relacji i normalizacja. Wady redundancji

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Zależności funkcyjne

Bazy danych 1. Wykład 5 Metodologia projektowania baz danych. (projektowanie logiczne)

Bazy danych i usługi sieciowe

PODSTAWY BAZ DANYCH 2009/ / Notatki do wykładu "Podstawy baz danych"

Relacyjny model danych. Relacyjny model danych

Bazy Danych. Model Relacyjny. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

SZKOLENIE: Administrator baz danych. Cel szkolenia

Wprowadzenie do SQL. Instrukcja laboratoryjna

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

1 Przygotował: mgr inż. Maciej Lasota

WYKŁAD 1. Wprowadzenie do problematyki baz danych

Relacyjny model danych

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Bazy danych wykład drugi. Konrad Zdanowski

Autor: Joanna Karwowska

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Wykład 8. SQL praca z tabelami 5

BAZY DANYCH Podstawowe pojęcia

Wykład 05 Bazy danych

BAZY DANYCH model relacyjny. Opracował: dr inż. Piotr Suchomski

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych Wykład zerowy. P. F. Góra

Rozdział 1 Wprowadzenie do baz danych. (c) Instytut Informatyki Politechniki Poznańskiej 1

Wprowadzenie do SQL. Instrukcja laboratoryjna. Ludmiła Rekuć, Witold Rekuć

Wykład XII. optymalizacja w relacyjnych bazach danych

TEST E.14 BAZY DANYCH

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Bazy danych Algebra relacji Wykład dla studentów matematyki

Pierwsza postać normalna

Systemy baz danych. mgr inż. Sylwia Glińska

Wstęp Wprowadzenie do BD Podstawy SQL. Bazy Danych i Systemy informacyjne Wykład 1. Piotr Syga

SQL (ang. Structured Query Language)

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język SQL podstawy zapytań

Bazy danych 2. Algebra relacji Zależności funkcyjne

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

SIECI KOMPUTEROWE I BAZY DANYCH

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Bazy danych 2. Zależności funkcyjne Normalizacja baz danych

Transkrypt:

Dr inż. Ludmiła Rekuć p. 58 B4 www.ioz.pwr.wroc.pl, ludmila.rekuc@pwr.wroc.pl Dr inż. Witold Rekuć p. 57 B4 www.ioz.pwr.wroc.pl, witold.rekuc@pwr.wroc.pl -Wykład kończy się zaliczeniem na ocenę na podstawie kolokwium 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.. Podręczniki systemu MS ACCESS. 4. Materiały do wykładu

Laboratorium IBM San Jose (California) A relational model for large shared data banks Communication of the ACM, :6,970. System R - prototyp oprogramowania SEQUEL prototyp języka Dziś: Oprogramowanie MS ACCESS, SQL Server, PostgreSQL, INGRES, ORACLE, DB, Informix, Progres, Język SQL Edgar F. Codd

Baza danych jest zbiorem tabel (relacji) pamiętanych w jednym lub wielu plikach Firmy Firm000.mdb Miejscowości Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Kod Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Nazwa Wojewodztwa KodWoj Kod Nazwa DL Dolnośląskie OP Opolskie 56 PozycjeDokumentu Dokumenty 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 /0 0 00 4,50 5 /0 0 004 7,80 5 /0 0 4 005,0 00 /0 00,00 0 /0 00 4,60 50 4/0 0 005,60 90 Towary Smb Nazwa Jm StawkaVat 00 Pasztet kg 7% 00 Mortadela kg 7% 00 Chipsy paczka 400g 7% 004 Kawa Jakobs paczka 00g 7% 005 Makrela kons. puszka 50g 7%

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 Administrator bazy danych 4

Tabela (relacja) Nazwa tabeli (relacji) nazwa kolumny (atrybutu, pola) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 56 nagłówek (schemat) Wiersz (rekord, krotka) kolumna (atrybut, pole) 5

Wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 6 Dolmel 56 Elektryczna 45 4 6 Zbiór dopuszczalnych numerów firm Dolme l Zbiór dopuszczalnych nazw firm 45 4 Elektryczn a Zbiór dopuszczalnych nazw ulic Zbiór dopuszczalnych kodów miejscowości 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ść 0 znaków Ulica Tekst Długość 0 znaków KodMjc Liczba Liczba całkowita between and 99 Telefon Tekst Maska 999-99 Właściwości 7

Określoność wartości w kolumnach (wartości atrybutów) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 6 Dolmel 56 Elektryczna Wartość nieokreślona 6 Zbiór dopuszczalnych numerów firm Dolm el Zbiór dopuszczalnych nazw firm 45 4 Elektrycz na Zbiór dopuszczalnych nazw ulic Zbiór dopuszczalnych kodów miejscowości 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 Tekst nieokreślony lub pusty Tekst niepusty 45 4 - tekst określony niepusty - tekst określony pusty - tekst nieokreślony 9

Nieokreśloność wartości w kolumnach i logika trójwartościowa Telefon = 45 4? Telefon is NULL? Telefon is not NULL? 6 Dolmel Elektryczna 45 4 TRUE FALSE TRUE 6 Dolmel Elektryczna 4 09 FALSE FALSE TRUE 6 Dolmel Elektryczna UNKNOWN TRUE FALSE NULL Operacje na wartościach nieokreślonych X is NULL Y is not NULL lub is NULL X + Y is NULL 0

Wartości domyślne (default) Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Wartością domyślną danego atrybutu nazywamy wartość z dziedziny tego atrybutu, która ma być wstawiona przez system do każdego dodawanego wiersza 56 6 Zbiór dopuszczalnych numerów firm Dolm el Zbiór dopuszczalnych nazw firm 45 4 Elektrycz na Zbiór dopuszczalnych nazw ulic Zbiór dopuszczalnych kodów miejscowości Zbiór dopuszczalnych numerów telefonów

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 /0 0.0.0 /0 0.0.0 /0 0 0.0.0 /0 0.04.0 /0 0 7.0.0 4/0 0 4.05.0 Kluczem w tabeli Dokumenty jest zbiór K = {Nr, NrSprzedawcy}

Inne przykłady: Osoba(Pesel, Nip, Nazwisko, Imię, DataUrodzenia) K={Pesel}, K={Nip} Egzamin(NrStudenta, KodPrzedmiotu, Data, Ocena) K={NrStudenta, KodPrzedmiotu, Data} PozycjeDokumentu(Nr, NrSprzedawcy, Np,SmbTow, CenaNetto, Ilość) K={Nr, NrSprzedawcy, Np}, K={Nr, NrSprzedawcy, SmbTow} ObrotyMiesięczne(Rok, Mc, Wartość) K={Rok, Mc}

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) K={Kod}, K={Nazwa} Kluczem podstawowy: K Zbiór atrybutów zawierający klucz nazywamy nadkluczem Przykład: Przedmiot (Kod, Nazwa, Opis) K={Kod}, K={Nazwa} Nadkluczem jest: {Kod, Opis} Określoność wartości kluczy Każdy klucz tabeli musi mieć wartość określoną (NULL jest niedopuszczalne) 4

5

Przykład definicji tabeli w języku SQL (system PostgreSQL) create table "Firmy" ( Nr decimal(4) Nazwa varchar(0) Ulica varchar(0) KodMjc decimal() Telefon varchar(0) ); primary key check(nr>=0), not null, not null, not null, 6

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ą 7

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 8

Więzy dziedziny i klucza Firmy Dodaj wiersz Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Informatyczna A - Makrosoft 56 NULL Naruszenie więzów dziedziny Dodaj wiersz NULL Makrosoft Informatyczna NULL Naruszenie więzów klucza Dodaj wiersz Makrosoft Informatyczna NULL 9

Więzy integralności referencyjnej Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Pafawag Wagonowa Wałbrzych DL 4 Iase Energetyczna 5 Dolmed Medyczna Nazwa KodWoj 56 Dodaj do tabeli Firmy wiersz: 6 TP SA Telewizyjna 4 45 90 Usuń z tabeli Miejscowości wiersz: Opole DL Pytanie do bazy danych: w jakich województwach mają siedziby firmy, z którymi handlujemy? 0

Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Nazwa KodWoj 56 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

Firmy Miejscowości Nr Nazwa Ulica KodMjc Telefon Kod 0 Nasza Firma Nasza 4 Wrocław DL Abeja Abejowska 4 55 Opole OP Audi Audiego Wałbrzych DL Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 56 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.

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} 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!

Jm 4

Przykład definicji tabeli w języku SQL (system PostgreSQL) create domain "NumeryFirm" decimal(4) not null; -create table "Miejscowosci" ( Kod decimal() Nazwa varchar(0) ); -create table "Firmy" ( Nr "NumeryFirm" Nazwa varchar(0) Ulica varchar(0) KodMjc decimal() Telefon varchar(0) ); primary key check(kod>0), not null primary key check(nr>=0), not null, not null, not null references "Miejscowosci"(Kod), 5

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. 6

Operacje na tabelach Operacje relacyjne Operacje teoriomnogościowe Projekcja Suma Selekcja Iloczyn Złączenie Różnica niesymetryczna Dzielenie Dopeł nienie Przemianowanie 7

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 8

Przykład r({a,b,c,d}) A B C D a5 a6 a6 a6 a b b4 b4 b4 b c c5 c c c d d d d d π π {C,D} {A,B} ( r ({A,B,C,D}) ) = q({c,d}) C D c c5 c c c d d d d d ( r ({A,B,C,D}) ) = q({a,b}) A a5 a6 a B b b4 b 9

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 4 0 Nasza Firma Nasza 4 Abeja 4 55 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna π Audi Pafawag Iase 56 Dolmed {Nazwa, Telefon} 56 wiersze zredukowane do X={Nazwa, Telefon} 0

Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon}))

Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Firmy q KdMjc Nr Nazwa Ulica 0 Nasza Firma KodMjc Telefon Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna π {KodMjc} 56

Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) 4

Przykład: Podaj kody miejscowości siedzib firm q({kodmjc}) = π {KodMjc} ( Firmy ({Nr,Nazwa,Ulica,KodMjc,Telefon})) Firmy q KdMjc π {KodMjc} Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 56 5

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 00 00 00 00 00 00 π {Obrót} Miesiąc Obrót Styczeń 00 Luty 00 Marzec 00 Kwiecień 00 Maj 00 czerwiec 00 Zostaw duplikaty w tabeli wynikowej 6

Realizacja projekcji w SQL select nazwa, telefon from Firmy; select distinct nazwa, telefon from Firmy; select * from Firmy; 7

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 8

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 a 4 4 4 C D a a5 a a a A B C D a6 a6 a6 4 4 4 a5 a a σ B=4 ( r ({A,B,C,D}) ) = q ({A,B,C,D}) and D< A B C D a6 4 a σ B=4 ( r ({A,B,C,D}) ) = q ({A,B,C,D}) or D< A a5 a6 a6 a6 a B 4 4 4 C a a5 a a a D 9

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 Wrocław DL Wałbrzych DL σ KodWoj=DL Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL 4 Warszawa MZ 5 Katowice SL 6 Kraków MP 40

4

q({... })= σ (KodMjc=) and (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) (Telefon is NULL) 4

q({... })= σ (KodMjc=) or (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon})) (Telefon is NULL) 4

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); 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=) and (Telefon is NULL) Firmy q Nazwa Audi Pafawag π {Nazwa} ( σ Nr Nazwa Ulica 0 Nasza Firma (KodMjc=) and (Telefon is NULL) KodMjc Telefon Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 56 45

q({nazwa})= π {Nazwa} ( σ (Firmy({Nr,Nazwa,Ulica,KodMjc,Telefon}))) (KodMjc=) and (Telefon is NULL) 46

Realizacja projekcji i selekcji w SQL select Nazwa from Firmy where KodMjc = and Telefon IS NULL; 47

Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Miejscowości Kod Nazwa Wojewodztwa KodWoj Wrocław DL Kod Nazwa Opole OP DL Dolnośląskie Wałbrzych DL OP Opolskie 56 PozycjeDokumentu Dokumenty 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 /0 0 00 4,50 5 /0 0 004 7,80 5 /0 0 4 005,0 00 /0 00,00 0 /0 00 4,60 50 4/0 0 005,60 90 Towary Smb Nazwa Jm StawkaVat 00 Pasztet kg 7% 00 Mortadela kg 7% 00 Chipsy paczka 400g 7% 004 Kawa Jakobs paczka 00g 7% 005 Makrela kons. puszka 50g 7% 48

Operacje złączenia Problem: chcemy uzyskać zestawienie firm z nazwami miejscowości. Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna 56 Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP 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 v v v 50

Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna Miejscowości Kod Nazwa KodWoj Wrocław DL Opole OP Wałbrzych DL 56 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 Wałbrzych Wrocław 5 Dolmed Medyczna 56 DL DL 5

Firmy [ KodMjc = Kod ] Miejscowości 5

Firmy [ ] Miejscowości = Firmy Miejscowości 5

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 )) 54

Złożenie operacji projekcji, selekcji i równozłączenia 55

Iloczyn kartezjański tabel 56

Równozłączenie wielu tabel 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; 58

Zadania F( Nr, Nazwa ) n n n 4 n4 T ( Smb, Nazwa ) a na b nb c nc 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 59

Oblicz: ) ) ) 4) π σ π {Data} (D) (D), NrS= and NrN= σ σ NrS= or NrN= (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ń: ) 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 >. 60

Operacje na tabelach Operacje relacyjne Operacje teoriomnogościowe Projekcja Suma Selekcja Iloczyn Złączenie Różnica niesymetryczna Dzielenie Dopeł nienie Przemianowanie 6

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 a a5 a a6 a B b b b b4 b q s A a5 a a6 a B b b b4 b A a a5 a a6 a a B b b b b4 b b 6

Realizacja operacji sumy tabel w MS ACCESS za pomocą kwerendy dołączającej 6

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 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} 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 a a5 a a6 a b b b b4 b s A B a5 a a6 a b b b4 b q A a5 a a6 B b b b4 66

Realizacja operacji iloczynu tabel w MS ACCESS za pomocą kwerendy wybierającej q := r s r A B a a5 a a6 a b b b b4 b s A a5 a a6 a B b b b4 b π{r.*}(r [ r.a =s.a,..., r.a =s.a n n ] s) π{r.a,r.b}(r [ r.a = s.a, r.b = s.b ] s) q A B a5 a a6 b b 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; select r.* from r intersect all select s.* from s; 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 a a5 a a6 a b b b b4 b s A a5 a a6 a B q b b b4 b A a a B b b 69

Realizacja operacji różnicy tabel w MS ACCESS za pomocą kwerendy usuwającej 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 7

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; select r.* from r except all select s.* from s; 7

insert into Odbiorca select Dostawca.* from Dostawca; 7

select Dostawca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); 74

delete distinctrow Odbiorca.* from Dostawca inner join Odbiorca on (Dostawca.Numer=Odbiorca.Numer) and (Dostawca.Nazwa=Odbiorca.Nazwa); 75

Operacje teoriomnogościowe dopełnienie Dana jest tabela r(r), w której R={A,A,...,An} Każdej nazwie A,A,...,An przyporządkowano zbiór dopuszczalnych wartości D,D,...,Dn dop(r(r)) = D D... Dn r(r) Przykład R={A,A} D = {,} D = {a,b} D D A A a b a b r A A a b dop(r) A A a b 76

Przykład Obiekt Nazwa Zwiedziła Grupa Adres Liczność Numer Nazwa Numer Muzeum Muzealna 0 Muzeum Park zdrojowy Parkowa 50 Park zdrojowy Zamek Zamkowa 55 Zamek Zapora Wodna 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; 77

78

Przemianowanie atrybutów Dokumenty Firmy Nr Nazwa Ulica KodMjc Telefon 0 Nasza Firma Nasza 4 Abeja Abejowska 4 55 Audi Audiego Pafawag Wagonowa 4 Iase Energetyczna 5 Dolmed Medyczna (π {NrSprzedawcy} 56 (Dokumenty) π Nr NrSprzerdawcy NrNabywcy Data /0 0.0.0 /0 0.0.0 /0 0 0.0.0 /0 0.04.0 /0 0 7.0.0 4/0 0 4.05.0 {NrNabywcy} (Dokumenty) ) [??=Nr ]Firmy ta nazwa powinna być wspólna 79

Dana jest tabela r(r) o schemacie R={A,A,...,An}, dla której: a) wybieramy nazwy A,A,...,Ak R = {A,A,...,An} b) określamy nazwy B,B,...,Bk z zamiarem aby Bi zastępowało Ai (i =...k) c) tworzymy nowy schemat Q = ( R {A,A,...,Ak} ) {B,B,...,Bk} δ {A,A,...,Ak <-- B,B,...,Bk} ( r(r) ) = q( Q ) Kontynuacja przykładu: π {Nr} (δ { NrSprzedawcy <-- Nr} ) (Dokumenty) π ( (δ {Nr} {NrNabywcy <-- Nr} (Dokumenty) ) [ Nr=Nr ] Firmy 80

Osoba_.pesel as rodzic, Osoba_.pesel as dziadek, Osoba_.pesel as pradziadek, from (Osoba inner join Osoba_...)...); select Osoba.pesel, 8

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 8

Przykład Zwiedziła Obiekt Grupa Nazwa Adres Numer Nazwa Liczność Numer Muzeum Muzeum Muzealna 0 Park zdrojowy Park zdrojowy Parkowa 50 Muzeum 55 Muzeum Podać, które grupy zwiedziły już każdy obiekt: Zwiedziła Obiekt Zwiedziła Nazwa Obiekt Numer Muzeum Park zdrojowy Muzeum Muzeum Nazwa Adres Muzeum Muzealna Park zdrojowy Parkowa {Nazwa,Numer} {Nazwa, Adres} Grupy Numer Numery grup, które w tabeli Zwiedziła łączą się z każdym obiektem 8

Przykład Zwiedziła Obiekt Grupa Nazwa Adres Numer Nazwa Liczność Numer Muzeum Muzeum Muzealna 0 Park zdrojowy Park zdrojowy Parkowa 50 Muzeum 55 Muzeum Podać obiekty zwiedzone już przez każdą grupę: Zwiedziła Grupa Zwiedziła Nazwa Grupa Numer Muzeum Park zdrojowy Muzeum Muzeum 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ą 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 ) π rob kwerenda tworząca tabelę rob kwerenda tworząca tabelę rob ( rob s ) rob r rob r kwerenda usuwająca rob rob π R-S(rob) rob kwerenda usuwająca 85

Realizacja operacji dzielenia w SQL select from where Nazwa Zwiedziła as r not exists (select * from Grupa where not exists ( select * from Zwiedziła as r where (r.nazwa=r.nazwa) and (r.numer=grupa.numer ))); 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 v t S B v v v v Θ v 87

Przykład r A a a5 a a6 a r C B a5 a a6 a 4 r [ B > D ] r = D 4 A B C D a5 a6 a6 a6 a 4 4 4 a a5 a a a 88

Przykład Grupa Nazwa Liczność Pielgrzymka 0 Studenci 50 Emeryci 55 Szkoła 0 Urząd Miejski 0 Pafawag 0 Autokar Numer rej Pojemność WRU 49 5 DW 658 45 WCX 8 60 WWX 6745 5 WRA 0 DW 6789 0 Podać autokary, które mogą obsłużyc poszczególne grupy turystyczne Grupa [ Liczność <= Pojemność ] Autokar 89

Teta złączenie w języku SQL select from where Autokar.Numer rej, Grupa.Nazwa Autokar, Grupa Autokar.Pojemność >= Grupa.Liczność; 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 s = { t : t[r] r, t[s] s } 9

Przykład r A a a5 a a6 a r B r B b b b b5 b b5 b b6 b r = A B C a a a a a6 b b b b b5 c c c c c C c c c4 c 9

Przykład ( iloczyn kartezjański!!! ) r A a a5 a r B r C b b b c5 c r = D d d A B C D a a a5 a5 a a b b b b b b c5 c c5 c c5 c d d d d d d 9

PROJEKTOWANIE TABEL Anomalie aktualizacji Klucz = {NumerSklepu, SymbolTowaru, Data} 94

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> 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. 96

Sklep = π {NumerSklepu,AdresSklepu} (Tabela 97

Towar = π {SymbolTowaru,NazwaTowaru,StanMagaz} (Tabela) 98

SprzedażTowaruWSklepie =π{numersklepu, SymbolTowaru,Data,IlośćSprzedana} (Tabela) 99

Klucz={NumerSklepu} Klucz={SymbolTowaru} Klucz={NumerSklepu,SymbolTowaru,Data} 00

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> 0

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 (A B a b a b a b a4 b C c c c c D) d d d d π (r), R π (r),..., R (r) = q ( A a a a a4 R π B b b b b (r) Rp C ) c c c c π R (r) = q ( C c c c D ) d d d R={A,B,C) i R={C,D} 0

Rozkład tabel bez straty danych Rozkład tabeli r(r) na R, R,...,Rp nazywamy rozkładem bez straty danych jeżeli: π Przykład r (A B a b a b a b a4 b C c c c c R D) d d d d π (r) π R (r) (r) = q ( A a a a a4 R π... B b b b b (r) = r(r) Rp C ) c c c c π R (r) = q ( C c c c D ) d d d R={A,B,C) i R={C,D} 0

Przykład r (A B a b a b a b a4 b C c c c c π D) d d d d (r) = q ( A a a a a4 R B ) b b b b π R (r) = q ( C c c c D ) d d d R={A,B) i R={C,D} π R Przykład R={A,C) i R={B,C,D} (r) π (r)? r(r) R Przykład 4 R={A,B) i R={A,C,D} Przykład 5 R={A,B,C,D) i R={D} 04

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ż} 05

Zależności funkcyjne miedzy danymi Dane są: - tabela r(r), R={A,A,...,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 πx(r) liczba wierszy w πx Y(r) jest równa 06

Przykład r (A B C D) a a a a4 c c c c d d d d b b b b Czy {C} {D}? π{c,d}(r) = q Czy {C,D} {A,B}? πr(r) = q b b b b c c c c D) c d c d c d Czy {B,C} {C,D}? (A B C D ) a a a a4 ( C d d d d π{b,c,d}(r) = q ( B C D) b b b b d d d d c c c c 07

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ż}? 08

NumerSklepu AdresSklepu SymbolTowaru NazwaTowaru,StanMagaz NumerSklepu,SymbolTowaru,Data IlośćSprzedana 09

NumerSklepu,SymbolTowaru,Data AdresSklepu NumerSklepu,SymbolTowaru,Data NazwaTowaru NumerSklepu,SymbolTowaru,Data StanMagaz 0

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 R={A,A,...,An} F={X Y: X,Y R}

Przykład R = ( {A,B,C}, { AB C, B C } ) {A B C} Przykład R = ( R, F ) dla tabeli Tabela R={ NumerSklepu, AdresSklepu, SymbolTowaru, NazwaTowaru, StanMagaz, Data, IlośćSprzedana } F={ NumerSklepu AdresSklepu, SymbolTowaru NazwaTowaru,StanMagaz, NumerSklepu,SymbolTowaru,Data IlośćSprzedana }

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: ) zwrotność: ) rozszerzenie: ) addytywność: 4) projektywność: 5) przechodniość: 6) pseudoprzechodniość: Schemat relacyjny 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 Pozostałe zależności funkcyjne

Przykład R R = ( {A,B,C}, { B C } ) = ( {A,B,C}, {B C}) Reguły wnioskowania zwrotność: A A, B B, C C, AB A, AB B, AB AB, AC A, AC C, AC AC, BC B, BC C, BC BC, ABC A, ABC B, ABC C, ABC AB, ABC AC, ABC BC, ABC ABC, rozszerzenie: AB AC, addytywność: AB ABC, projektywność: AB A, AB AC, AB BC AB B, AB ΑB, AB C, 4

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 } 5

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 6

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, NrNabywcy, SmbTow, Data) Ilość, CenaJedn) 7

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: ) w X+ umieść wszystkie atrybuty X, ) w X+ umieść wszystkie atrybuty z R-X, które zależą funkcyjnie od dowolnych podzbiorów X, ) zakończ, gdy nie będzie możliwe dodawanie atrybutów do X+. 8

Przykład R = ( {A,B,C,D,E}, { AB C, D E } ) a) X=AB b) X=ABD ) X+ = ABD, bo X=ABD ) X+ = ABCD, bo AB C ) X+ = ABCDE, bo D E 4) stop ) X+ = AB, bo X=AB ) X+ = ABC, bo AB C ) stop Odpowiedź: X+ = ABC Odpowiedź: X+ = ABCDE Który ze zbiorów X jest kluczem? 9

Przykład : R =( {A,B,C,D,E,F,G}, {AB C, C A, BC EF, F G } ) Wyznaczyć klucz Hipoteza X=BC ) X+ = BC ) X+ = BCEF ) X+ = ABCEF 4) X+ = ABCEFG 5) stop Hipoteza X=BCD ) X+ = BCD ) X+ = BCDEF ) X+ = ABCDEF 4) X+ = ABCDEFG 5) stop K=BCD Hipoteza X=AB ) X+ = AB ) X+ = ABC ) X+ = ABCEF 4) X+ = ABCEFG 5) stop Hipoteza4 X=ABD ) X+ = ABD ) X+ = ABCD ) X+ = ABCDEF 4) X+ = ABCDEFG 5) stop K=ABD 0

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.

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.

Skutki występowania niepełnych zależności funkcyjnych atrybutów niekluczowych od kluczy - anomalie aktualizacji, - nadmiar danych i czynności.

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, i i i i kp kp kp kp d d d d ) ocena, nazwa_prz ) c c c c4 np np np np 4

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 IlośćSprzedana AdresSklepu NazwaTowaru StanMagaz 5

Rozkład schematu relacyjnego Dane są: - schemat relacyjny R = (R, F) - zbiory R, R,...,Rp takie, że R R... Rp = R Rozkładem (dekompozycją) schematu relacyjnego nazywamy zestaw schematów relacyjnych: R = (R, F) na R, R,...,Rp R, R,...,Rp takich, że R = (Ri,Fi), Fi F dla i =,..., p. i 6

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: R = (K' Z,F) r ( indeks, kod_prz, data, r ( kod_prz, nazwa_prz ) R = (R Z,F) ocena, nazwa_prz ) r ( indeks, kod_prz, data, ocena ) 7

Przykład : R * = ( {A,B,C,D,E,F}, {AB F, AC F, B DE, C DE, B C, C B} ) K = {A,B} K = {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} 8

Wariant R =( {B,D,E}, {B DE} ), K = {B} Atrybuty niekluczowe: D, E R =( {A,B,C,F}, {AB F, AC F, B C, C B } ) K = {A, B}, K = {A, C} Atrybuty niekluczowe: F Wariant R =( {C,D,E}, {C DE} ), K = {C} Atrybuty niekluczowe: D, E R =( {A,B,C,F}, {AB F, AC F, B C, C B } ) K = {A, B}, K = {A, C} Atrybuty niekluczowe: F 9

Przykład : 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 R =( {B,C,D}, {BC D} ), K = {B,C} Atrybuty niekluczowe: D R =( {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 R =( {B,E}, {B E} ), K = {B} Atrybuty niekluczowe: E R =( {A,B,C,F}, {ABC F} ), K = {A,B,C} Atrybuty niekluczowe: F 0

Pierwsza postać normalna (PN) 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 (PN) 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} )

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, km km km km4 Nazwa, kodwoj, nm nm nm nm4 kw kw kw kw nazwawoj ) nw nw nw nw

Skutki występowania przechodnich zależności funkcyjnych atrybutów niekluczowych od kluczy - anomalie aktualizacji, - nadmiar danych i czynności.

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: R r( Kod, r( kodwoj, nazwawoj = (X {A},F) R Nazwa, kodwoj, ) = (R {A},F) nazwawoj r( Kod, ) Nazwa, kodwoj ) 4

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 = ( {B,E}, {B E} ) K = {B} R = ( {A,B,C,D,F}, {ABC F, F D} ) K = {A,B,C} Usuńmy zależność przechodnią: R = ( {D,F}, {F D} ) K = {F} R = ( {A,B,C,F}, {ABC F} ) K = {A,B,C} 5

Trzecia postać normalna (PN) 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 } ) 6