Algebra relacji jest modelem teoretycznym do opisywania semantyki relacyjnych baz danych, zaproponowanym przez T. Codda, twórcę koncepcji relacyjnych baz danych. Jest to algebra, w której dziedzinę stanowią relacje. Zmienne występujące w wyrażeniach tej algebry odpowiadają pojedynczym relacjom.
Operatory algebry relacji zostały dobrane tak, aby odpowiadały typowym operacjom występującym w zapytaniach podczas wyszukiwania informacji z tabel w bazie danych.
Tak określona algebra miała być językiem zapytań (query language) dla relacyjnych baz danych.
Relacje w algebrze relacji reprezentujemy ich nazwami. Z nazwą każdej relacji jest związany jej schemat — ciąg nazw atrybutów (odpowiadających kolumnom modelowanej tabeli), np.
Student(indeks,imię,nazwisko)
Nazwy atrybutów w schemacie relacji muszą być różne, dlatego w literaturze schemat jest czasem definiowany jako zbiór nazw atrybutów, a nie ciąg.
Ponieważ relacje miały być abstrakcyjnym modelem tabel, ich elementy nazywa się często krotkami — odpowiadają one wierszom tabel z bazy danych.
Zestaw operacji jest spory. Obejmuje po pierwsze typowe operacje
teoriomnogościowe: sumę zbiorów (), iloczyn zbiorów (
) i różnicę
zbiorów (
). Wymaga się, aby oba argumenty miały ten sam schemat
atrybutów. Jeśli nazwy atrybutów różnią się, to należy użyć operacji
przemianowania (o czym za chwilę).
Iloczyn kartezjański () także jest zdefiniowany klasycznie.
Ponieważ jednak argumenty mogą mieć atrybuty o tych samych nazwach,
nazwy kolumn w schemacie wynikowym trzeba czasem poprzedzać nazwami
relacji, z których pochodzą, np. dla relacji
i
schematem ich iloczynu kartezjańskiego będzie
,
tak jak w poniższym przykładzie
R2 =
R1 =
A
B
1
2
3
4
B
C
5
6
7
8
9
10
R1
R2 =
A
R1.B
R2.B
C
1
2
5
6
1
2
7
8
1
2
9
10
3
4
5
6
3
4
7
8
3
4
9
10
Lepiej jednak w takiej sytuacji użyć przemianowania.
Oprócz operacji teoriomnogościowych w algebrze relacji określono kilka
operacji (a właściwie rodzin operacji) specyficznych dla niej. Pierwsza
z nich to selekcja (wybór) . Zgodnie z nazwą
wybiera ona z relacji tylko te krotki, dla których jest spełniony podany
warunek.
Przypuśćmy, że w mamy relację Zwierzaki o następującej postaci:
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Lis | Fufu | 6,35 |
Krokodyl | Czako | 75,00 |
Wartością wyrażenia jest:
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Podobna do selekcji jest operacja rzutowania (projekcji)
: z relacji wybieramy tylko podane kolumny.
Zwróćmy uwagę, że mogłoby to prowadzić do utworzenia relacji, w której
niektóre wiersze byłyby takie same. Ponieważ jednak relacje są zbiorami,
więc takie duplikaty są automatycznie eliminowane, tak jak w poniższym
przykładzie dla wyrażenia
:
gatunek | waga |
---|---|
Papuga | 3,50 |
Papuga | 5,35 |
Lis | 6,35 |
Krokodyl | 75,00 |
Ze względów praktycznych warto zdefiniować uogólnione rzutowanie,
w którym oprócz nazw kolumn dozwolone są dowolne wyrażenia oparte na
kolumnach, np. arytmetyczne. Trzeba je tylko wtedy nazwać:
Ponadto dopuszcza się, aby pewne kolumny wystąpiły wielokrotnie, wymagane jest jednak przemianowanie jak powyżej.
A oto przykład: dane jest relacja R
R =
A
B
1
2
3
4
Wartością wyrażenia R będzie
C
A
A1
3
1
1
7
3
3
Wspominaliśmy wcześniej o operacji przemianowania :
nie powoduje ona żadnych zmian w zawartości relacji, lecz służy jedynie
do zmiany nazwy relacji:
lub zmiany nazw jej atrybutów ,
a czasem jednego i drugiego: .
Złączenie : podobne
do iloczynu kartezjańskiego, ale łączy się ze sobą tylko pary
wierszy spełniające podany warunek
oznacza dowolny warunek na kolumny łączonych relacji,
np.
.
Złączenie theta, w którym warunek jest prostą równością pary atrybutów, nazywa się złączeniem równościowym.
Pojęcie porzuconej krotki (dangling tuple): wiersza z jednej z relacji, do którego nie pasuje żaden wiersz z drugiej relacji.
Zwierzaki | ||
---|---|---|
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Lis | Fufu | 6,35 |
Krokodyl | Czako | 75,00 |
Gatunki | |
---|---|
nazwa | kontynent |
Papuga | Ameryka |
Lis | Europa |
Krokodyl | Afryka |
Zwierzaki Gatunki
gatunek | imię | waga | nazwa | kontynent |
Papuga | Kropka | 3,50 | Papuga | Ameryka |
Papuga | Lulu | 5,35 | Papuga | Ameryka |
Papuga | Hipek | 3,50 | Papuga | Ameryka |
Lis | Fufu | 6,35 | Lis | Europa |
Krokodyl | Czako | 75,00 | Krokodyl | Afryka |
Notacja: .
Łączone relacje muszą mieć co najmniej jedną wspólną kolumnę o tej samej nazwie.
Warunkiem złączenia jest równość dla wszystkich par atrybutów o tych samych nazwach.
W wyniku zostaje tylko jedna kolumna z pary kolumn o tych samych nazwach.
Zwierzaki | ||
---|---|---|
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Lis | Fufu | 6,35 |
Krokodyl | Czako | 75,00 |
Gatunki | |
---|---|
gatunek | kontynent |
Papuga | Ameryka |
Lis | Europa |
Krokodyl | Afryka |
Zwierzaki Gatunki
gatunek | imię | waga | kontynent |
Papuga | Kropka | 3,50 | Ameryka |
Papuga | Lulu | 5,35 | Ameryka |
Papuga | Hipek | 3,50 | Ameryka |
Lis | Fufu | 6,35 | Europa |
Krokodyl | Czako | 75,00 | Afryka |
Pozwala na nazywanie relacji wynikowych:
.
Uproszczone notacja: .
Ponieważ jest to algebra, więc operacje można składać otrzymując wyrażenia złożone.
Równoważność wyrażeń można wykorzystać przy optymalizacji, zastępując dane wyrażenie równoważnym mu, lecz bardziej efektywnym.
Zwierzaki | ||
---|---|---|
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Lis | Fufu | 6,35 |
Krokodyl | Czako | 75,00 |
Znajdź pary zwierzaków (imiona) tego samego gatunku
Zgodnie z matematyczną definicją relacji jako zbioru utożsamia się jednakowe krotki (powstające np. podczas rzutowania).
Można rozszerzyć tę algebrę na wielozbiory, dopuszczając powtórzenia.
Powstaje jednak problem odpowiedniej semantyki dla operacji iloczynu i różnicy teoriomnogościowej.
Intuicyjnie zdefiniowane rozszerzenia operacji na wielozbiory zastosowane do relacji dają relacje z wyjątkiem sumy, która dla dwóch relacji może dać wielozbiór.
Przestają zachodzić niektóre prawa algebry relacji, np.
![]() |
Operator eliminacji powtórzeń .
Operator grupowania z ewentualną agregacją
![]() |
Zauważmy, że
![]() |
jeśli to wszystkie atrybuty
.
Operator sortowania .
Nie jest to operator algebry relacji ani wielozbiorów, lecz ewentualnej algebry list, dlatego powinien być zewnętrznym operatorem wyrażenia!
naturalne:
jako wypełniaczy brakujących
wartości w dołączonych kolumnach używa się ;
lewostronne:
brane są tylko porzucone krotki z pierwszego argumentu;
prawostronne: ;
wersje theta powyższych (z warunkiem u dołu).
Zwierzaki | ||
---|---|---|
gatunek | imię | waga |
Papuga | Kropka | 3,50 |
Papuga | Lulu | 5,35 |
Papuga | Hipek | 3,50 |
Lis | Fufu | 6,35 |
Krokodyl | Czako | 75,00 |
Gatunki | |
---|---|
gatunek | kontynent |
Papuga | Ameryka |
Lis | Europa |
Krokodyl | Afryka |
Krowa | Europa |
Zwierzaki Gatunki
gatunek | imię | waga | kontynent |
Papuga | Kropka | 3,50 | Ameryka |
Papuga | Lulu | 5,35 | Ameryka |
Papuga | Hipek | 3,50 | Ameryka |
Lis | Fufu | 6,35 | Europa |
Krokodyl | Czako | 75,00 | Afryka |
Krowa | ![]() |
![]() |
Europa |
Zapisywanie zapytań (np. modelowanie semantyki)
Nakładanie ograniczeń na poprawność bazy danych (więzy). Przykłady:
![]() |
Integralność referencyjna
![]() |
Zależności funkcyjne
![]() |
Dane są dowolne relacje ,
,
algebry relacji oraz
wyrażenia (zapytania)
![]() |
![]() |
---|---|
![]() |
![]() |
Które z poniższych stwierdzeń są prawdziwe
i
dają ten sam wynik
Odpowiedź na może mieć mniej elementów niż odpowiedź na
i
mogą dać inne wyniki.
Pierwsze.
Dane są relacje i
, każda zawierająca
krotek.
Relacja
ma
co najmniej krotek
co najwyżej krotek
zawsze krotek
nie
tak
nie
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.