R CD wieża

Transkrypt

R CD wieża
BAZY DANYCH
algebra relacyjna
Opracował:
dr inż. Piotr Suchomski
Wprowadzenie
Algebra relacyjna składa się z prostych, ale
mocnych mechanizmów tworzenia nowych
relacji na podstawie danych relacji. Hdy relacja
występuje w postaci przechowywanych w bazie
danych, to tworzone relacje mogą być
interpretowane jako odpowiedzi na zapytania o
te dane.
 Pierwszy algebrę zbiorów kotek (relacji)
zaproponował Codd. W skład tej algebry
wchodziło 5 operatorów działań na zbiorach:
suma, iloczyn kartezjański, różnica oraz selekcja
i rzutowanie (projekcja).

Algebra relacji - podział
Operacje teoriomnogościowe na zbiorach
(suma, iloczyn, różnica),
 Operacje zawężania relacji: selekcja wybiera
pewne wiersze, a projekcja wybiera kolumny.
 Operacje komponowania krotek z innych krotek,
pochodzących z innych relacji. Przykładem
może być iloczyn kartezjański lub złączenie.
 Operacje „przemianowania”, które nie zmieniają
krotek relacji, ale jej schemat (np. zmiana nazw
atrybutów itp.)

Algebra relacji

Algebra relacji jest domknięta, ponieważ
wynikiem każdego operatora relacji jest relacja.
Umożliwia to budowę dowolnie zagnieżdzonych
wyrażeń relacyjnych. Można wykonać np.
projekcję sumy, selekcję złączenia itp.
Operatory zbiorów
Specjalne operatory relacyjne
suma (unia)
różnica
Iloczyn (przecięcie)
produkt kartezjański
selekcja (wybór)
projekcja (rzutowanie)
złączenie
Suma relacji
Dwie relacje są zgodne (kompatybilne jeśli maja
taką samą liczbę atrybutów i odpowiadające
sobie atrybuty mają tą samą dziedzinę.
 R  S – zbiór wszystkich krotek, które należą do
R lub S.

R



S
R – zbiór znajomych Jarka.
S – zbiór znajomych Joli
R  S – zbiór osób, które są znajomymi Jarka i/lub Joli
Różnica relacji
Relacje muszą być kompatybilne.
 R – S – zbiór wszystkich krotek, które należą do
zbioru R i jednocześnie nie należą do zbioru S.

R



S
R – zbiór znajomych Jarka.
S – zbiór znajomych Joli
R -S – zbiór osób, które są znajomymi Jarka ale nie są znajomymi Joli
Iloczyn relacji
Relacje muszą być kompatybilne.
 R  S – zbiór krotek, które należą zarówno do
zbioru R i do zbioru S.
 Iloczyn relacji nie jest operacją prymitywną, bo
RS = R-(R-S)=S-(S-R)

R



S
R – zbiór znajomych Jarka.
S – zbiór znajomych Joli
R -S – zbiór tylko tychosób, które są znajomymi Jarka i jednocześnie Joli
Iloczyn kartezjański
R x S – zbiór wszystkich krotek t takich, że t jest
konkatenacją krotki rR i krotki s S
 Stopień relacji będącej wynikiem iloczynu
kartezjańskiego jest równy stopniom relacji
składowych.

ab
cd
ef
x
X
Y
abX
abY
cdX
cdY
efX
efY
Iloczyn kartezjański – cd.

Ponieważ w dwóch różnych relacjach mogą
występować atrybuty o takich samych nazwach
to może powodować niejednoznaczności w
relacji będącej wynikiem ich iloczynu
kartezjańskiego.
Student(PESEL, Rok, Miasto)
Nauczyciel(PESEL, Tytuł, Specjalizacja, Miasto)

Aby uniknąć niejednoznaczności należy użyć
kwalifikacji.
Student x Nauczyciel = S_N
S_N(Student.PESEL, Rok, Student.Miasto,
Nauczyciel.PESEL, Tytuł, Specjalizacja,
Nauczyciel.Miasto)
Specjalne operatory - rzutowanie

Rzutowanie (projekcja) relacji R polega na
przepisaniu tej relacji względem wybranych jej
atrybutów w zadanej kolejności.
 Niech A1, A2,…,An są atrybutami relacji R.
PROJECT R OVER A1, A2,…,An to zbiór
wszystkich krotek (a1, a2,…,an) takich, że w R
istnieje krotka t, której atrybut A1 ma wartość a1,
atrybut A2 ma wartość a2, …, An ma wartość an.
 Ponieważ w definicji jest mowa, że wynikiem
projekcji jest zbiór stąd wynika, że w wyniku
projekcji usuwane są powtórzenia.
Rzutowanie (projekcja)

Upraszczając można powiedzieć, że rzutowanie
polega na wyborze określonych kolumn z relacji
R.
A
B
C
D
E
123
Alicja
Gdańsk
TAK
100
34
Bartosz
Gdańsk
NIE
200
-15
Sylwia
Wrocław
TAK
150
PROJECT R OVER B, C, E
PROJECT R OVER C
B
C
E
C
Alicja
Gdańsk
100
Gdańsk
Bartosz
Gdańsk
200
Wrocław
Sylwia
Wrocław
150
Operator specjalny - selekcja
Operator selekcji pozwala wybrać z relacji tylko
te krotki (wiersze) , które spełniają określony
warunek.
 SELECT FROM R WHERE warunek: to zbiór
wszystkich krotek t relacji R takich, że dla każdej
krotki t warunek przyjmuje wartość TRUE.

A
B
C
D
SELECT FROM R WHERE A>0 AND D < 100
11
0
4
10
-18
1
4
5
30
3
5
98
A
B
C
D
2
4
4
120
11
0
4
10
-5
5
5
110
30
3
5
98
Złączenie
Znacznie częściej niż iloczyn karetzjański w
algebrze relacji przydaje się operacja złączenia
(JOIN), która polega na łączeniu par krotek,
które w jakiś sposób sobie odpowiadają.
 Najprostszy sposób polega na wykonaniu
operacji naturalnego złączenia dwóch relacji R i
S, która polega na połączeniu w pary tych krotek
z relacji R i S, które mają identyczne wartości
dla określonych atrybutów.
 Wynikowa krotka nazywa się krotką złączoną i
posiada atrybuty powstałe w wyniku sumowania
relacji R i S.

Złączenie – cd.

Krotka złączona ma takie same wartości
składowych co krotka r dla atrybutów ze
schematu R oraz takie same jak krotka s dla
atrybutów ze schematu S. Ponieważ ta nowa
krotka została utworzona w wyniku złączenia,
więc dla atrybutów, które występują w obu
schematach R i S, wartości krotek r i s muszą
być takie same.
B
C
D
A
B
2
8
9
A
B
C
D
2
2
5
1
2
2
2
8
9
3
4
4
7
5
3
4
7
5
7
3
4
Złączenie – cd.
Złączenia mogą dotyczyć wielu schematów
relacji naraz.
 Często wraz z operacją złączenia wykonywana
jest operacja projekcji, dzięki temu można
wyeliminować kolumny, w których dane z punktu
widzenia danego złączenia są nie istotne, a
wręcz przeszkadzają.

Teta- złączenie
Warunkiem złączenia naturalnego jest
zgodność wartości określonych atrybutów w
łączonych relacjach. Zdarza się jednak, że
istnieje potrzeba łączenia w oparciu o innaczej
zdefiniowany warunek niż równośc wartości
określonych atrybutów. Takie złączenie
nazywane jest złączeniem teta (teta określa
zadany warunek).
 Teta-złączenie polega na:

– Utworzeniu iloczynu kartezjańskiego relacji R i S,
– Selekcji tylko tych krotek, dla których warunek teta
jest spełniony.
Teta-złączenie – cd.
R JOIN S WHERE A < C
A
B
B
C
D
2
2
2
8
9
3
4
5
1
2
4
7
5
7
3
4
R x S
SELECT FROM RS
WHERE A < C
A
R.B
S.B
C
D
2
2
2
8
9
2
2
5
1
2
A
R.B
S.B
C
D
2
2
4
7
5
2
2
2
8
9
2
2
7
3
4
2
2
4
7
5
3
4
2
8
9
2
2
7
3
4
3
4
5
1
2
3
4
2
8
9
3
4
4
7
5
3
4
4
7
5
3
4
7
3
4
Wyrażenia złożone

Algebra relacyjna, tak jak inne algebry,
umożliwia tworzenie dowolnie złożonych
wyrażeń przez zastosowanie operatorów albo
do danych relacji, albo do wyników otrzymanych
z zastosowania jednego lub wielu operatorów
do jednej lub wielu relacji.
 W wyrażeniach algebry relacyjnej można
grupować operacje przez umieszczanie
nawiasów, które oddzielają podwyrażenia oraz
umożliwiają bardziej precyzyjne okreSienie
kolejności wykonywania poszczegóhych
operacji.
Wyrażenia złożone - przykład
SELECT
(PROJECT
{R JOIN S WHERE A < C)
OVER A, C, D)
WHERE D = 9
A
B
B
C
D
2
2
2
8
9
3
4
5
1
2
4
7
5
7
3
4
A
C
D
2
8
9
3
8
9
Przemianowania
W przypadku złożonych operacji na wielu
relacjach przydatna jest operacja
przemianowania, która pozwala na zmianę
nazw poszczególnych atrybutów lub nazw
całych relacji (unikanie nieporozumień).
 W wyniku przemianowania otrzymuje się
relację, do której należą te same krotki co do
relacji R, ale nazwą nowej relacji jest S.
Atrybuty otrzymują nazwy: A1,A2,…,An. A ich
porządek jest zachowany z relacji oryginalnej.

Równoważność wyrażeń
W algebrze relacji osiągnięcie celu może zostać
zrealizowane za pomocą wielu równoważnych
wyrażeń.
 Wybór najlepszego wyrażenia jest istotny z
punktu widzenia szybkości realizowanych
operacji (ich wymagań co do złożoności
obliczeniowej, pamięciowej itp.).

Wielozbiory
W rzeczywistości w komercyjnych systemach
baz danych rzadko do reprezentacji danych
wykorzystuje się zbiory, które z definicji mogą
zawierać pojedyncze wystąpienie każdego
elementów. W praktyce dopuszcza się istnienie
kilku takich samych krotek.
 „Zbiór” w którym elementy mogą się powtarzać
nazywa się wielozbiorem.
 Wielozbiory w teori relacyjnych baz danych
występują jako struktury, które umożliwiają
przyspieszenie wykonywania operacji na
relacjach.

Wielozbiory – suma, iloczyn
Suma wielozbiorów daje inny wynik niż suma
zbiorów. Jeśli jakaś krotka t w relacji R
występuje m razy a w relacji S n razy, to w
relacji będącej wynikiem sumy R i S krotka ta
wystąpi m + n razy.
 Przecięcie wielozbiorów (iloczyn). Jeśli jakaś
krotka t w relacji R występuje m razy a w relacji
S n razy, to w relacji będącej wynikiem iloczynu
R i S krotka ta wystąpi min(m,n) razy.

Wielozbiór - różnica
W przypadku różnicy wielozbiorów R i S (R – S)
krotka t w relacji wyjściowej wystąpi max(0, n –
m). Jeśli w relacji R krotka t występuje częściej
niż w S to w wynikowej relacji krotka ta wystąpi
n-m razy (każde wystąpienie krotki t w
wielozbiorze S „kasuje” jedno jej wystąpienie w
wielozbiorze R).
 W przypadku gdy wystąpień krotki t w
wielozbiorze S jest więcej niż w R to w wyniku
różnicy tych wielozbiorów krotka t nie wystąpi.

Wielozbiory – rzutowanie i selekcja
Jeśli usuwanie jednego lub więcej atrybutów w
trakcie rzutowania powoduje, że ta sama krotka
będzie utworzona z kilku krotek, to kopia tej
krotki nie zostanie usunięta z wyniku rzutowania
wielozbiorów.
 Operacja selekcji na wielozbiorze wykonywana
jest niezależnie dla każdej krotki, a powstające
w jej wyniku ewentualne kopie krotki nie są z
wyjściowego wielozbioru usuwane.

Wielozbiór – iloczyn kartezjański,
złączenie

Zarówno w przypadku iloczynu kartezjańskiego
jak i złączenia wielozbiorów obowiązują te same
zasady jak w przypadku zbiorów, z tą różnicą,
że powstające ewentualne kopie krotek nie są
usuwane.
Rozszerzone operatory

Ze wzgledów praktycznych (wykorzystanie w
językach zapytań) algebra relacji została
rozszerzona o kilka przydatnych operacji:
– Operator eliminowania duplikatów (przekształcenie
wielozbioru w zbiór),
– Operatory agregowania (np. suma, średnia),
– Operator grupowania krotek według wartości jednego
lub wielu atrybutów,
– Operator sortowania –przekształca relację w listę
krotek uporządkowanych według wartości jednego
lub wielu atrybutów (zawsze jako ostatnia operacja),
– Rozszerzone rzutowanie,
– Operator złączenia zewnętrznego.
Operatory agregowania

Kilka operatorów stosuje się do zbiorów lub
wielozbiorów wartości atomowych. Służą one do
sumowania lub tworzenia „agregatów” wartości z
jednej kolumny relacji i są nazywane
operatorami agregowania. Standardowe
operatory tego typu to:
– SUM – tworzy sumę wartości z kolumny typu
numerycznego,
– AVG – oblicza wartość średniej arytmetycznej z
wartości numerycznych danej kolumny,
– MIN, MAX – wyznaczają najmniejszy/największy
element w danej kolumnie,
– COUNT – podaje liczbę krotek w danej relacji.
Grupowanie
Często zdarza się, że nie wystarcza agregacja
wartości całej kolumny, ale należy rozważać
krotki relacji w grupach, które zależą od wartości
z innych kolumn.
 Jeśli występuje grupowanie to agregowanie
występuje wewnątrz poszczególnych grup.

Grupowanie - cd

Relację, która jest wynikiem grupowania tworzy
się:
– Dzieli się krotki relacji R na grupy. Każda grupa
składa się ze wszystkich krotek, z konkretnymi
wartościami atrybutów grupowanych z listy L. Jeśli
grupowanie nie występuje, to całą relacje R traktuje
się jak jedną grupę.
– W każdej grupie tworzy się jedną krotkę złożoną z:
wartości atrybutów grupujących dla tej grupy i
agregacji utworzonych z wszystkich elementów danej
grupy, które są określone przez atrybuty agregowane
zawarte w liście L.
Rzutowanie rozszerzone
W rzutowaniu rozszerzonym dopuszcza się
tworzenie nowych atrybutów (kolumn), których
wartości powstają w wyniku różnych operacji
arytmetycznych, logicznych itp. dokonanych na
wskazanych atrybutach składowych relacji.
 Wynik rzutowania wylicza się, sprawdzając po
kolei każdą krotkę relacji R. Wartości nowej
krotki obliczane są według zapisu atrybutów z
listy L W wyniku powstaje relacja, której
schemat jest opisany listą L, z zastosowaniem
opisanych tam przemianowań. Z każdej krotki
relacji R powstaje jedna krotka wyniku.

Sortowanie

Sortowanie jest przydatne w czasie
prezentowania danych. Ponieważ wynikiem
sortowania jest lista, a algebra relacji dotyczy
zbiorów lub wielozbiorów, dlatego sortowanie
nie może być składową innych wyrażeń w
algebrze relacji, zawsze powinno być operacją
końcową.
 Sortowanie odbywa się według podanej listy
atrybutów. W czasie sortowania brane są pod
uwagę atrybuty z tej listy w kolejności, w jakiej
zostały na niej umieszczone.
Złączenie zewnętrzne
W złączeniu naturalnym nie są uwzględniane
krotki, których nie można dopasować do krotek
drugiej relacji. Te niedopasowane krotki to są
tzw. krotki wiszące, które w złączeniu
naturalnym nie są uwzględniane.
 W przypadku złączenia zewnętrznego brakujące
(nieokreślone) wartości uzupełnia się wartością
NULL.

Więzy
Więzami określa się pewne reguły, które
opisują dane, a nie da się ich bezpośrednio
zamodelować za pomocą zbiorów encji,
związków czy relacji.
 Powszechnie stosowane więzy to:

– Klucze – żeby określić, które atrybuty mogą tworzyć
klucz trzeba znać zasady dotyczące zakresu zmian
wartości tych atrybutów,
– Więzy jednoznaczności – wymagają aby wartość w
pewnym kontekście była unikatowa,
– Więzy integralności referencyjnej – wymagają aby
wartość, na która wskazuje jakiś obiekt faktycznie
znajdowała się w bazie,
Więzy – cd.
– Więzy domenowe - określają zbiór
dopuszczalnych wartości lub zakres
zmienności tych wartości,
– Więzy zasadnicze – są to zasady, które są
arbitralnie narzucone i muszą być
bezwzględnie przestrzegany w czasie
wprowadzania danych.
Więzy relacji

W algebrze relacyjnej istnieją dwa sposoby
określania więzów:
– Jeśli R jest pewnym wyrażeniem algebry relacyjnej,
to równanie R = Ø stanowi więzy, które można
interpretować w znaczeniu „relacja R jest pusta” albo
jako „w relacji R nie występują żadne krotki”.
– Jeśli R I S są wyrażeniami algebry relacyjnej, to RS
stanowi więzy. Można je przeczytać jako „każda
krotka R jest także krotką S”. W relacji S oczywiście
mogą występować poza tymi jeszcze inne krotki.

Oba zapisy są sobie równoważne i w zależności
od wygody można używać je zamiennie.