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