420 likes | 634 Views
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 .
E N D
Povzeto po [2, 88-102] Relacijska algebra • O relacijskih poizvedovalnih jezikih • Relacijska algebra • Operacije relacijske algebre - 1 -
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 -
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 -
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 -
Relacijska algebra… • Izpeljava preseka s pomočjo operacije razlika A ∩ B = A – (A – B) A B - 5 -
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 -
zaloga<2 (R) Primer selekcije • Izpiši vse artikle z zalogo manjšo od 2 • zaloga<2 (R) R=ARTIKEL - 9 -
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 -
naziv, zaloga (R) Primer projekcije • Izpiši nazive in zalogo vseh artiklov • naziv, zaloga (R) R=ARTIKEL - 11 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
Primer kartezijskega produkta s selekcijo • R.šifra = S.šifra artikla ((šifra, naziv (R)) (šifra artikla, količina (S))) R=ARTIKEL S=RAČUN - 21 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
Združevalne operacije • GAAL(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 -
GAAL(R) Grupiramo po šifri računa Primer združevalnih operacij • Izpiši vrednosti posameznih računov? • R(račun, SkupnaCena)šifra računaSUM cena*količina (R) R=RAČUN R(račun, SkupnaCena) šifra računa SUM cena*količina (R) - 40 -
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 -
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 -