Relcjne z dnch Tdeusz Pnkowski www.put.poznn.pl/~tdeusz.pnkowski Model dnch Bz dnch Model dnch: Aspekt strukturln: Ziór struktur dnch, ziór opercji n tch strukturch, ziór zleżności międz dnmi. Aspekt semntczn: Ustlenie znczeń znczenie (semntk) struktur dnch względem wiedz o świecie rzeczwistm, określenie semntki (wrtości) opercji. Aspekt prgmtczn: Określenie zsd korzstni z modelu dnch w sstemie z dnch dl rozwiązwni konkretnch prolemów (reprezentcj stnu sstemu rzeczwistego, formułownie zptń, wkonwnie trnskcji,...). Bz dnch: jest logicznie spójnm ziorem dnch posidjącch określoną strukturę, n którch możn wkonwć określone opercje (spekt skłdniow i opercjn); reprezentuje pewien frgment świt rzeczwistego zwnego dziedziną przedmiotową (ppliction domin); zmin w dz.p. odzwierciedlne są w zie dnch (spekt semntczn); jest projektown, tworzon i utrzmwn z punktu widzeni przdtności dl określonch zstosowń, którmi zinteresown jest określon grup użtkowników (spekt prgmtczn). Z zą dnch związne są: źródło, z którego wprowdzne są dne (dz.p.); określon poziom interkcji ze zdrzenimi zchodzącmi w dz.p.; grup użtkowników cznnie zinteresown zwrtością z dnch. 3 4
Relcjn model dnch E.F. Codd, "A reltionl model of dt for lrge shred dt nks", Communictions of ACM 3 (3), 970, ss. 377-387. Model dnch (podstw teoretczn): struktur: dne proste (tomowe), krotki, tele (relcje); opercje: opercje lger relcji, rchunki relcji, opercje ktulizcji; zleżności: zleżności funkcjne (klucze główne), zleżności referencjne (klucze oce), ogrniczeni n wrtości,... Relcjne (SQL-owe) z dnch Relcjne z dnch = SQL-owe z dnch wkrczją istotnie poz teoretczn model relcjn (włączją koncepcje oiektowości, XML, progrmownie), SQL-owe z dnch stndrd SQL-9 stndrd SQL:999, SQL:003 Njwżniejsze relcjne SZBD: Orcle 9i, 0g MS SQL Server 000, 005, 008 DB, Sse, Interse,... Inne sstem relcjne dbase, Clipper, Xse (stre sstem powszechne w Polsce) Access (Microsoft) MSQL, PostgreSQL (oprogrmownie wolne). 5 6 Relcjn model dnch Relcjn model dnch Atrut smol, nzw (np. Nzwisko, NrEwid, DtUr, Cen,...), U = {A,...,A n } ziór trutów. Dziedzin trutu Dom(A), ziór dopuszczlnch wrtości trutu A. Wszstkie wrtości są proste (tomowe). Wróżnion wrtość pust NULL Dom(A). Krotk (wiersz, rekord) tpu U r = [A :,...,A n : n ], i Dom(A i ), [ ] krotk pust, r = (,..., n ) zpis uproszczon, gd ustlon jest kolejność trutów, Tel (relcj) R tpu U skończon ziór (wieloziór mogą wstępowć duplikt!) krotek tpu U. Formlnie: Krotk jest funkcją z U do V=Dom(A )... Dom(A n ), r : U V, r (A i ) = r.a i Dom(A i ) 7 8
Alger relcji Att nieskończon i przeliczln ziór trutów, Vl ziór wrtości Algerą relcji nzwm nstępującą strukturę: AlgRel Att,Vl = (T, { X, X, π X, δ X Y,, σ E }), gdzie: T ziór wszstkich tel utworzonch nd ziormi Att i Vl; X sum mnogościow tel tpu X, X Att (X jest skończon), X różnic mnogościow tel tpu X, π X projekcj teli n ziór X, δ X Y przeminownie teli poprzez zminę nzw z X n odpowidjące im nzw z Y, złączenie tel o dowolnch tpch, σ E selekcj z teli według wrunku E. Opercje n telch (relcjch) Dwie grup opercji:. Opercje mnogościowe -wnikją z fktu, że tel jest ziorem: sum, różnic (+ przekrój).. Opercje relcjne -wnikją z fktu, że tel jest (wielo)ziorem funkcji (krotek): projekcj, przeminownie, złączenie, selekcj (+ pochodne: iloczn krtezjński, złączeni zewnętrzne, podzielenie). 9 0 Opercje mnogościowe sum R, S tele jednkowego tpu U, Wnik tel tpu U. Sum mnogościow (union): R S = { t t R t S}. SQL (UNION usuw duplikt, UNION ALL pozostwi duplikt) tudent union select * from Prcownik Student Prcownik Student ALL Prcownik R S Sum mnogościow R S = { t t R t S} wnik jest ziorem, nie zwier dupliktów union R ALL S = { (k+j)*t k*t R j*t S} wnik jest wieloziorem, zwier duplikt. (k*t R ozncz, że krotk t wstępuje k rz w teli R) union ll
Opercje mnogościowe różnic R, S tele jednkowego tpu U, Wnik tel tpu U. Różnic mnogościow (difference): R S = { t t R t S}. Opercje mnogościowe różnic Student Prcownik Student Prcownik SQL (ecept usuw duplikt): ecept SQL (ecept usuw duplikt): tudent ecept select * from Prcownik 3 SQL (not eists): tudent s S where not eists (select * from Prcownik P where S.Nzwisko=P.Nzwisko nd S.Kierunek = P.Kierunek) 4 S R Różnic mnogościow S R = { t t S t R} wnik jest ziorem, nie zwier dupliktów ecept S LDup R = { k*t k*t S t R} wnik jest wieloziorem, zwier duplikt where not eists( where R.A = S.A nd S.B=R.B) Opercje mnogościowe przekrój R, S tele jednkowego tpu U, Wnik tel tpu U. Przekrój mnogościow (intersection): R S = { t t R t S}. SQL (intersect usuw duplikt): : intersect 5 6
Opercje mnogościowe przekrój Student Prcownik Student Prcownik SQL (intersect usuw duplikt): tudent intersect select * from Prcownik R S Przekrój j mnogościow R S = { t t R t S} wnik jest ziorem, nie zwier dupliktów intersect R S = S R R LDup S = { k*t k*t R t S} wnik jest wieloziorem, zwier duplikt SQL (eists): tudent s S whereeists(select* from Prcownik P where S.Nzwisko=P.Nzwisko nd S.Kierunek = P.Kierunek) 7 where eists( where R.A=S.A nd S.B=R.B) R S S R 8 Opercje n krotkch projekcj Przkłd: π {A,C} ([A:, B:, C:c]) = [A:, C:c] Definicj (projekcj krotki n ziór trutów) Niech r ędzie krotką tpu U, i niech X ędzie podziorem U, X U. Projekcją (rzutem, ogrniczeniem) (ng. projection) krotki r n ziór X, co oznczm π X (r), nzwm krotkę tpu X tką, któr jest identczn z krotką r n ziorze trutów X, tj.: t = π X (r), jeśli dl kżdego A X, t.a = r. A. (t.a ozncz wrtość krotki t n trucie A). Opercje n krotkch przeminownie Przkłd: δ A D ([A:, B:, C:c]) = [D:, B:, C:c]. Definicj (przeminownie trutów w krotce) Niech r ędzie krotką tpu U, B trutem w U i C trutem nie nleżącm do U. Przeminowniem trutu B n C w krotce r, co oznczm δ B C (r), nzwm krotkę t powstłą z r przez zminę trutu B n C, tj. tką krotkę t tpu U {B} {C}, że: t.a = r. A, dl kżdego A U {B}, t.c = t.b. Gd X jest zorem pustm (X = {}), to projekcj dowolnej krotki n X jest krotką pustą, tj. π {} (t) = [] Przkłd: π {} ([A:, B:, C:c]) = []. 9 Uogólnienie n ciągi trutów: Niech X=(B,, B k ) i Y=(C,, C k ) ędą ciągmi trutów, X U, Y U = {}. Przeminownie trutów z X n odpowidjące im trut z Y w krotce r definiujem nstępująco: δ X Y (r) = δ B k Ck (... (δ B C (r))...). 0
Opercje n krotkch złączenie Definicj (złączenie krotek) Niech r ędzie krotką tpu X, s krotką tpu Y. Jeśli ziór r s jest krotką, to nzwm go złączeniem nturlnm r i s, i oznczm r s. Jeśli r s nie spełni wrunków krotki, to mówim, że r i s są niezłączlne. Przkłd: [A:,B:,C:c] [D:d,E:e] = [A:,B:,C:c,D:d,E:e] krotki rozłącznch tpów; [A:,B:,C:c] [B:,E:e] = [A:,B:,C:c,E:e] krotki nierozłącznch tpów; [A:,B:,C:c] [] = [A:,B:,C:c] złączenie z krotką pustą nie zmieni krotki; [A:, B:, C:c] i [B:d, E:e] krotki niezłączlne! sum [A:, B:, C:c, B:d, E:e] nie jest krotką o trut B wstępuje dw rz rz z wrtością '' i powtórnie z wrtością 'd'. Włściwości projekcji i złąz łączeni krotek (5) π {} (t) = [] wnikiem projekcji krotki n ziór pust jest krotk pust []; r r = r złączenie krotki z smą soą nie zmieni krotki; r s= s t złączenie krotek jest przemienne; r (s t) =(r s) t złączenie krotek jest łączne; r [] = r krotk pust jest elementem neutrlnm dl złączeni; Spełninie wrunku przez krotkę Definicj (wrunek nd ziorem trutów U) Niech U ędzie ziorem trutów, Const ziorem stłch (licz, tekstów). Niech: A, A' U, c Const, θ {=,!=, <, <=, >, >=, like,... } opertor porównni. Wrunkiem nd U nzwm wrżenie logiczne E o nstępującej skłdni: E ::= A θ c A θ A' (E ) not E E or E E nd E Krotk r tpu U spełni wrunek E, E (r ) = TRUE, jeśli wrżenie powstłe z E przez podstwienie z kżde wstąpienie trutu A wrtości r.a jest prwdziwe. Spełninie wrunku przez krotkę Przkłd (3): E := (Kierunek= mt or Kierunek= fiz ) (Kierunek= mt or Kierunek= fiz )([NrStud:345, Kierunek: mt ]) = TRUE (Kierunek= mt or Kierunek= fiz )([NrStud:345, Kierunek: inf ]) = FALSE (Kierunek= mt or Kierunek= fiz )([NrStud:345, Kierunek:NULL]) = UNKNOWN Prolem wrtości pustch NULL 3 4
Spełninie wrunku przez krotkę Krotki: r = [NrStud:345, Kierunek: mt ] s = [NrStud:346, Kierunek:NULL] Wrunek: E Kierunek= mt Spełninie: E(r) = TRUE E(s)!= TRUE, E(s) = UNKNOWN Uwg: Wstępownie wrtości NULL powoduje, że dziłm w logice trójwrtościowej z wrtościmi logicznmi: {TRUE, FALSE, UNKNOWN} (lu {T, F, U}). Dowolne porównnie z NULL dje wrtość logiczną UNKNOWN. t.a θ NULL = UNKNOWN, NULL θ, dje UNKNOWN dl kżdego, również równego NULL. Opercje n telch (4). Projekcj: π X (R) = {π X (r) r R }. Przeminownie: δ X Y (R) := {δ X Y (r) r R } 3. Złączenie nturlne: R S = {r s r R, s S } 4. Selekcj: σ E (R ) = {r r R E (r ) = TRUE} 5 6 Opercje n telch projekcj Projekcj Projekcj: π X (R) = {π X (r) r R } Prolem dupliktów Cz (pielęgnirk, 500,00) powinn dw rz wstępowć w π {Stnowisko, Płc} (Prcownik)? - tk, jeśli chcem wliczć średnią płcę, - nie, jeśli sporządzm wkz stnowisk i płce n tch stnowiskch. 7 Szczególn przpdek: π {} (R) = if R = {} then {} else {[]} 8
Projekcj Opercje n telch przeminownie Przeminownie: δ A B (R) := {δ A B (r) r R } SQL: select Stnowisko, Płc from Prcownik usuwnie dupliktów: select distinct Stnowisko, Płc from Prcownik 9 30 Dl relcji: Przeminownie (przk (przkłd) Studenci(IdStud, Nzwisko, Dt_ur, Miejscowość) δ Miejscowość Misto (Studenci) SQL: select IdStud, Nzwisko, Dt_ur, Miejscowość s Misto from Studenci Opercje n telch złączenie Złączenie (nturlne): R S = {r s r R, s S } 3 3
Złączenie nturlne (c.d.) Złączenie nturlne (c.d.) >< >< 33 Złączenie nturlne (c.d.) Złączenie nturlne (c.d.) W złączenie nturlnm dwóch tel R i S tpów odpowiednio X i Y: trut wstępujące w X mogą wstępowć tkże w Y, relcj wnikow zwier sumę trutów z X i Y (ez powtórzeń), łączone są te krotki, które n wspólnch trutch mją jednkowe wrtości. SQL: lu: select Nzwisko, P.Oddził, Ordntor from Prcownik P, Oddził O where P.Oddził = O.Oddził select Nzwisko, P.Oddził, Ordntor from Prcownik P join Oddził O on P.Oddził = O.Oddził 35 36
Złączenie włściwości Szczególne przpdki złączeni: R relcj tpu X, S relcj tpu Y.. Jeśli X = Y, to R S = R S złączenie nturlne jest przekrojem mnogościowm.. Jeśli X Y = {}, to złączenie jest ilocznem krtezjńskim (kżd krotk z R łącz się z kżdą krotką z S). 3. R {[]} = R wnikiem złączeni teli R z telą tpu pustego zwierjącą krotkę pustą, jest tel R; 4. R {} = {} wnikiem złączeni teli R z pustą telą tpu pustego, jest tel pust; Złączenie włściwości (4) Twierdzenie (włściwości złączeni nturlnego i krtezjńskiego) R tel tpu U, wówczs:. R S = S R złączenie jest przemienne.. (R S) T = R (S T) złączenie jest łączne. 3. Jeśli X U, to R π X (R) = R złączenie teli R z dowolną swoją projekcją dje w wniku R. 4. Jeśli X Y = U, to R π X (R) π Y (R) tel jest zwrt w złączeniu dowolnch dwóch swoich projekcji, którch sum tpów jest równ tpowi relcji. Zchodzi zwiernie nie równość (!). 37 38 Ilustrcj włściwow ciwości (4) Ilustrcj włściwow ciwości (4) Sprz π,idtow (Sprz) π,dt (Sprz) Sprz π,idtow (Sprz) π,dt (Sprz) IdTow Dt IdTow Dt IdTow Dt IdTow Dt 3 3 3 3 π,idtow (Sprz) π,dt (Sprz) π,idtow (Sprz) π,dt (Sprz) IdTow Dt IdTow Dt?? Sprz π {,IdTow} (Sprz) π {,Dt} (Sprz), krotk [,, ] nie nleż do Sprz! 3 3 39 40
Opercje n telch selekcj Selekcj - przkłd Selekcj: σ E (R ) = {r r R E (r ) = TRUE} Wnikiem selekcji jest ziór tch krotek teli R, które spełniją wrunek E. select * from Studenci where Dt_ur > 98..3 nd Miejscowosc < > Poznń 4 4 Pochodne opercje n telch Iloczn krtezjński (c.d.) P P O O Iloczn krtezjński: R M N S = δ X M.X (R) δ Y N.Y (S) Kżd krotk z R jest łączon z kżdą krotką z S. Jeśli R m n R kolumn i m R wiersz, S m n S kolumn i m S wiersz, to R N M S m n R + n S kolumn i m R *m S wiersz. SQL: lu select P.Nzwisko, P.Oddził, O.Oddził, O.Ordntor from Prcownik P, Oddził O select P.*, O.* from Prcownik P, Oddził O 43 44
Złączenie wrunkowe, θ-złączenie ( (θ-join) Złączeni zewnętrzne (OUTER JOIN) Definicj (θ-złączenie) Niech R i S ędą telmi tpów odpowiednio X i Y, E niech ędzie wrunkiem selekcji nd ziorem trutów X Y. Złączeniem (wrunkowm) tel R i S, względem wrunku E, nzwm selekcję złączeni nturlnego R i S względem wrunku E R E S= σ E (R S), Celem wprowdzeni złączeni zewnętrznego jest to, w relcji wnikowej zwrte ł wszstkie krotki nleżące do jednego z rgumentów (relcji leżącej po lewej ądź po prwej stronie opertor), lo do odwu tch rgumentów i to niezleżnie od tego, cz dl dnej krotki istnieje dopsown do niej krotk nleżąc do drugiej relcji, cz nie. Wróżnim:. Złączenie zewnętrzne lewostronne - LEFT OUTER JOIN. Złączenie zewnętrzne prwostronne - RIGHT OUTER JOIN 3. Złączenie zewnętrzne pełne - FULL OUTER JOIN 45 46 Złączenie zewnętrzne lewostronne LEFT OUTER JOIN (LOJ) Definicj Niech R i S ędą telmi tpów odpowiednio X i Y, E niech ędzie wrunkiem selekcji nd ziorem trutów X Y. Lewostronnm złączeniem zewnętrznm tel R i S względem E, co oznczm, R + E S, nzwm nstępującą telę tpu X Y: R + E S= R E S {t Null(Y X) t R π X (R E S)} Złączenie zewnętrzne lewostronne - przkłd Podj dne o wszstkich studentów wrz z informcjmi o zdnch przez nich egzminch: Do wniku nleżą więc wszstkie krotki lewego opernd (R) złączone ądź z dopsownmi krotkmi teli S, ądź z wrtościmi NULL, gd rk dl nich w S dopsownch krotek. 47 48
Złączenie zewnętrzne prwostronne RIGHT OUTER JOIN (ROJ) Złączenie zewnętrzne prwostronne - przkłd Definicj Niech R i S ędą telmi tpów odpowiednio X i Y, E niech ędzie wrunkiem selekcji nd ziorem trutów X Y. Prwostronnm złączeniem zewnętrznm tel R i S względem E, co oznczm, R + E S, nzwm nstępującą telę tpu X Y: R + E S= R E S {Null(X Y) t t S π Y (R E S)} Do wniku nleżą więc wszstkie krotki prwego opernd (S) złączone ądź z dopsownmi krotkmi teli R, ądź z wrtościmi NULL, gd rk dl nich w R dopsownch krotek. 49 50 Złączenie zewnętrzne pełne FULL OUTER JOIN (FOJ) Definicj Niech R i S ędą telmi tpów odpowiednio X i Y, E niech ędzie wrunkiem selekcji nd ziorem trutów X Y. Pełnm złączeniem zewnętrznm tel R i S względem E, co oznczm, R + + E S, nzwm sumę mnogościową złączeń lewo- i prwostronnego tel R i S względem wrunku E: R + + E S= R + E S R + E S Złączenie zewnętrzne pełne -przkłd Podj wszstkich studentów, wszstkich prcowników wrz z informcjmi o promotorstwie prc mgisterskich. 5 5
Podzielenie ( (division) Podzielenie - przkłd Podj numer studentów, którz zdwli egzmin z kżdego przedmiotu. Definicj Niech dne ędą relcje R(U) i S(X) i niech X U. Podzieleniem relcji R(U) przez S(X) nzwm relcję R S, tką że: R S := {t π U X (R) s S. t s R}. 53 54 Podzielenie wrżenie z pomocą innch opercji T π U X (R) T π NrStud (Egzmin) T π U X ((S T) R) T π NrStud ((Przedmiot T) Egzmin) T = T T T = T T Przedmiot T Przedmiot T Egzmin Podzielenie (c.d) Podj numer studentów, którz zdwli egzmin z kżdego przedmiotu. Wrż zptnie tpu dl-kżdego Schemt rozumowni (z podwójną negcją): studenci, dl którch nie istnieje przedmiot, z którego nie zdwli egzminu select distinct E.NrStud from Egzmin E where not eists (select * from Przedmiot P where not eists (select * from Egzmin E where E.NrPrzed = P.NrPrzed nd E.NrStud = E.NrStud))) 55 56
Podzielenie (c.d) {e.nrstud Egzmin(E) p(przedmiot(p) e (Egzmin(e) e.nrprzed=p.nrprzed e.nrstud= e.nrstud))} Zstąpienie : (ϕ ϕ ) ( (ϕ ϕ )) {e.nrstud Egzmin(E) p(przedmiot(p) e (Egzmin(e) e.nrprzed=p.nrprzed e.nrstud= e.nrstud))} select E.NrStud from Egzmin E where not eists (select * from Przedmiot P where not eists (select * from Egzmin E where E.NrPrzed = P.NrPrzed nd E.NrStud = E.NrStud))) 57