ROZSZERZONE OPERATORY ALGEBRY RELACJI
Relacja - tabela
Przypomnienie: w wielozbiorze mogą powtarzać się krotki.
Operator eliminowania duplikatów (δ)- przekształca wielozbiór w zbiór, usuwając wszystkie kopie krotek, pozostawiając tylko jedną.
Jeśli relacja R przyjmuje postać:
A |
B |
1 |
2 |
3 |
4 |
1 |
2 |
1 |
2 |
to δ (R) ma postać następującą:
A |
B |
1 |
2 |
3 |
4 |
Zauważmy, że krotka (1, 2), która w R występuje 3 razy, w δ (R) występuje tylko raz.
Operatory agregowania - stosuje się do atrybutów (kolumn) relacji.
Standardowe operatory tego typu to:
- SUM - tworzy sumę wartości z kolumny typu numerycznego
- AVG -tworzy wartość średnią wartości kolumny tyou numerycznego
- Po zastosowaniu do kolumny operatorów MIN i MAX uzyskuje się odpowiednio najmniejszą lub największą wartość z tej kolumny. Jeżeli w kolumnie są wartości typu znakowego, uzyskuje się odpowiednio pierwszy lub ostatni element według kolejności leksykograficznej (alfabetycznej).
- W wyniku działania operatora COUNT uzyskuje się liczbę (niekoniecznie różnych) wartości z kolumny.
Rozważmy relację
A |
B |
1 |
2 |
3 |
4 |
1 |
2 |
1 |
2 |
Kilka przykładów agregowania atrybutów tej relacji:
SUM(B) = 2 + 4 + 2 + 2 = 10
AVG(A) = (1 + 3 + 1 + 1) / 4 = 1,5
MIN(A) = 1
MAX(B) = 4
COUNT(A) = 4
Operator grupowania
Czym jest grupowanie?
Grupowanie krotek według wartości jednego lub większej liczby atrybutów daje efekt rozdzielenia relacji na „grupy”. Można wówczas stosować agregowanie wewnątrz poszczególnych grup, dzięki czemu uzyskuje się możliwość wyrażania zapytań, które nie sposób przedstawić za pomocą mechanizmów klasycznej algebry relacyjnej.
Operator grupowania γ daje możliwość wykonania grupowania i/lub agregowania pewnych kolumn. Jeżeli występuje grupowanie, to agregowanie odbywa się wewnątrz poszczególnych grup.
Relację, która jest wynikiem wyrażenia γL(R) tworzy się w następujący sposób:
Dzieli się krotki R na grupy. Każda grupa składa się ze wszystkich krotek, z konkretnymi wartościami atrybutów grupowanych z listy L. Jeżeli grupowanie nie występuje, to całą relację R traktuje się jako 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.
Przykład grupowania:
Zadaniem jest obliczenie długości wszystkich filmów wyprodukowanych przez poszczególne studia, przyjmując, że relacja ma schemat:
Film(tytuł, rok, dlugość, nazwaStudia, producent)
Najpierw będziemy grupować krotki według atrybutu nazwaStudia. Następnie trzeba wyliczyć sumę składowych atrybutu długość w poszczególnych grupach. Do każdej grupy niezależnie stosuje się operator agregowania SUM(długość). W wyniku ma powstać relacja, która przedstawia, ile minut taśmy wyprodukowały poszczególne studia
Operator sortowania τ - przekształca relację w listę krotek uporządkowanych według jednego lub większej liczby atrybutów. Np. można wymagać, aby przy pytaniu o filmy z udziałem pewnej gwiazdy wynik był posortowany według tytułu, aby łatwo sprawdzić, czy określony film jest na danej liście, czy nie.
Wyrażenie τL(R), gdzie R jest relacją, a L listą pewnych atrybutów tej relacji oznacza relację R, ale kolejność krotek w tej relacji jest określona wg listy L. Jeśli na liście L znajdują się atrybuty A1, A2, …, An, to uporządkowanie jest wyznaczone najpierw przez wartości A1.
Wynikiem operatora τ jest lista, a nie zbiór krotek.
PRZYKŁAD:
Jeżeli R( A, B, C) jest schematem relacji R, to τ C, B (R) oznacza uporządkowanie krotek relacji R według wartości atrybutu C, a jeżeli wartości strybutów są takie same, to o kolejności kreotek decyduje wartość atrybutu B. Jeżeli wartości atrybutu B i C są jednakowe, to krotki mogą być uporządkowane w dowolny sposób.
atrybut - w nagłówku kolumny
Rozszerzony operator rzutowania.
O operatorze rzutowania πL(R) była już mowa na wykładzie. W klasycznej algebrze relacyjnej L jest listą pewnych atrybutów relacji R. Operator rzutowania rozszerza się tak, aby umożliwić obliczenia ze składowymi krotek, a także, aby można było wybierać tylko składowe.
W rzutowaniu rozszerzony, oznaczonym również jako πL(R) lista rzutowania może zawierać następujące elementy:
Pojedynczy atrybut R
Wyrażenie x y gdzie x i y są nazwami atrybutów. Element x y oznacza, że na liście, w relacji wynikowej zamiast nazwy atrybutu x ma wystapić nazwa atrybutu y.
Wyrażenie E z, gdzie E jest pewnym wyrażeniem zawierającym atrybuty relacji R, stałe, operatory logiczne i operatory tekstowe, a z jest nazwą nowego atrybutu, którego wartości są otrzymywane, jako wyniki obliczeń wyrażenia E.
Wynik rzutowania wylicza się sprawdzając po kolei każdą krotkę relacji R. Obliczamy listę, podstawiając składowe krotki do odpowiednich atrybutów, wymienionych w L, i stosując operatory z L do tych wartości. 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. Krotki powtarzające się w R powodują powtórzenia w wyniku, ale wynik może zawierać powtórzenia, których nie ma w R.
PRYKŁAD:
Niech dana będzie następująca relacja R:
A |
B |
C |
0 |
1 |
2 |
0 |
1 |
2 |
3 |
4 |
5 |
W wyniku działania πA, B +C X(R) otrzymujemy:
A |
X |
0 |
3 |
0 |
3 |
3 |
9 |
W wynikowym schemacie występują 2 atrybuty. Jeden z nich jest A, pierwszy atrybut R, nie jest on przemianowany. Drugi atrybut jest sumą drugiego i trzeciego atrybutu R i nazywa się X.
Kolejny przykład:
X |
Y |
1 |
1 |
1 |
1 |
1 |
1 |
π B - A X.C - B Y
Dwie rózne krotki (0, 1, 2) oraz (3, 4, 5) zostały przekształcone w tą samą krotkę (1, 1).
Operator złączenia zewętrznego - własność operatora złączenia polega na możliwści powstania w wyniku jego działania krotek wiszących, to jest takich, których nie można dopasować do żadnej z krotek druiej relacji argumentowej. Krotki wiszące nie pozostawiają śladu w wyniku złączenia, a więc złączenie nie uwzględnia danych z relacji wejściowej w sposób kompletny. Gdy takie zachowanie jest niepożądane, proponuje się jego odmianę, nazywaną złączeniem zewnętrznym.
Najpierw rozważmy przypadek „naturalny”
, gdy złączenie tworzy się według porównania wartości wszystkich wspólnych atrybutów. Z kolei złączenie zewnętrzne R
S tworzy się rozpoczynając od od normalnego i dołączając dowolne krotki wiszące z R lub S. W dołączanych do wyniku krotkach brakujące wartości atrybutów z drugiej relacji są uzupełniane wartością null ┴.
PRZYKŁAD
Na rysunku przedstawiono dwie relacje U i V. Krotka (1, 2, 3) z U pasuje do złączenia z dwiema krotkami (2, 3, 10) i (2, 3, 11) z V, więc żadna z tych trzech krotek nie jest wisząca. Jednak pozostałe trzy krotki (4, 5, 6) i (7, 8, 9) z U oraz (6, 7, 12) z V są wiszące. Dla żadnej z tych trzech krotek nie można bowiem znaleźć krotek w drugiej relacji, które mają wartości zgodne dla składowych z B i C. Dlatego w złączeniu U znaczek V są trzy krotki wiszące, w których brakujące wartości atrybutów D dla krotek z U i A dla krotek z V zastąpiono symbolem ┴.
lewostronne
A |
B |
C |
D |
1 |
2 |
3 |
10 |
1 |
2 |
3 |
11 |
4 |
5 |
6 |
┴ |
7 |
8 |
9 |
┴ |
prawostronne
A |
B |
C |
D |
┴ |
2 |
3 |
10 |
1 |
2 |
3 |
11 |
┴ |
6 |
7 |
12 |
Relacja U:
A |
B |
C |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Relacja V:
B |
C |
D |
2 |
3 |
10 |
2 |
3 |
11 |
6 |
7 |
12 |
A |
B |
C |
D |
1 |
2 |
3 |
10 |
1 |
2 |
3 |
11 |
4 |
5 |
6 |
┴ |
7 |
8 |
9 |
┴ |
┴ |
6 |
7 |
12 |
Ponadto dla wszystkich trzech operatorów złączenia zewnętrznego istnieją odmiany teta-złączenia., które do wyniku odpowiedniego teta-złączenia po zastosowaniu warunku stosują zasadę dołączenia krotek wiszących uzupełnionych wartościami ┴. Teta-złaczenie zewnętrzne z warunkiem C oznacza się symbolem . Operator ten można tez modyfikować również oznaczeniami L i R, wskazującymi, czy chodzi o złączenie prawostronne czy lewostronne.
Wynik teta-złączenia zewnętrznego:
A |
U.B |
U.C |
V.B |
V.C |
D |
4 |
5 |
6 |
2 |
3 |
10 |
4 |
5 |
6 |
2 |
3 |
11 |
7 |
8 |
9 |
2 |
3 |
10 |
7 |
8 |
9 |
2 |
3 |
11 |
1 |
2 |
3 |
┴ |
┴ |
┴ |
┴ |
┴ |
┴ |
6 |
7 |
12 |
Dla relacji U i V rozważmy U znaczek. Obie krotki (4, 5, 6) i (7, 8 ,9) z U spełniają warunek i pasują do krotek (2, 3, 10) i (2, 3, 11) z V. Zatem żadna z tych krotek nie jest wisząca w teta-złączeniu, Pozostałe krotki (1, 2, 3) z U oraz (6, 7 , 12) z V są wiszące. Dlatego na rysunku zostały uzupełnione wartościami ┴.