Relacyjny model danych Wykład 2 S. Kozielski
Relacja X, Y – zbiory, Iloczyn kartezjański X Y = {(x,y): xX yY} X, Y – zbiory, Iloczyn kartezjański X Y = {(x,y): xX yY} Dwuczłonowa relacja w X Y = {(x,y): xX yY x y} X Y N – członowa relacja: podzbiór iloczynu kartezjańskiego X1 X2 X3 ... XN
Model relacyjny – opis formalny Atrybuty: A1, A2, A3, np.: nazwisko, nrp, kwota, adres Dziedziny atrybutów: DA1, DA2, DA3, ... Schemat relacji: R = { A1, A2, ..., Ap} – podzbiór zbioru atrybutów Relacja r(R): podzbiór iloczynu kartezjańskiego dziedzin atrybutów tworzących schemat DA1 DA2 ... DAp r(R) DA1 DA2 ... DAp
Przykład: R = {nrp, nrt, kwota} Dnrp= {1, 2, 3}, Dnrt= {1, 2, 3}, Dkwota= {150, 200, 300} Dnrp Dnrt Dkwota= {1, 1, 150 2, 1, 150 3, 1, 150 … 3, 3, 150 3, 3, 200 3, 3, 300}
Wypłaty Dnrp Dnrt Dkwota 2 300 3 150 1 200 Wypłaty Dnrp Dnrt Dkwota
Relacja jako zbiór krotek r(R) = {t1, t2, t3, …, tk} (A, B, C) ———— a1 b1 c1 - krotka t1 a2 b2 c2 - krotka t2 a3 b3 c3 - krotka t3
Różne formy opisu stosowane w modelu relacyjnym Opis formalny Opis tablicowy Opis fizyczny (fizycznych struktur d.) relacja tablica (tabela) plik krotka wiersz rekord atrybut kolumna pole schemat relacji nagłówek tablicy typ rekordu
Algebra relacji Dane relacje: r(R), s(S) Selekcja w – warunek selekcji (wyrażenie logiczne) w(r) = {t : t r w(t) = True } = p(R)
Przykład selekcji A B C 2 1 C=2
Projekcja Niech X R X = { u : t r u = t [X] } = q (X)
Przykład projekcji A B C AC
Złączenie (naturalne) r s = { u : t r w s t [R S] = w [R S] u[R] = t u[S] = w} = z (R S)
Przykład złączenia naturalnego r (A, B, C) s (C, D) z (A, B, C, D) ———— ——— = ————— a1 b1 c1 c1 d1 a1 b1 c1 d1 a2 b2 c2 c5 d5 a4 b4 c1 d1 a3 b3 c3 a4 b4 c1
Ogólna postać złączenia ( - złączenie) r w s = w (r s) lub r AB s = AB (r s) , gdzie A R, B S
Dzielenie Niech będą dane relacje: r(XY), s(Y) r s = { u : w s t r t [Y] = w t [X] = u }
Przykład dzielenia w (nrp, nrt) t (nrt) w t = z (nrp) ———— ——— ——— ———— ——— ——— 1 1 1 1 1 2 2 3 1 3 3 2 2 2 3 3 1 3 2 3 3
Operatory mnogościowe Niech będą dane relacje: r(R), s(R) Suma: r s Różnica: r \ s Iloczyn: r s
Pytanie Z1 jako wyrażenie algebry relacji Z1 = nazwa (nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy))
Złączenie tabel Pracownicy Wypłaty nrp nrt kwota 2 300 3 150 1 200 nrp nazwisko adres nrz 1 Lipowski Ruda 2 Grabski Zabrze 3 Jaworek Gliwice
Pracownicy Wypłaty nrp nazwisko adres nrz nrt kwota 2 Grabski Zabrze 1 300 3 Jaworek Gliwice 150 Lipowski Ruda 200
Pracownicy Wypłaty Tematy nrp nazwisko adres nrz nrt kwota nazwa kier. 2 Grabski Zabrze 1 300 Pr. przetwor. 3 Jaworek Gliwice 150 Pr. reaktora Lipowski Ruda Pr. zasilacza 200
nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy) nrp nazwisko adres nrz nrt kwota nazwa kier. 3 Jaworek Gliwice 1 150 Pr. reaktora 2 200 Pr. przetwor.
nazwa (nazwisko = ‘Jaworek’ (Pracownicy Wypłaty Tematy)) Pr. reaktora Pr. przetwor.
Własności operatorów algebry relacji r(R), s(S), z(Z) – dane relacje 1) Przemienność złączeń: r s = s r 2) Łączność złączeń: (r s) z = r (s z)
3) Przemienność selekcji i złączeń dla wyrażenia w(r s) Niech atr(w) – zbiór atrybutów występujących w w Jeśli atr(w) R, to w(r s) = (w(r )) s Jeśli atr(w) S, to w(r s) = r (w(s )) Jeśli w= w1 w2 oraz atr(w1) R i atr(w2) S, to w(r s) = (w1(r )) (w2(s))
Przykłady równoważnej postaci wyrażeń P1=nazwisko (nrz=3kwota>2000 (Pracownicy Wypłaty)) P1= nazwisko ((nrz=3 (Pracownicy)) (kwota>2000 (Wypłaty))) P2= nazwisko (nazwa = ‘Pr.gen.’ (Pracownicy Wypłaty Tematy)) P2= nazwisko (Pracownicy Wypłaty (nazwa = ‘Pr.gen.’ (Tematy)))
Drzewo rozbioru wyrażenia algebry relacji – plan realizacji zapytania
Optymalizacja wyrażeń algebry relacji
P2= nazwisko (nazwa = ‘Pr.gen.’ (Pracownicy Wypłaty Tematy)) P2= nazwisko (Pracownicy Wypłaty (nazwa = ‘Pr.gen.’ (Tematy)))
Proste reguły optymalizacji wyrażeń algebry relacji Przenieść selekcje (i projekcje) jak najwyżej w drzewie rozbioru wyrażenia Wykonać projekcje razem ze złączeniami lub selekcjami Dobrać kolejność złączeń według selekcji najsilniej redukujących