1 / 42

Relacijska algebra

Povzeto po [2, 88-102]. Relacijska algebra. O relacijskih poizvedovalnih jezikih Relacijska algebra Operacije relacijske algebre. O relacijskih poizvedovalnih jezikih. Relacijska algebra in relacijski račun sta formalna jezika povezana z relacijskim modelom .

gilles
Download Presentation

Relacijska algebra

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Povzeto po [2, 88-102] Relacijska algebra • O relacijskih poizvedovalnih jezikih • Relacijska algebra • Operacije relacijske algebre - 1 -

  2. O relacijskih poizvedovalnih jezikih • Relacijska algebra in relacijski račun sta formalna jezika povezana z relacijskim modelom. • Neformalno je relacijska algebra visoko-nivojski postopkovni jezik, relacijski račun pa nepostopkovni ali deklarativni jezik. • Formalno sta ekvivalentna. • Vsak jezik, s katerim lahko pridobimo relacije, ki jih je moč pridobiti z relacijskim računom, je relacijsko popoln (relationally complete). - 2 -

  3. Relacijska algebra… • Operacije relacijske algebre se izvedejo na eni ali več relacij, z namenom, da bi pridobili novo relacijo. Pri tem se osnovna relacija ne spremeni. • Tako operandi kot tudi rezultat so relacije  izhod ene operacije je lahko vhod v drugo. • Omogoča gnezdenje izrazov – tako kot velja za aritmetične izraze. Tej lastnosti jezika pravimo zaprtje (closure). - 3 -

  4. Relacijska algebra… • Relacijska algebra vsebuje pet osnovnih operacij: • Selekcija, • Projekcija, • Kartezijski produkt • Unija in • Razlika. • S temi operacijami se izvede večina poizvedb. • Možne so tudi izpeljane operacije: • Stik, • Presek in • količnik. - 4 -

  5. Relacijska algebra… • Izpeljava preseka s pomočjo operacije razlika A ∩ B = A – (A – B) A B - 5 -

  6. Operacije relacijske algebre… - 6 -

  7. Operacije relacijske algebre - 7 -

  8. Selekcija • predikat (R) • Deluje na enojni relaciji R; vrne relacijo, ki vsebuje samo tiste n-terice (vrstice) iz relacije R, ki zadoščajo določenemu pogoju (predikat). - 8 -

  9. zaloga<2 (R) Primer selekcije • Izpiši vse artikle z zalogo manjšo od 2 • zaloga<2 (R) R=ARTIKEL - 9 -

  10. Projekcija • s1, . . . , sn(R) • Deluje na enojni relaciji R; vrne relacijo, ki vsebuje samo tiste atribute (stolpce), ki so določeni s predikatom. • Operacija eliminira duplikate. - 10 -

  11. naziv, zaloga (R) Primer projekcije • Izpiši nazive in zalogo vseh artiklov • naziv, zaloga (R) R=ARTIKEL - 11 -

  12. Unija • R  S • Unija dveh relacij R in S je relacija, ki vsebuje vse n-terice (vrstice) relacije R in relacije S. • Operacija eliminira duplikate. • R in S se morata ujemati po atributih in njihovih podatkovnih tipih. • R(ime: text, EMSO: num(13))  S (priimek: text, starost: int) • Če ima relacija R I n-teric in relacija S J n-teric, potem njuna unija predstavlja združitev v eno relacijo z največ I+J n-teric. - 12 -

  13. Primer unije • Izpiši vsa mesta, kjer se nahajajo skladišča ali stranke • kraj (R) kraj (S) S=STRANKA R=ARTIKEL kraj (R) kraj (S) - 13 -

  14. Razlika • R – S • Razlika med relacijama R in S (R-S) vrne relacijo, ki vsebuje samo tiste n-terice (vrstice), ki so v R in jih ni v S. • R in S se morata ujemati po atributih in njihovih podatkovnih tipih. • R(ime: text, EMSO: int) - S (priimek: text, starost: int) - 14 -

  15. Primer razlike • Izpiši vsa mesta, kjer se nahajajo skladišča ne pa tudi stranke • kraj (R) -kraj (S) S=STRANKA R=ARTIKEL kraj (R) -kraj (S) - 15 -

  16. Presek • R  S • Presek med relacijama R in S (R  S) vrne relacijo, ki vsebuje tiste n-terice (vrstice), ki se nahajajo v obeh relacijah. • R in S se morata ujemati po atributih in njihovih podatkovnih tipih. • R(ime: text, EMSO: num(13)) - S (priimek: text, starost: int) • Presek lahko izpeljemo iz osnovnih operacij: R  S = R – (R – S) - 16 -

  17. Primer preseka • Izpiši vsa mesta, kjer se nahajajo tako skladišča kot stranke • kraj (R) kraj (S) S=STRANKA R=ARTIKEL kraj (R)  kraj (S) - 17 -

  18. Kartezijski produkt • R  S • Kartezijski produkt relacij R in S vrne vse možne kombinacije med n-tericami (vrsticami) relacije R in n-tericami (vrsticami) relacije S. - 18 -

  19. Primer kartezijskega produkta • Izpiši šifre, nazive in količino artiklov, ki se pojavljajo na računih • (šifra, naziv (R))  (šifra artikla, količina (S)) R=ARTIKEL S=RAČUN - 19 -

  20. Kartezijski produkt s selekcijo • S selekcijo lahko omejimo kartezijski produkt • Izpiši šifre, nazive in količino artiklov, ki se pojavljajo na računih, kjer je šifra artikla na računu enaka šifri artikla v artiklu • R.šifra = S.šifra artikla ((šifra, naziv (R))  (šifra artikla, količina (S))) - 20 -

  21. Primer kartezijskega produkta s selekcijo • R.šifra = S.šifra artikla ((šifra, naziv (R))  (šifra artikla, količina (S))) R=ARTIKEL S=RAČUN - 21 -

  22. Stične operacije… • Kartezijski produkt s selekcijo združimo v eno operacijo, ki jo imenujemo stik. • Stik je ena najbolj časovno kompleksnih operacij s stališča implementacije v relacijskih SUPB; eden ključnih “krivcev” za probleme z učinkovitostjo. - 22 -

  23. Stične operacije… • Kartezijski produkt s selekcijo združimo v eno operacijo, ki jo imenujemo stik. • Stik je ena najbolj časovno kompleksnih operacij s stališča implementacije v relacijskih SUPB; eden ključnih “krivcev” za probleme z učinkovitostjo. • Ključno za učinkovitost optimizacije poizvedb je: • iskalni prostor: koliko različnih strategij imamo ter • algoritem za iskanje najboljše strategije. - 23 -

  24. Iskalni prostor • V splošnem je iskalni prostor lahko izjemno velik. • Že pri stikih na voljo izjemno veliko možnosti: npr. pri n relacijah možnih x = (2(n-1)!)/(n-1)! različnih stikov. • Če n = 4  x = 120 • Če n = 6  x = 30.240 • Če n = 10  x je več kot 176 bilijonov. • Obstajajo metode, s pomočjo katerih zmanjšamo iskalni prostor. - 24 -

  25. Stične operacije… • Obstaja več vrst stičnih operacij: • Stik Theta (Theta join) • Ekvistik (Equijoin) poseben primer stika Theta) • Naravni stik (Natural join) • Odprti stik (Outer join) • Delni stik (Semijoin) - 25 -

  26. Stik Theta ( stik)… • R FS • Stik Theta med relacijama R in S vrne n-terice (vrstice), ki zadoščajo predikatu F kartezijskega produkta R in S. • Predikat F je oblike R.ai  S.bi, kjer je aritmetična operacija (<, , >, , =, ). - 26 -

  27. Stik Theta ( stik) • Theta stik lahko izpeljemo s pomočjo selekcije in kartezijskega produkta: • R F S = F(R  S) • Stopnja Theta stika med R in S je seštevek stopenj operandov relacij R in S. Če predikat F vsebuje zgolj enakost (=), gre za stik tipa Ekvistik. - 27 -

  28. Primer stika Ekvistik • Izpiši šifre, nazive in količino artiklov, ki se pojavljajo na računih, kjer je šifra artikla na računu enaka šifri artikla v artiklu • (šifra, naziv (R))R.šifra = S.šifra artikla (šifra artikla, količina (S)) R=ARTIKEL S=RAČUN - 28 -

  29. Naravni stik • R S • Naravni stik relacij R in S je posebna vrsta ekvistika prek skupnih atributov relacij R in S. • Pri vsakem stiku se vzame le en primerek skupnega atributa. - 29 -

  30. Primer naravnega stika • Izpiši šifre, nazive in količino artiklov, ki se pojavljajo na računih, kjer je šifra artikla na računu enaka šifri artikla v artiklu • (šifra, naziv (R)) (šifra, količina (S)) R=ARTIKEL S=RAČUN - 30 -

  31. Odprti stik • Odprti stik nam omogoča, da prikažemo n-terice (vrstice), ki nimajo vrednosti v stičnem atributu (stolpcu). RS • Obstajata levo odprti in desno odprti stik. • Levo odprti stik med relacijama R in S je stik, kjer so n-terice relacije R, ki nimajo para v S z enakim stičnim atributom, vključene v rezultat. - 31 -

  32. Primer odprtega stika • Izpiši osebe in njihova začasna prebivališča • (Priimek in ime, PTT (R)) S R=OSEBA S=KRAJ (Priimek in ime, PTT(R)) S - 32 -

  33. Delni stik • R F S • Delni stik predstavlja relacijo, ki vsebuje tiste n-terice (vrstice) relacije R, ki nastopajo v stiku z relacijo S. • Delni stik lahko zapišemo s pomočjo projekcije in stika. • R F S = A(R F S) - 33 -

  34. Primer delnega stika • Izpiši vse podrobnosti o artiklih, ki se nahajajo v skladišču v Ljubljani • R R.skladišče = S.šifra(šifra = ‘LJ’ (S)) R=ARTIKEL S=SKLADIŠČE - 34 -

  35. Količnik • R / S • Količnik med relacijama R in S vrne relacijo z atributi C, ki jo sestavljajo n-terice (vrstice) iz R, ki ustrezajo kombinaciji vsake n-terice v S. • Količnik T = R/S lahko izrazimo z osnovnimi operacijami: T1  C(R) T2  C((S  T1) – R) T  T1 – T2 - 35 -

  36. Primer količnika • Izpiši vse kupce, ki so kupili vse izdelke dobavitelja Karma. • (šifra, kupec(R)) / (šifra artikla(dobavitelj = ‘Karma’ (S))) šifra, kupec (R) šifra artikla(dobavitelj = ‘Karma’ (S)) - 36 -

  37. Agregatne operacije • AL(R) • Agregat AL aplicira seznam agregatnih funkcij AL na relaciji R in vrne takóagregirano relacijo. • AL vsebuje enega ali več parov (<agregatna funkcija>, <atribut>). • Osnovne agregatne funkcije so COUNT, SUM, AVG, MIN, and MAX. - 37 -

  38. Primer agregatnih operacij • Kakšna je povprečna cena artiklov v skladišču? • R(AvgCena) AVGCena (Zaloga > 0 (R)) Operacija R(ime) Op poimenuje atribut, ki ga dobimo z operacijami Op nad relacijo R, z imenom ime R=ARTIKEL R(AvgCena) AVGCena (Zaloga > 0 (R)) - 38 -

  39. Združevalne operacije • GAAL(R) • Združevalne operacije združijo n-terice relacije R tako, da jih grupirajo po atributih GA. • Relacija, ki jo tako pridobimo, vsebuje atribute GA ter vrednosti, ki jih pridobimo z apliciranjem agregatov iz AL nad vsako posamezno skupino iz GA. - 39 -

  40. GAAL(R) Grupiramo po šifri računa Primer združevalnih operacij • Izpiši vrednosti posameznih računov? • R(račun, SkupnaCena)šifra računaSUM cena*količina (R) R=RAČUN R(račun, SkupnaCena) šifra računa SUM cena*količina (R) - 40 -

  41. Vaja… • Imamo naslednje relacije: Hotel (hotelNo, hotelName, address) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, guestName, guestAddress) • Opiši relacije, ki jih pridobimo z naslednjimi operacijami relacijske algebre: • Hotel.hotelNo=Room.hotelNo(Hotel  Room)) • hotelName(Hotel Hotel.hotelNo = Room.hotelNo(price > 50(Room))) • Guest (dateTo ≥ ‘1.1.2002’(Booking)) • guestName(BookingBooking.guestNo=Guest.guestNoGuest) /hotelNo(address = ‘London’(Hotel)) - 41 -

  42. Vaja • Z uporabo relacijske algebre naredite pogled, ki bo vključeval vse podatke o sobah iz Grosvenor hotela, razen podatka o ceni. roomNo, hotelNo, type(RoomhotelNo (hotelName=‘Grosvenor Hotel’ (Hotel))) • Kaj je prednost takšnega pogleda? - 42 -

More Related