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 RS = 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 rR 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 RS 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.