Algebra relacji
Transkrypt
Algebra relacji
BAZY DANYCH – wykład 2
Algebra relacji
Dr hab. Sławomir Zadrożny, prof. PR
Co to jest „algebra” ?
Algebra (struktura algebraiczna) to:
pewien zbiór (argumentów), oraz
zbiór operacji na nich określonych
(V, o1, …, on)
oi : V x V x … V → V
Bazy danych – wykład 2
2
Co to jest „algebra relacyjna” ?
Struktura algebraiczna, w której:
argumentami są relacje
określone są takie operacje, które są
potrzebne do wyszukiwania informacji w
bazie danych
Stanowi podstawę języka zapytań do
bazy danych
Bazy danych – wykład 2
3
Podstawowe operacje algebry relacji
Suma i różnica
Standardowe operacje na zbiorach
(teoriomnogościowe); relacje-argumenty muszą
mieć takie same schematy; można z ich pomocą
wyrazić operację przecięcia
Iloczyn kartezjański: łączenie relacji
Wybór (selekcja): wybór krotek spełniających
pewien warunek
Rzut (projekcja): wybór pewnych atrybutów
Przemianowanie: zmiana nazwy relacji i/lub
jej atrybutów
Bazy danych – wykład 2
4
Wybór
R2 :=
σC (R1)
C oznacza warunek (wyrażenie
warunkowe) odwołujący się do atrybutów
relacji R1
R2 ma schemta identyczny z R1 i zawiera
wszystkie krotki relacji R1, które spełniają
warunek C
Bazy danych – wykład 2
5
Wybór: przykład
Relacja Sells:
bar
Joe’s
Joe’s
Sue’s
Sue’s
JoeMenu :=
bar
Joe’s
Joe’s
beer
Bud
Miller
Bud
Miller
price
2.50
2.75
2.50
3.00
σbar=“Joe’s”(Sells):
beer
Bud
Miller
Bazy danych – wykład 2
price
2.50
2.75
6
Rzut
R2 :=
πL (R1)
L jest podzbiorem atrybutów
występujących w schemacie relacji R1
R2 zawiera te same krotki co R1, ale z
wartościami tylko dla atrybutów
wymienionych w zbiorze L
Z R2 usuwane są duplikaty – relacja jest
zbiorem !
Bazy danych – wykład 2
7
Rzut: przykład
Relation Sells:
bar
Joe’s
Joe’s
Sue’s
Sue’s
beer
Bud
Miller
Bud
Miller
price
2.50
2.75
2.50
3.00
π
Prices := beer,price(Sells):
beer
price
Bud
2.50
Miller
2.75
Miller
3.00
Bazy danych – wykład 2
8
Rozszerzony rzut
Ogólna zasada taka sama jak w
przypadku rzutu, ale L może zawierać:
1. wyrażenia zbudowane z użyciem
atrybutów; np. arytmetyczne, takie jak
A+B->C.
2. wielokrotne wystąpienia tego samego
atrybutu
Bazy danych – wykład 2
9
Rozszerzony rzut: przykład
R= (A
1
3
B)
2
4
πA+B->C,A,A (R) =
C
3
7
A1
1
3
Bazy danych – wykład 2
A2
1
3
10
Iloczyn kartezjański
R3 := R1 x R2
zestawia się każdą krotkę t1 z relacji R1 z
każdą krotką t2 relacji R2
złączenie t1t2 staje się krotką relacji R3
schemat relacji R3 stanowi zbiór atrybutów
będący suma zbiorów atrybutów relacji R1 i
relacji R2
Bazy danych – wykład 2
11
Iloczyn kartezjański: przykład
R1(
A,
1
3
B)
2
4
R2(
B,
5
7
9
C)
6
8
10
R3(
A,
1
1
1
3
3
3
R1.B,
2
2
2
4
4
4
R2.B, C )
5
6
7
8
9
10
5
6
7
8
9
10
R3 := R1 x R2
Bazy danych – wykład 2
12
Złączenie
R3 := R1
⋈C R2
określa się iloczyn kartezjański R1 x R2.
i stosuje się do niego operację wyboru
σC
Tak jak dla operacji wyboru σ, C może
być dowolnym warunkiem (wyrażeniem
warunkowym)
Bazy danych – wykład 2
13
Złączenie: przykład
Sells( bar,
Joe’s
Joe’s
Sue’s
Sue’s
beer,
Bud
Miller
Bud
Coors
BarInfo := Sells
BarInfo( bar,
Joe’s
Joe’s
Sue’s
Sue’s
price )
2.50
2.75
2.50
3.00
Bars( name, addr
)
Joe’s Maple St.
Sue’s River Rd.
⋈Sells.bar = Bars.name Bars
beer,
Bud
Miller
Bud
Coors
price,
2.50
2.75
2.50
3.00
name, addr
)
Joe’s Maple St.
Joe’s Maple St.
Sue’s River Rd.
Sue’s River Rd.
Bazy danych – wykład 2
14
Złączenie naturalne
Określenie specjalnego wariantu złączenia,
często używane w literaturze; określa
złączenie:
które ma warunek złączenia w postaci równości
atrybutów o tych samych nazwach, występujących
w obydwu relacjach, oraz
po którym występuje rzut eliminujący atrybuty o
tych samych nazwach (jeden z każdej pary)
Zapis:
R3 := R1
⋈ R2.
Bazy danych – wykład 2
15
Złączenie naturalne: przykład
Sells( bar,
Joe’s
Joe’s
Sue’s
Sue’s
beer,
Bud
Miller
Bud
Coors
price )
2.50
2.75
2.50
3.00
Bars( bar, addr
)
Joe’s Maple St.
Sue’s River Rd.
BarInfo := Sells ⋈ Bars
Uwaga: Bars.name zmieniliśmy na Bars.bar, żeby złączenie
naturalne „zadziałało”
BarInfo( bar, beer, price, addr
)
Joe’s Bud 2.50 Maple St.
Joe’s Milller 2.75 Maple St.
Sue’s Bud 2.50 River Rd.
Sue’s Coors 3.00 River Rd.
Bazy danych – wykład 2
16
Przemianowanie
Operator przemianowania ρ zmienia
schemat relacji, a nie jej „zawartość”
R2 := ρR2(A1,…,An)(R1) „tworzy” nową
relację R2 o atrybutach noszących nazwy
A1,…,An i takich samych krotkach jak R1
Uproszczona notacja:
R2(A1,…,An) := R1
Bazy danych – wykład 2
17
Przemianowanie - przykład
Bars( name, addr
)
Joe’s Maple St.
Sue’s River Rd.
R(bar, addr) := Bars
R(
bar, addr
)
Joe’s Maple St.
Sue’s River Rd.
Bazy danych – wykład 2
18
Złożone wyrażenia algebry relacji
Proste wyrażenia utworzone z użyciem
poszczególnych operatorów łączy się
używając nawiasów i priorytetów
Priorytety operatorów:
1. [σ, π, ρ] (najwyższy)
2. [x, ⋈]
3. ∩
4. [∪, —]
Bazy danych – wykład 2
19
Złożone wyrażenie: przykład
Na podstawie relacji Bars(name, addr) i
Sells(bar, beer, price) znajdź nazwy
wszystkich barów, które znajdują się na
Maple St. lub sprzedają piwo Bud za
mniej niż $3.
Bazy danych – wykład 2
20
Drzewo rozkładu wyrażenia
∪
ρ
π
π
name
σ
addr = “Maple St.”
R(name)
bar
σ
price<3 AND beer=“Bud”
Bars
Sells
Bazy danych – wykład 2
21
Samozłączenie: przykład
Na podstawie relacji Sells(bar, beer, price)
znajdź bary, które sprzedają dwa różne gatunki
piwa w tej samej cenie.
Idea rozwiązania: używając operacji
przemianowania utworzyć kopię relacji Sells, o
nazwie S(bar, beer1, price). Złączenie
naturalne relacji Sells i S składa się z „czwórek”
(bar, beer, beer1, price) takich, że dany bar
sprzedaje obydwa gatunki piwa w tej samej
cenie.
Bazy danych – wykład 2
22
Drzewo rozkładu wyrażenia
π
bar
σ
beer != beer1
⋈
ρ
S(bar, beer1, price)
Sells
Sells
Bazy danych – wykład 2
23
Schematy relacji wynikowych
Suma, przecięcie i różnica: schematy relacjiargumentów muszą być takie same i ich
schemat staje się schematem realcji
wynikowej.
Wybór: schemat relacji wynikowej jest taki
sam jak relacji-argumentu.
Rzut: lista atrybutów wymienionych w
operacji rzutu określa schemat relacji
wynikowej.
Bazy danych – wykład 2
24
Schematy relacji wynikowych (2)
Iloczyn kartezjański: schemat obejmuje
łącznie atrybuty obydwu relacjiargumentów (z powtórzeniami!).
Należy używać notacji R.A, itd., żeby
odróżnić dwa atrybuty o nazwie A.
Złączenie naturalne: schemat to suma
zbiorów atrybutów obydwu relacjiargumentów.
Przemianowanie: schemat relacji
wynikowej określony wprost w operacji
Bazy danych – wykład 2
25
Zbiory z powtórzeniami
Zbiór z powtórzeniami (bag, multiset)
to zbiór, w którym ten sam element
może występować więcej niż raz.
Przykład: {1,2,1,3} jest zbiorem z
powt.
Przykład: {1,2,3} jest również zbiorem
z powt., który jest jednocześnie
„zwykłym” zbiorem.
Bazy danych – wykład 2
26
Dlaczego interesują nas zbiory z powt. ?
W języku SQL faktycznie operuje się na
zbiorach z powtórzeniami.
Niektóre operacje, takie jak rzut, można
efektywniej realizować przyjmując, że operuje
się na zbiorach z powtórzeniami.
Bazy danych – wykład 2
27
Operacje na zbiorach z powt.
Wybór - zachowuje się tak samo jak w
przypadku zbiorów.
Rzut – pomija się usuwanie duplikatów.
Iloczyn kartezjański i złączenie – bez
zmian w działaniu w stosunku do
zbiorów.
Bazy danych – wykład 2
28
Wybór na zbiorach z powt. - przykład
R(
A,
1
5
1
B )
2
6
2
σA+B < 5 (R) =
A
1
1
B
2
2
Bazy danych – wykład 2
29
Rzut na zbiorach z powt. - przykład
R(
A,
1
5
1
B )
2
6
2
πA (R) =
A
1
5
1
Bazy danych – wykład 2
30
Iloczyn kartezjański na zbiorach z powt. - przykład
R(
R
A,
1
5
1
ΧS=
B )
2
6
2
A
1
1
5
5
1
1
R.B
2
2
6
6
2
2
S(
B,
3
7
S.B
3
7
3
7
3
7
C
4
8
4
8
4
8
Bazy danych – wykład 2
C )
4
8
31
Złączenie na zbiorach z powt. - przykład
R(
R
⋈
A,
1
5
1
B )
2
6
2
R.B<S.B
S=
S(
B,
3
7
C )
4
8
A
R.B
S.B
C
1
1
5
1
1
2
2
6
2
2
3
7
7
3
7
4
8
8
4
8
Bazy danych – wykład 2
32
Suma zbiorów z powtórzeniami
Liczba wystąpień danego elementu w
sumie dwóch zbiorów z powtórzeniami
jest równa sumie liczby jego wystąpień
w każdym z argumentów.
Przykład: {1,1,2} ∪ {1,1,1,2,3} =
{1,1,1,1,1,2,2,3}
Bazy danych – wykład 2
33
Przecięcie zbiorów z powtórzeniami
Liczba wystąpień danego elementu w
przecięciu dwóch zbiorów z
powtórzeniami jest równa minimum z
liczby jego wystąpień w każdym z
argumentów.
Przykład: {1,1,1,2} ∩ {1,1,2,3} =
{1,1,2}.
Bazy danych – wykład 2
34
Różnica zbiorów z powtórzeniami
Liczba wystąpień danego elementu w
różnicy dwóch zbiorów z powtórzeniami
A – B jest równa różnicy liczby jego
wystąpień w zbiorze z powtórzeniami A
i liczby jego wystąpień w zbiorze z
powtórzeniami B lub 0 jeśli różnica ta
jest mniejsza od 0.
Przykład: {1,1,1,2} – {1,2,3} = {1,1}.
Bazy danych – wykład 2
35
Różnice w regułach operowania na
zbiorach i na zbiorach z powtórzeniami
Niektóre, ale nie wszystkie, reguły
operacji algebraicznych na zbiorach
zachowują swoją ważność również dla
zbiorów z powtórzeniami.
Przykład: przemienność dodawania jest
zachowana (R ∪S = S ∪R ).
Wynika to z przemienności dodawania
liczb, a więc również liczb wystąpień
elementów w poszczególnych zbiorach.
Bazy danych – wykład 2
36
Reguła, która traci ważność dla zbiorów z powt.
Suma zbiorów jest idempotentna, czyli
S ∪S = S.
W przypadku zbiorów z powtórzeniami
już tak nie jest: jeśli x występuje w S n
razy, to występuje 2n razy in S ∪S.
Czyli, w ogólności S ∪S != S.
np., {1} ∪ {1} = {1,1} != {1}.
Bazy danych – wykład 2
37