750 likes | 989 Views
Lekcija 8. Baze podataka. Relaciona algebra. Relaciona algebra. Relaciona algebra pripada kategoriji formalnih upitnih jezika proceduralnog karaktera Čini je skup operatora za rad sa relacijama, a rezultati operacija su takođe relacije
E N D
Lekcija 8 Baze podataka Relaciona algebra Relaciona algebra
Relaciona algebra • Relaciona algebra pripada kategoriji formalnih upitnih jezika proceduralnog karaktera • Čini je skup operatora za rad sa relacijama, a rezultati operacija su takođe relacije • Relaciona algebra je osnova za upitne jezike koje koriste ljudi • Svaki od algebarskih izraza je jedan upit ili pretraživanje • Upitni jezik – jezik kojim korisnici zahtevaju informacije iz BP Relaciona algebra
Relaciona algebra- operacije - • Čini je skup od 8 operacija koje se nazivaju osnovnim (5 elementarnih i 3 izvedene) • Elementarne: restrikcija (selekcija), projekcija, unija, razlika, Dekartov proizvod • Izvedene: presek, spajanje, deljenje • Klasifikacija prema broju operanada: • Unarne (1 operand) • Binarne (2 operanda) • E.F.Codd podela: • Tradicionalne (pogodne za ažuriranje) • Posebne (pogodne za izveštavanje) Relaciona algebra
Relaciona algebra- operacije - Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Definicija: iz polazne relacije po zadatom kriterijumu izdvaja podskup n-torki • Izbor n-torki koje zadovoljavuju određeni uslov • Kriterijum je neki logički izraz koji je izračunljiv nad svakom n-torkom • Dobijena relacija ima istu strukturu kao i polazna Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Notacija - P(r) • P – uslov za selekciju • P se sastoji iz članova koji su povezani sa: (and), (or), (not) • Svaki član je u sledećoj formi: <atribut>op <atribut> ili <konstanta> gde jeopjedan od: =, , >, , <, • Primer selekcije:BrInd=‘125/2004’(student) Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Relacijar A B C D 1 5 12 23 7 7 3 10 • A=B ^ D > 5(r) A B C D 1 23 7 10 Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Primer: Iz relacije naslov izdvojiti samo one naslove čija je šifra oblasti (SIFO) jednaka PJ • SIFO=‘PJ’(naslov) t(SIFN,NAZIV,SIFO) • Dobija se relacija t:t (SIFN NAZIV SIFO) PP00 PASCAL programiranje PJ PJC0 Programski jezik C PJ Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Primer: Posmatra se relacija je_autor. Da bi dobili podatke za naslove koji imaju više od jednog autora primeniti:KOJI>1(je_autor) t(SIFA,SIFN,KOJI)t (SIFA SIFN KOJI) JN0 RBP0 2 DM0 PP00 2 IT0 PP00 3 ZP0 PJC0 2 Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Operacija restrikcije kao rezultat može da da prazan skup n-torki. • Primer: Izdvojiti sve autore koji imaju više od tri naslovaKOJI3(je_autor) t(SIFA,SIFN,KOJI)= • Zaključakza restrikciju: • Struktura relacije se ne menja, šema rezultata odgovara šemi operanda (polazne relacije) • Za broj n-torki u relaciji važi:N(t) N(r) • Restrikcija, selekcija selekcija n-torki Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Primer: Nad relacijom student(BrInd#,Ime,Adresa,Telefon,,...) • Napraviti restrikciju po atributu Adresa • Izdvojiti samo one studente koji su iz Subotice • ADRESA=‘Subotica’(student) • Prethodnom restrikcijom nastaje iz relacije student nova relacija, sa novim imenom • Upiti kojima se vrši selekcija moraju uvek biti logični i izvodljivi Relaciona algebra
Restrikcija ()(selekcija, ograničenje) • Nad relacijom kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS) • Želimo da vidimo sve transakcije kredita u ekspozituri IEX • IME_EXP=IEX(kredit) kredit_IEX(...) • Dozvoljeno je koristiti sledeće operatore:=, ≠, <, >, ≤, ≥, , npr: (IME_EXP=IEX) (IZNOS>1000)(kredit) • Kao kriterijum se može uvesti i poređenje između dva atributa Relaciona algebra
restrikcija: y>2 restrikcija: y>2 and X<>'C' Relaciona algebra
Projekcija () • Definicija: iz polazne relacije po zadatom skupu atributa formira se nova relacija kao skup n-torki nad tim atributima • Zadati skup atributa mora biti podskup skupa atributa polazne relacije • Vrednosti atributa u n-torkama nastale relacije odgovaraju onima u polaznoj relaciji Relaciona algebra
Projekcija () • Primenom operacije projekcije moguće je da više n-torki polazne relacije daje iste vrednosti • Pošto rezultat operacije mora biti relacija, uzima se samo jedna rezultantna relacija • Primer: Iz relacije naslov želimo da dobijemo pregled svih naziva i šifara oblasti: NAZIV,SIFO(naslov) t(NAZIV,SIFO) • Kao rezultat dobija se relacijat ( NAZIV SIFO) Relacione baze podataka BP Računarske komunikacije RM PASCAL programiranje PJ Programski jezik C PJ Relaciona algebra
Projekcija () A B C • Relacijar: 10 20 30 40 1 1 1 2 • A,C (r) A C A C 1 1 1 2 1 1 2 = Relaciona algebra
Projekcija () • Ilustracija slučaja kada više n-torki polazne relacije daje jednu n-torku u novoj:SIFO(naslov) t(SIFO) • Kao rezultat dobija se relacijat ( SIFO) BP RM PJ • Vrednost PJ se pojavljuje jednom dok je u polaznoj relaciji naslov ta vrednost prisutna dva puta Relaciona algebra
Projekcija () • Jedna od namena operacije projekcije je promena redosleda atributa:NAZIV,SIFN,SIFO(naslov)t(NAZIV,SIFN,SIFO) • Kao rezultat dobija se relacijat ( NAZIV SIFN SIFO) Relacione baze podataka RBP0 BP Računarske komunikacije RK00 RM PASCAL programiranje PP00 PJ Programski jezik C PJC0 PJ Relaciona algebra
Projekcija () • Operacije relacione algebre se mogu kombinovati • Primer: Složena operacijaNAZIV(SIFO=‘PJ’(naslov))pj_naslov(NAZIV) • Kao rezultat dobijaju se nazivi svih naslova za koje je šifra oblasti jednaka ‘PJ’:pj_naslov ( NAZIV) PASCAL programiranje Programski jezik C • Zaključakzа projekciju: • Šema relacije se menja i određuje je zadati skup atributa • Za broj n-torki u relaciji važi: N(t) N(r) • Projekcija selekcija po atributima Relaciona algebra
Projekcija () • Primer: Nad relacijom roba(SIFRA#,NAZIV,PROIZVOĐAČ,DATUM,ADRESA,...) • Projekcija relacije roba po atributima: SIFRA#, NAZIV i ADRESA dobili bi novu relaciju:roba1(SIFRA#,NAZIV,ADRESA)koja ima isti broj n-torki kao i polazna • Primer:student(BROJIND#,IME,PREZIME,IMEOCA,DATROD,…) • Projekcija po BROJIND#, zadržava se broj n-torki • Projekcija po IME, smanjuje se broj n-torki (moguće su greške, jer se brišu svi ostali studenti) Relaciona algebra
Projekcija () • Primer: Nad relacijom kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS) • Želimo da vidimo klijente i ekspoziture iz kojih su klijenti uzeli kredit • Ne interesuje nas iznos kredita niti broj kredita • IME_EXP, IME_KL(kredit) kredit_lista(IME_EXP, IME_KL) Relaciona algebra
Projekcija () • Rezultat primene je podskup kolona relacije, uz uklanjanje duplikata projekcija na kolone x i y Relaciona algebra
Unija () • Definicija: iz dve polazne relacije formira novu koja sadrži sve n-torke iz obe relacije • Ova operacija nije moguća između bilo koje dve relacije, tj. mora biti zadovoljeno: • Šeme relacija moraju imati isti broj atributa • Atributi šema relacija redom odgovaraju po značenju i tipu (ne mora po nazivu) • Navedeni uslovi se nazivaju:unijska kompatibilnost Relaciona algebra
Unija () • Svaka n-torka koja je prisutna u obe relacije pojavljuje se samo jednom u rezultantnoj • Primer: Posmatraju se relacije clan i autor. Ako želimo podatke o svim osobama u evidenciji, to se postiže primenom operacije unije:clan autor osoba(SIFx,IME) Relaciona algebra
Unija () • Relacije r, s: A B A B 1 2 1 2 3 s r A B r s: 1 2 1 3 Relaciona algebra
Unija () • Primer: Posmatraju se relacije drzi i pozajmica. Želimo da utvrdimo koje knjige su trenutno ili su nekada bile kod članova. • Pre operacije unije prvo se moraju uskladiti šeme relacija:SIFK(drzi) t1(SIFK) SIFK(pozajmica) t2(SIFK) • Zatim se primeni operacija unije:t1 t2 knjiga_u_prometu(SIFK) • Zaključakzа uniju: • Šeme relacija se prethodno moraju uskladiti • max(N(r),N(s)) N(t) N(r)+N(s) Relaciona algebra
Unija () A B AB Relaciona algebra
Unija () • Primer: Nad relacijama kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)racun(IME_EXP, BR_RAC#, IME_KL#, STANJE)Naći sve klijente koji u ekspozituri IEX imaju ili račun ili kredit • Naći sve klijente koji imaju kredit u IEX IME_KL(IME_EXP=IEX(kredit)) t1 • Naći sve klijente koji imaju racun u IEX IME_KL(IME_EXP=IEX(racun)) t2 • Rezultat je: t1 t2 Relaciona algebra
Unija () Relaciona algebra
Razlika (-) • Definicija: iz dve polazne relacije formira novu koja sadrži sve n-torke prve relacije koje se ne nalaze u drugoj • Ova operacija je moguća samo između unijski kompatibilnih relacija. Relaciona algebra
Razlika (-) • Primer: Posmatraju se relacije drzi i pozajmica. Želimo da utvrdimo koji članovi čitaju koje knjige prvi put. • Pre operacije razlika prvo se moraju uskladiti šeme relacija:SIFC,SIFK(drzi) t1(SIFC,SIFK) SIFC,SIFK(pozajmica) t2(SIFC,SIFK) • Zatim se primeni operacija razlike:t1 - t2 cita_1(SIFC,SIFK) Relaciona algebra
t1 ( SIFC SIFK ) JJ0 001 PP0 002 JJ0 004 Razlika (-) t2 ( SIFC SIFK ) JJ0004 PP0 007 JJ1 005 JJ0 008 PP0 002 JJ1 009 t1-t2 = cita_1 ( SIFC SIFK ) JJ0001 Relaciona algebra
Razlika (-) • Primer: Ako želimo uvid u šifre članova koji trenutno ne drže ni jednu knjigu kod sebe, mora se izvršiti sledeća sekvenca operacija: SIFC(clan) t1(SIFC)SIFC(drzi) t2(SIFC)t1 - t2 ne_drzi(SIFC) • Zaključakzaoperaciju razlika: • Šeme relacija se prethodno moraju uskladiti • Broj n-torki u rezultatu 0 N(t) N(r) Relaciona algebra
Razlika (-) t1 ( SIFC ) JJ0 JJ1 PP0 MM0 t2 ( SIFC ) JJ0 PP0 JJ0 t1-t2 = ne_drzi ( SIFK ) JJ1 MM0 Relaciona algebra
Razlika (-) A B A-B B-A Relaciona algebra
Razlika (-) • Primer: Nad relacijama kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)racun(IME_EXP, BR_RAC#, IME_KL#, STANJE)Naći sve klijente koji u ekspozituri IEX imaju račun ali još uvek nemaju kredit • Naći sve klijente koji imaju racun u IEX IME_KL(IME_EXP=IEX(racun)) t1 • Naći sve klijente koji imaju kredit u IEX IME_KL(IME_EXP=IEX(kredit)) t2 • Rezultat je: t1 - t2 Relaciona algebra
Razlika (-) Relaciona algebra
Presek () • Definicija: iz dve polazne relacije formira novu koja sadrži sve n-torke prve relacije koje se nalaze u drugoj relaciji • Ova operacija je moguća samo između unijski kompatibilnih relacija. • Presek je izvedena operacija, može se izvesti iz: rs = r – (r-s) Relaciona algebra
Presek () • Primer: Posmatraju se relacije drzi i pozajmica. Želimo da odredimo koji članovi ponovo čitaju koju knjigu. • Pre operacije presek prvo se moraju uskladiti šeme relacija:SIFC,SIFK(drzi) t1(SIFC,SIFK) SIFC,SIFK(pozajmica) t2(SIFC,SIFK) • Zatim se primeni operacija preseka:t1 t2 cita_opet(SIFC,SIFK) • Zaključak за operaciju presek: • Šeme relacija se prethodno moraju uskladiti • Broj n-torki u rezultatu 0 N(t) min(N(r),N(s) Relaciona algebra
t1 ( SIFC SIFK ) JJ0 001 PP0 002 JJ0 004 t2 ( SIFC SIFK ) JJ0004 PP0 007 JJ1 005 JJ0 008 PP0 002 JJ1 009 t1 t2 = cita_opet ( SIFC SIFK ) PP0002 JJ0 004 Relaciona algebra
Presek () A B AB Relaciona algebra
Presek () • Primer: Nad relacijama kredit(BR_KRED#, IME_EXP, IME_KL, IZNOS)racun(IME_EXP, BR_RAC#, IME_KL#, STANJE)Naći sve klijente koji u ekspozituri IEX imaju i račun i kredit • Naći sve klijente koji imaju racun u IEX IME_KL(IME_EXP=IEX(racun)) t1 • Naći sve klijente koji imaju kredit u IEX IME_KL(IME_EXP=IEX(kredit)) t2 • Rezultat je: t1 t2 Relaciona algebra
Presek () Relaciona algebra
Dekartov proizvod () • Definicija: iz dve polazne relacije formira se nova sa n-torkama dobijenim tako što se svaka n-torka prve relacije spaja sa svakom iz druge • Šema nastale relacije sadrži sve atribute polaznih relacija • Označavanje: za puni naziv atributa se može koristiti relacija.atribut Relaciona algebra
Dekartov proizvod () A B C D E Relacijer, s: 1 2 10 10 20 10 a a b b r s A B C D E r x s: 1 1 1 1 2 2 2 2 10 10 20 10 10 10 20 10 a a b b a a b b Relaciona algebra
Dekartov proizvod • Primer: Posmatraju se relacije naslov i oblast. Ako izvršimo operaciju Dekartovog proizvoda: • naslov oblast t(SIFN,N.NAZIV,N.SIFO,O.SIFO,O.NAZIV) • Dobijena relacija kao celina nema smisla, međutim pojedine n-torka imaju jasno značenje • Zaključakzа operaciju Dekartov proizvod: • Šema rezultantne relacije sadrži sve atribute polaznih relacija • Broj n-torki u rezultatu: N(t) = N(r)N(s) Relaciona algebra
Dekartov proizvod t (SIFN, NAZIVN.SIFO O.SIFO O.NAZIV ) RBP0 Relacione baze podataka BP BP Baze podataka RBP0 Relacione baze podataka BP RM Računarske mreže RBP0 Relacione baze podataka BP PJ Programski jezici RK00 Računarske komunikacuje RK BP Baze podataka RK00 Računarske komunikacuje RK RM Računarske mreže RK00 Računarske komunikacuje RK PJ Programski jezici PP00 PASCAL Programiranje PJ BP Baze podataka PP00 PASCAL Programiranje PJ RM Računarske mreže PP00 PASCAL Programiranje PJ PJ Programski jezici PJC0 Programski jezik C PJ BP Baze podataka PJC0 Programski jezik C PJ RM Računarske mreže PJC0 Programski jezik C PJ PJ Programski jezici U označenim n-torkama, uz svaki deo iz relacije naslov nalazi se odgovarajući deo iz relacije oblast Relaciona algebra
Dekartov proizvod • Primer: Nad relacijama klijent(IME_KL, UL_BR, GRAD),licni_bankar(IME_KL, IME_SL)Naći sve klijente sa ličnim bankarom IS1 i gradove u kojima klijenti žive • licni_bankar klijent t(LB.IME_KL, LB.IME_SL, K.IME_KL, K.UL_BR, K.GRAD) • Broj n-torki • u klijent je N1, u licni_bankar je N2 • u t je N1N2 • Neke od n-torki u t su ne važeće Relaciona algebra
Klijent Lični_bankar Klijent Lični_bankar Relaciona algebra
Spajanje (><) • Definicija: iz dve polazne relacije formira se nova sa n-torkama dobijenim u dva koraka: • Svaka n-torka iz prve relacije redom se spaja sa svim n-torkama iz druge relacije • Iz tako dobijenih n-torki izdvajaju se one koje zadovoljavaju zadati uslov P Relaciona algebra