Zbirka rje senih zadataka iz baza podataka Zadatak 2.1 Zadana je relacija artikl Sifra Naziv Jedini cna cijena 1 Kava 8 2 Rakija 4 3 Klipi c 2 Zadana su ograni cenja: Sifra je primarni klju c ...

Download Zbirka rje senih zadataka iz baza podataka  Zadatak 2.1 Zadana je relacija artikl Sifra Naziv Jedini cna cijena 1 Kava 8 2 Rakija 4 3 Klipi c 2 Zadana su ograni cenja: Sifra je primarni klju c ...

Post on 06-Feb-2018

220 views

Category:

Documents

5 download

TRANSCRIPT

Doc. dr. sc. Markus SchattenZbirka rjesenih zadataka iz baza podatakaSadrzaj1 Relacijska algebra 11.1 Izracun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 SQL 9iiiPredgovoriiiiv1 Relacijska algebra1.1 Izracun upitaZadatak 1.1 Zadane su relacije i ogranicenje:r1 A B C1 0 22 0 22 1 3r2 B C D1 1 20 2 20 2 3F = (A = D)Neka je zadan upit RA(U):F (AD(r1 oo r2))Izracunajte odgovor na upit koristeci relacijsku algebru.Rjesenje Sa si oznacavat cemo medurezultate.s1 =r1 oo r2 A B C D1 0 2 21 0 2 32 0 2 22 0 2 3s2 =AD(s1) A D1 21 32 22 3t1 : (1 = 2) t2 : (1 = 3) t3 : (2 = 2) >1t4 : (2 = 3) F (s2) A D2 2Zadatak 1.2 Zadane su relacije i ogranicenje:r1 A B C1 3 12 0 2r2 A B C1 1 22 0 23 2 3F = (A > B) (C 6= 2)Neka je zadan upit RA(U):AB(F (r1 r2))Izracunajte odgovor na upit koristeci relacijsku algebru.Rjesenje Sa si oznacavat cemo medurezultate.s1 =r1 r2 A B C1 3 12 0 21 1 23 2 3t1 : (1 > 3) (1 6= 2) > >t2 : (2 > 0) (2 6= 2) > >t3 : (1 > 1) (2 6= 2) t4 : (3 > 2) (3 6= 2) > > >s2 =F (s1) A B C1 3 12 0 23 2 3AB(s2) A B1 32 03 2Zadatak 1.3 Zadane su relacije i ogranicenjer A B C1 3 12 0 2s B C D1 1 23 2 3H = [(A 6 s.C ) (r .B > s.B)] (A < s.C )Izracunajte AC (r .C ,s.B(H(r s))).2Rjesenje Sa ri oznacavat cemo medurezultate.r1 =r s A r .B r .C s.B s.C D1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3t1 : [(1 6 1) (3 > 1)] (1 < 1) [> >] > t2 : [(1 6 2) (3 > 3)] (1 < 2) [> ] > > > >t3 : [(2 6 1) (0 > 1)] (2 < 1) [ ] >t4 : [(2 6 2) (0 > 3)] (2 < 2) [> ] > r2 =H(r1) A r .B r .C s.B s.C D1 3 1 3 2 32 0 2 1 1 2r3 =r .C ,s.B(r2) r .C s.B1 32 1AC (r3) = r .C (r3) r .C12oos.B(r3) s.B31 r3=r .C (r3) oo s.B(r3) r .C s.B1 31 12 32 1 r3=AC (r3) r .C s.B1 12 3Zadatak 1.4 Zadane su relacije i ogranicenjer1 A B C2 2 11 1 03 1 1r2 B C D2 1 01 1 21 0 2F = [(A < B)(B 6= 2)] (B 6= C )Potrebno je izracunati upit RA(U) : AC (AD(F (r1 oo r2)))Rjesenje Sa si cemo oznacavati medurezultate.s1 =r1 oo r2 A B C D2 2 1 01 1 0 23 1 1 2t1 : [(2 < 2) (2 6= 2)] (2 6= 1) [ ] > > >3t1 : [(1 < 1) (1 6= 2)] (1 6= 0) [ >] > > > >t1 : [(3 < 1) (1 6= 2)] (1 6= 1) [ >] > s2 =F (s1) A B C D2 2 1 01 1 0 2s3 =AD(s2) A D2 01 2AC (s3) = A(s3) A21ooD(s3) D02 s3=A(s3) oo D(s3) A D2 02 21 01 2 s3=AC (s3) A D2 21 0Zadatak 1.5 Zadane su relacije i ogranicenje:r1 A B C4 2 32 0 21 1 2r2 A B C1 1 22 0 23 2 3F = [(A > B) (C 6= 2)] (A > 2)Neka je zadan upit RA(U):AC (AB(F (r1 r2)))Izracunajte odgovor na upit koristeci relacijsku algebru.Rjesenje Sa si oznacavat cemo medurezultate.s1 =r1 r2 A B C1 1 22 0 2[(1 > 1) (2 6= 2)] (1 > 2) [ ] >[(2 > 0) (2 6= 2)] (2 > 2) [> ] > s2 =F (s1) A B C1 1 2s3 =AB(s2) A B1 14AC (s3) =(A(s3) A1ooB(s3) B1) s3=A(s3) oo B(s3) A B1 1 s3=AC (s3) A BZadatak 1.6 Zadane su relacije i ogranicenja:r1 A B C D2 2 b 31 4 b 25 1 a 2r2 A B D1 1 22 2 33 2 3F = (A 6 B) (D 6= 2)G = (C 6= a)Neka je zadan upit RA(U):AC (ABD(G (r1)) F (r2))Izracunajte odgovor na upit koristeci relacijsku algebru.Rjesenje Sa si oznacavat cemo medurezultate.s1 =G (r1) A B C D2 2 b 31 4 b 2(b 6= a) >(b 6= a) >(a 6= a) s2 =ABD(s1) A B D2 2 31 4 2s3 =F (r2) A B D2 2 3(1 6 1) (2 6= 2) > (2 6 2) (3 6= 2) > > >(3 6 2) (4 6= 2) > s4 =s2 s3 A B D2 2 31 4 25AC (s4) = A(s4) A21ooB(s4) B24ooD(s4) D32 s4=A(s4) oo B(s4) oo D(s4) A B D2 2 32 2 22 4 32 4 21 2 31 2 21 4 31 4 2 s4=AC (s4) A B D2 2 22 4 32 4 21 2 31 2 21 4 31.2 Relacijska algebra i SQLZadatak 1.7 Zadane su relacije:r A B C1 3 12 0 2s B C D1 1 23 2 3Neka je zadan upit SQL(U):SELECT r . A, r . B, s .DFROM r , sWHERE r . C = s . CAND A > 1(a) Iskazite upit u relacijskoj algebri (RA(U))(b) Izracunajte odgovor na upit koristeci relacijsku algebru.Rjesenje Rjesavamo (a). Iz SELECT klauzule iscitavamo elemente u konacnoj projekciji. Sa rioznacavat cemo relacije koje jos valja izracunati:A r .B D(r1)Iz WHERE klauzule iscitavamo formulu za selekciju:F = (r .C = s.C ) (A > 1)Sada imamor1 = F (r2)odnosno:6r1 = (r .C=s.C)(A>1)(r2)Iz FROM klauzule iscitavamo relacije koje valja staviti u produkt. Stoga imamo:r2 = r sKonacno rjesenje je stoga:A r .B D((r .C=s.C)(A>1)(r s))Rjesavamo (b).r s A r .B r .C s.B s.C D1 3 1 1 1 21 3 1 3 2 32 0 2 1 1 22 0 2 3 2 3t1 : (1 = 1) (1 > 1) > t2 : (1 = 2) (1 > 1) t3 : (2 = 1) (2 > 1) > t4 : (2 = 2) (2 > 1) > > >(r .C=s.C)(A>1)(r s) A r .B r .C s.B s.C D2 0 2 3 2 3A r .B D((r .C=s.C)(A>1)(r s)) A r .B D2 0 3Zadatak 1.8 Zadane su relacije i ogranicenje:r1 A B C D1 a 1 2 b 2 2 c 2 r2 A B E1 a 22 c 23 a 3F = (A > C ) (D 6= )Neka je zadan upit RA(U):AC (F (r1 oo r2))(a) Izracunajte odgovor na upit koristeci relacijsku algebru.(b) Pretvorite RA(U) u SQL(U)Rjesenje Rjesavamo (a):S si oznacavat cemo medurezultate.s1 =r1 oo r2 A B C D E1 a 1 22 c 2 27t1 : (1 > 1) ( 6= ) > t2 : (2 > 2) ( 6= ) > s2 =F (s1) A B C D Es3 = AC (F (r1 oo r2)) =AC (s2) A CRjesavamo (b):Pocinjemo sa SELECT klauzulom koja je ekvivalentna konacnoj projekciji:SELECT A, CU FROM klauzuli moraju se pojaviti sve relacije iz RA(U):FROM r1, r2U WHERE klauzuli moramo uvrstiti ogranicenje F :WHERE A > C AND D Prirodni spoj je samo dodatno ogranicenje u WHERE klauzuli:r1.A = r2.A AND r1.B = r2.BDakle ukupni upit je:SELECT A, CFROM r1, r2WHERE A > C AND D AND r1.A = r2.A AND r1.B = r2.BOvaj rezultat nije u potpunosti tocan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji seatribut A misli (A iz r1 ili A iz r2). SQL stroj u pravilu ne zakljucuje o jednakosti atributa temeljemimena, vec temeljem imena i relacije u kojoj se oni nalaze, zbog cega je potrebno koristiti notacijunaziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacijeizjednacava atributom u drugoj relaciji (uvjet prirodnog spoja), u nasem slucaju mozemo proizvoljnoodabrati relaciju:SELECT r1.A, CFROM r1, r2WHERE r1.A > C AND D AND r1.A = r2.A AND r1.B = r2.B82 SQLZadatak 2.1 Zadana je relacijaartikl Sifra Naziv Jedinicna cijena1 Kava 82 Rakija 43 Klipic 2Zadana su ogranicenja: Sifra je primarni kljuc relacije Svaki artikl mora imati jedinstven naziv Jedinicna cijena ne smije biti negativna(a) Kreirajte u SQL-u strukturu tablice artikl s odgovarajucim ogranicenjima.(b) Neka je zadan upit U : odrediti sve one sifre i nazive artikala cija je cijena veca od 3. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.Rjesenje Rjesavamo (a):CREATE TABLE a r t i k l(s i f r a INT PRIMARY KEY,n a z i v VARCHAR UNIQUE , j e d i n i c n a c i j e n a FLOAT CHECK( j e d i n i c n a c i j e n a > 0 ))Rjesavamo (b):SQL(U):SELECT s i f r a , n a z i vFROM a r t i k lWHERE j e d i n i c n a c i j e n a > 39RA(U) : sifra, cijena(jedinicna cijena>3(artikl))Sa ri oznacavat cemo medurezultate:t1 : (8 > 3) >t2 : (4 > 3) >t3 : (2 > 3) r1 =jedinicna cijena>3(artikl) sifra naziv jedinicna cijena1 Kava 82 Rakija 4sifra, cijena(r1) sifra jedinicna cijena1 82 4Zadatak 2.2 Zadana je relacijapr N Pn1 bpn1 uzn2 bpn3 bpn3 uzn3 fmSemantika: pr(n, p) znaci da nastavnik n predaje predmet p.(a) Kreirajte u SQL-u strukturu tablice pr(b) Iskazite rijecima entitetski integritet za tablicu pr(c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmetfm. Napisite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U).Rjesenje Rjesavamo (a):CREATE TABLE pr(N VARCHAR( 2 ) ,P VARCHAR( 2 ) ,PRIMARY KEY( N, P ))Rjesavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost nulljer su dio primarnog kljuca.Rjesavamo (c).SELECT NFROM prWHERE P = uz AND N NOT IN(10SELECT NFROM prWHERE P = fm )o(SQL(U)) Nn1Zadatak 2.3 Zadana je relacija i ogranicenjaknjiga ISBN Naslov Godina1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009 Svaka knjiga mora imati naslov i godinu izdanja Godina izdanja mora biti veca od 1900(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.(b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine.Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.Rjesenje Rjesavamo (a).CREATE TABLE k n j i g a(ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER NOT NULL CHECK( Godina > 1900 ))Rjesavamo (b).SQL(U):SELECT Nas lovFROM k n j i g aWHERE Godina > 2000RA(U) : Naslov (Godina>2000(knjiga))t1 : 1992 > 2000 t2 : 2005 > 2000 >t3 : 2009 > 2000 >r1 =Godina>2000(knjiga) ISBN Naslov Godina2 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009Naslov (r1) NaslovArhitektura suvremenih organizacijaTeorija baza podataka11Zadatak 2.4 Zadana je relacijaknjiga ISBN Naslov Godina1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009Zadana su ogranicenja: Svaka knjiga mora imati naslov Ako se ne specificira godina izdanja upisuje se 2011(a) Kreirajte u SQL-u strukturu tablice knjiga s odgovarajucim ogranicenjima.(b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. NapisiteSQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor na upit U.Rjesenje Rjesavamo (a).CREATE TABLE k n j i g a(ISBN INTEGER PRIMARY KEY,Nas lov TEXT NOT NULL ,Godina INTEGER DEFAULT 2011)Rjesavamo (b).SQL(U):SELECT Nas lovFROM k n j i g aWHERE Godina < 2008RA(U) : Naslov (Godinat2 : 2005 < 2008 >t3 : 2009 < 2008 r1 =Godina>2000(knjiga) ISBN Naslov Godina1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 2005Naslov (r1) NaslovProgramiranje u ProloguArhitektura suvremenih organizacijaZadatak 2.5 Zadana je relacijaracun broj racuna klijent saldo1 k1 2134, 562 k2 444, 093 k3 234, 434 k1 342.51Zadana su ogranicenja (poslovna pravila):12 Svaki baknovni racun mora imati broj racuna, klijenta i saldo Dopusten negativni saldo moze biti 2000(a) Kreirajte u SQL-u strukturu tablice racun s odgovarajucim ogranicenjima.(b) Neka je zadan upit U : odrediti sve one klijente koji imaju barem jedan racun s negativnimsaldom. Napisite SQL(U) i RA(U). Zatim izracunajte relaciju o(RA(U)) koja je odgovor naupit U.Rjesenje Rjesavamo (a).CREATE TABLE racun( b r o j racuna INTEGER PRIMARY KEY,k l i j e n t TEXT NOT NULL ,s a l d o DECIMAL NOT NULL CHECK( s a l d o > 2000 ))Rjesavamo (b).SQL(U):SELECT k l i j e n tFROM racunWHERE s a l d o < 0RA(U) : klijent(saldot4 : 342.51 < 0 >r1 =saldo Atribut emisija u relaciji tvprogram vanjski je kljuc koji se referencira na primarni kljuc relacijeemisijaKreirajte u SQL-u strukturu tablica tvprogram i emisija s odgovarajucim ogranicenjima.Rjesenje Rjesenje za tablicu emisija:CREATE TABLE e m i s i j a(s i f r a INTEGER PRIMARY KEY,n a z i v TEXT UNIQUE ,o p i s TEXT,z a n r TEXT,)Rjesenje za tablicu tvprogram:CREATE TABLE tvprogram(v r i j e m e DATETIME PRIMARY KEY,e m i s i j a INTEGER FOREIGN KEY REFERENCES e m i s i j a ( s i f r a ))141 Relacijska algebra1.1 Izracun upita1.2 Relacijska algebra i SQL2 SQL

Recommended

View more >