Doc. dr. sc. Markus Schatten Zbirka rjeˇsenih zadataka iz baza podataka Sadrˇzaj 1 Relacijska algebra 1.1 Izraˇcun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 6 2 SQL 9 i ii Predgovor iii iv 1 Relacijska algebra 1.1 Izraˇ cun upita Zadatak 1.1 Zadane su relacije i ograniˇcenje: r2 B C 1 1 0 2 0 2 r1 A B C 1 0 2 2 0 2 2 1 3 F = (A = D) Neka je zadan upit RA(U): σF (ΠAD (r1 oo r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 oo r2 A B C 1 0 2 s1 = 1 0 2 2 0 2 2 0 2 ΠAD (s1 ) A D 1 2 s2 = 1 3 2 2 2 3 t1 : (1 = 2) ≡ ⊥ t2 : (1 = 3) ≡ ⊥ t3 : (2 = 2) ≡ > 1 D 2 3 2 3 D 2 2 3 t4 : (2 = 3) ≡ ⊥ σF (s2 ) A D 2 2 Zadatak 1.2 Zadane su relacije i ograniˇcenje: r2 A B C 1 1 2 2 0 2 3 2 3 r1 A B C 1 3 1 2 0 2 F = (A > B) ∨ (C 6= 2) Neka je zadan upit RA(U): ΠAB (σF (r1 ∪ r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 ∪ r2 A B C 1 3 1 s1 = 2 0 2 1 1 2 3 2 3 t1 : (1 > 3) ∨ (1 6= 2) ≡ ⊥ ∨ > ≡ > t2 : (2 > 0) ∨ (2 6= 2) ≡ > ∨ ⊥ ≡ > t3 : (1 > 1) ∨ (2 6= 2) ≡ ⊥ ∨ ⊥ ≡ ⊥ t4 : (3 > 2) ∨ (3 6= 2) ≡ > ∨ > ≡ > σF (s1 ) A B C 1 3 1 s2 = 2 0 2 3 2 3 ΠAB (s2 ) A B 1 3 2 0 3 2 Zadatak 1.3 Zadane su relacije i ograniˇcenje r A B C 1 3 1 2 0 2 s B C 1 1 3 2 D 2 3 H = [(A 6 s.C ) ∨ (r .B > s.B)] ⇒ (A < s.C ) Izraˇcunajte AC (Πr .C ,s.B (σH (r ⊗ s))). 2 Rjeˇsenje Sa ri oznaˇcavat ´cemo medurezultate. r ⊗ s A r .B r .C 1 3 1 r1 = 1 3 1 2 0 2 2 0 2 s.B s.C 1 1 3 2 1 1 3 2 D 2 3 2 3 t1 : [(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) ≡ [> ∨ ⊥] ⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥ σH (r1 ) A r .B r .C r2 = 1 3 1 2 0 2 s.B s.C 3 2 1 1 Πr .C ,s.B (r2 ) r .C r3 = 1 2 D 3 2 s.B 3 1 Πr .C (r3 ) r .C Πs.B (r3 ) s.B AC (r3 ) = 1 oo 3 − r3 2 1 = Πr .C (r3 ) oo Πs.B (r3 ) r .C 1 1 2 2 = AC (r3 ) r .C 1 2 s.B 3 1 − r3 3 1 s.B 1 3 Zadatak 1.4 Zadane su relacije i ograniˇcenje r1 A B C 2 2 1 1 1 0 3 1 1 r2 B C 2 1 1 1 1 0 D 0 2 2 F = [(A < B)(B 6= 2)] ⇒ (B 6= C ) Potrebno je izraˇcunati upit RA(U) : AC (ΠAD (σF (r1 oo r2 ))) Rjeˇsenje Sa si ´cemo oznaˇcavati medurezultate. r1 oo r2 A B C 2 2 1 s1 = 1 1 0 3 1 1 D 0 2 2 t1 : [(2 < 2) ∨ (2 6= 2)] ⇒ (2 6= 1) ≡ [⊥ ∨ ⊥] ⇒ > ≡ ⊥ ⇒ > ≡ > 3 t1 : [(1 < 1) ∨ (1 6= 2)] ⇒ (1 6= 0) ≡ [⊥ ∨ >] ⇒ > ≡ > ⇒ > ≡ > t1 : [(3 < 1) ∨ (1 6= 2)] ⇒ (1 6= 1) ≡ [⊥ ∨ >] ⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥ s2 = σF (s1 ) A B C 2 2 1 1 1 0 D 0 2 ΠAD (s2 ) A D s3 = 2 0 1 2 ΠA (s3 ) A ΠD (s3 ) D AC (s3 ) = 2 oo 0 − s3 1 2 = ΠA (s3 ) oo ΠD (s3 ) A D 2 0 2 2 − s3 1 0 1 2 = AC (s3 ) A D 2 2 1 0 Zadatak 1.5 Zadane su relacije i ograniˇcenje: r1 A B C 4 2 3 2 0 2 1 1 2 r2 A B C 1 1 2 2 0 2 3 2 3 F = [(A > B) ∨ (C 6= 2)] ⇒ (A > 2) Neka je zadan upit RA(U): AC (ΠAB (σF (r1 ∩ r2 ))) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. r1 ∩ r2 A B C s1 = 1 1 2 2 0 2 [(1 > 1) ∨ (2 6= 2)] ⇒ (1 > 2) ≡ [⊥ ∨ ⊥] ⇒ ⊥ ≡ ⊥ ⇒ ⊥ ≡ > [(2 > 0) ∨ (2 6= 2)] ⇒ (2 > 2) ≡ [> ∨ ⊥] ⇒ ⊥ ≡ > ⇒ ⊥ ≡ ⊥ s2 = s3 = σF (s1 ) A B C 1 1 2 ΠAB (s2 ) A B 1 1 4 ΠA (s3 ) A ΠB (s3 ) B oo 1 1 AC (s3 ) = = ΠA (s3 ) oo ΠB (s3 ) A B − s3 1 1 = AC (s3 ) A B ∅ Zadatak 1.6 Zadane su relacije i ograniˇcenja: r1 A B C 2 2 b 1 4 b 5 1 a r2 A B D 1 1 2 2 2 3 3 2 3 D 3 2 2 F = (A 6 B) ⇔ (D 6= 2) G = (C 6= a) Neka je zadan upit RA(U): AC (ΠABD (σG (r1 )) ∪ σF (r2 )) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Sa si oznaˇcavat ´cemo medurezultate. s1 = σG (r1 ) A B C 2 2 b 1 4 b D 3 2 (b 6= a) ≡ > (b 6= a) ≡ > (a 6= a) ≡ ⊥ s2 = s3 = ΠABD (s1 ) A B D 2 2 3 1 4 2 σF (r2 ) A B D 2 2 3 (1 6 1) ⇔ (2 6= 2) ≡ > ⇔ ⊥ ≡ ⊥ (2 6 2) ⇔ (3 6= 2) ≡ > ⇔ > ≡ > (3 6 2) ⇔ (4 6= 2) ≡ ⊥ ⇔ > ≡ ⊥ s2 ∪ s3 A B D s4 = 2 2 3 1 4 2 5 − s3 ΠA (s4 ) A ΠB (s4 ) B ΠD (s4 ) D AC (s4 ) = 2 oo 2 oo 3 − s4 1 4 2 1.2 = ΠA (s4 ) oo ΠB (s4 ) oo ΠD (s4 ) A B D 2 2 3 2 2 2 2 4 3 2 4 2 − s4 1 2 3 1 2 2 1 4 3 1 4 2 = AC (s4 ) A B D 2 2 2 2 4 3 2 4 2 1 2 3 1 2 2 1 4 3 Relacijska algebra i SQL Zadatak 1.7 Zadane su relacije: r A B C 1 3 1 2 0 2 s B C 1 1 3 2 D 2 3 Neka je zadan upit SQL(U): SELECT r . A , r . B , s . D FROM r , s WHERE r . C = s . C AND A > 1 (a) Iskaˇzite upit u relacijskoj algebri (RA(U)) (b) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. Rjeˇsenje Rjeˇsavamo (a). Iz SELECT klauzule isˇcitavamo elemente u konaˇcnoj projekciji. Sa ri oznaˇcavat ´cemo relacije koje joˇs valja izraˇcunati: ΠA r .B D (r1 ) Iz WHERE klauzule isˇcitavamo formulu za selekciju: F = (r .C = s.C ) ∧ (A > 1) Sada imamo r1 = σF (r2 ) odnosno: 6 r1 = σ(r .C =s.C )∧(A>1) (r2 ) Iz FROM klauzule isˇcitavamo relacije koje valja staviti u produkt. Stoga imamo: r2 = r ⊗ s Konaˇcno rjeˇsenje je stoga: ΠA r .B D (σ(r .C =s.C )∧(A>1) (r ⊗ s)) Rjeˇsavamo (b). r ⊗ s A r .B r .C 1 3 1 1 3 1 2 0 2 2 0 2 s.B s.C 1 1 3 2 1 1 3 2 D 2 3 2 3 t1 : (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 2 0 2 ΠA r .B D (σ(r .C =s.C )∧(A>1) (r s.B s.C 3 2 ⊗ s)) A r .B D 2 0 3 Zadatak 1.8 Zadane su relacije i ograniˇcenje: r1 A B C 1 a 1 2 b 2 2 c 2 r2 A B E 1 a 2 2 c 2 3 a 3 D α β α F = (A > C ) ∧ (D 6= β) Neka je zadan upit RA(U): ΠAC (σF (r1 oo r2 )) (a) Izraˇcunajte odgovor na upit koriste´ci relacijsku algebru. (b) Pretvorite RA(U) u SQL(U) Rjeˇsenje Rjeˇsavamo (a): S si oznaˇcavat ´cemo medurezultate. r1 oo r2 A B C s1 = 1 a 1 2 c 2 7 D E α 2 α 2 D 3 t1 : (1 > 1) ∧ (α 6= β) ≡ ⊥ ∧ > ≡ ⊥ t2 : (2 > 2) ∧ (α 6= β) ≡ ⊥ ∧ > ≡ ⊥ s2 = σF (s1 ) A B s3 = ΠAC (σF (r1 oo r2 )) = C D E ∅ ΠAC (s2 ) A C ∅ Rjeˇsavamo (b): Poˇcinjemo sa SELECT klauzulom koja je ekvivalentna konaˇcnoj projekciji: SELECT A , C U FROM klauzuli moraju se pojaviti sve relacije iz RA(U): FROM r1 , r2 U WHERE klauzuli moramo uvrstiti ograniˇcenje F : WHERE A > C AND D <> β Prirodni spoj je samo dodatno ograniˇcenje u WHERE klauzuli: r1 .A = r2 .A AND r1 .B = r2 .B Dakle ukupni upit je: SELECT A, C FROM r1 , r2 WHERE A > C AND D <> β AND r1 .A = r2 .A AND r1 .B = r2 .B Ovaj rezultat nije u potpunosti toˇcan, obzirom da u SELECT i WHERE klauzuli nije jasno na koji se atribut A misli (A iz r1 ili A iz r2 ). SQL stroj u pravilu ne zakljuˇcuje o jednakosti atributa temeljem imena, ve´c temeljem imena i relacije u kojoj se oni nalaze, zbog ˇcega je potrebno koristiti notaciju naziv relacije.naziv atributa. Obzirom da se kasnije u WHERE klauzuli atribut A iz jedne relacije izjednaˇcava atributom u drugoj relaciji (uvjet prirodnog spoja), u naˇsem sluˇcaju moˇzemo proizvoljno odabrati relaciju: SELECT r1 .A, C FROM r1 , r2 WHERE r1 .A > C AND D <> β AND r1 .A = r2 .A AND r1 .B = r2 .B 8 2 SQL Zadatak 2.1 Zadana je relacija artikl ˇ Sifra 1 2 3 Naziv Jediniˇcna cijena Kava 8 Rakija 4 Klipi´c 2 Zadana su ograniˇcenja: ˇ Sifra je primarni kljuˇc relacije Svaki artikl mora imati jedinstven naziv Jediniˇcna cijena ne smije biti negativna (a) Kreirajte u SQL-u strukturu tablice artikl s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one ˇsifre i nazive artikala ˇcija je cijena ve´ca od 3. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (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 ) ) Rjeˇsavamo (b): SQL(U): SELECT s i f r a , n a z i v FROM a r t i k l WHERE ” j e d i n i c n a c i j e n a ” > 3 9 RA(U) : Πsifra, cijena (σjedinicna cijena>3 (artikl)) Sa ri oznaˇcavat ´cemo medurezultate: t1 : (8 > 3) ≡ > t2 : (4 > 3) ≡ > t3 : (2 > 3) ≡ ⊥ σjedinicna cijena>3 (artikl) sifra naziv jediniˇcna cijena r1 = 1 Kava 8 2 Rakija 4 Πsifra, cijena (r1 ) sifra jediniˇcna cijena 1 8 2 4 Zadatak 2.2 Zadana je relacija pr N n1 n1 n2 n3 n3 n3 P bp uz bp bp uz fm Semantika: pr (n, p) znaˇci da nastavnik n predaje predmet p. (a) Kreirajte u SQL-u strukturu tablice pr (b) Iskaˇzite rijeˇcima entitetski integritet za tablicu pr (c) Neka je zadan upit U : odrediti sve one nastavnike koji predaju predmet uz i ne predaju predmet fm. Napiˇsite SQL(U) i tablicu o(SQL(U)) koja je odgovor na upit SQL(U). Rjeˇsenje Rjeˇsavamo (a): CREATE TABLE p r ( N VARCHAR( 2 ) , P VARCHAR( 2 ) , PRIMARY KEY( N, P ) ) Rjeˇsavamo (b). U relaciji (tablici) pr vrijednosti atributa N i P ne smiju poprimiti vrijednost null jer su dio primarnog kljuˇca. Rjeˇsavamo (c). SELECT N FROM p r WHERE P = ’ uz ’ AND N NOT IN ( 10 SELECT N FROM p r WHERE P = ’ fm ’ ) o(SQL(U)) N n1 Zadatak 2.3 Zadana je relacija i ograniˇcenja knjiga ISBN 1 2 3 Naslov Godina Programiranje u Prologu 1992 Arhitektura suvremenih organizacija 2005 Teorija baza podataka 2009 Svaka knjiga mora imati naslov i godinu izdanja Godina izdanja mora biti ve´ca od 1900 (a) Kreirajte u SQL-u strukturu tablice knjiga s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane nakon 2000 godine. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE k n j i g a ( ISBN INTEGER PRIMARY KEY, N a s l o v TEXT NOT NULL , Godina INTEGER NOT NULL CHECK( Godina > 1900 ) ) Rjeˇsavamo (b). SQL(U): SELECT N a s l o v FROM k n j i g a WHERE Godina > 2000 RA(U) : ΠNaslov (σGodina>2000 (knjiga)) t1 : 1992 > 2000 ≡ ⊥ t2 : 2005 > 2000 ≡ > t3 : 2009 > 2000 ≡ > σGodina>2000 (knjiga) ISBN Naslov Godina r1 = 2 Arhitektura suvremenih organizacija 2005 3 Teorija baza podataka 2009 ΠNaslov (r1 ) Naslov Arhitektura suvremenih organizacija Teorija baza podataka 11 Zadatak 2.4 Zadana je relacija knjiga ISBN 1 2 3 Naslov Godina Programiranje u Prologu 1992 Arhitektura suvremenih organizacija 2005 Teorija baza podataka 2009 Zadana su ograniˇcenja: Svaka knjiga mora imati naslov Ako se ne specificira godina izdanja upisuje se 2011 (a) Kreirajte u SQL-u strukturu tablice knjiga s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one naslove knjiga koje su izdane prije 2008 godine. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE k n j i g a ( ISBN INTEGER PRIMARY KEY, N a s l o v TEXT NOT NULL , Godina INTEGER DEFAULT 2011 ) Rjeˇsavamo (b). SQL(U): SELECT N a s l o v FROM k n j i g a WHERE Godina < 2008 RA(U) : ΠNaslov (σGodina<2008 (knjiga)) t1 : 1992 < 2008 ≡ > t2 : 2005 < 2008 ≡ > t3 : 2009 < 2008 ≡ ⊥ σGodina>2000 (knjiga) ISBN Naslov Godina r1 = 1 Programiranje u Prologu 1992 2 Arhitektura suvremenih organizacija 2005 ΠNaslov (r1 ) Naslov Programiranje u Prologu Arhitektura suvremenih organizacija Zadatak 2.5 Zadana je relacija raˇcun broj raˇcuna klijent saldo 1 k1 2134, 56 2 k2 444, 09 3 k3 −234, 43 4 k1 −342.51 Zadana su ograniˇcenja (poslovna pravila): 12 Svaki baknovni raˇcun mora imati broj raˇcuna, klijenta i saldo Dopuˇsten negativni saldo moˇze biti −2000 (a) Kreirajte u SQL-u strukturu tablice raˇcun s odgovaraju´cim ograniˇcenjima. (b) Neka je zadan upit U : odrediti sve one klijente koji imaju barem jedan raˇcun s negativnim saldom. Napiˇsite SQL(U) i RA(U). Zatim izraˇcunajte relaciju o(RA(U)) koja je odgovor na upit U. Rjeˇsenje Rjeˇsavamo (a). CREATE TABLE r a c u n ( ” b r o j r a c u n a ” 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 ) ) Rjeˇsavamo (b). SQL(U): SELECT k l i j e n t FROM r a c u n WHERE s a l d o < 0 RA(U) : Πklijent (σsaldo<0 (racun)) t1 : 2134, 56 < 0 ≡⊥ t2 : 444, 09 < 0 ≡⊥ t3 : −234, 43 < 0 ≡ > t4 : −342.51 < 0 ≡ > r1 = σsaldo<0 (racun) broj racuna klijent saldo 1 k3 −234, 43 2 k1 −342.51 Πklijent (r1 ) klijent k3 k1 Zadatak 2.6 Zadana je baza podataka tvprogram vrijeme emisija 26.06.2011. 10:00 1 26.06.2011. 10:30 2 26.06.2011. 11:45 2 Zadana su ograniˇcenja: Primarni kljuˇc relacije tvprogram je vrijeme Primarni kljuˇc relacije emisija je ˇsifra Naziv emisije je jedinstven u relaciji emisija 13 emisija ˇsifra naziv opis ˇzanr 1 e1 o1 z1 2 e2 o2 z1 3 e3 o3 z2 Atribut emisija u relaciji tvprogram vanjski je kljuˇc koji se referencira na primarni kljuˇc relacije emisija Kreirajte u SQL-u strukturu tablica tvprogram i emisija s odgovaraju´cim ograniˇcenjima. Rjeˇsenje Rjeˇsenje 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, ) Rjeˇsenje za tablicu tvprogram: CREATE TABLE t v p r o g r a m ( 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 ) ) 14
© Copyright 2024 Paperzz