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

Embed Size (px)

TRANSCRIPT

  • Doc. dr. sc. Markus Schatten

    Zbirka rjesenih zadataka iz baza podataka

  • Sadrzaj

    1 Relacijska algebra 11.1 Izracun upita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Relacijska algebra i SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2 SQL 9

    i

  • ii

  • Predgovor

    iii

  • iv

  • 1 Relacijska algebra

    1.1 Izracun upita

    Zadatak 1.1 Zadane su relacije i ogranicenje:

    r1 A B C

    1 0 22 0 22 1 3

    r2 B C D

    1 1 20 2 20 2 3

    F = (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 D

    1 0 2 21 0 2 32 0 2 22 0 2 3

    s2 =

    AD(s1) A D

    1 21 32 22 3

    t1 : (1 = 2)

    t2 : (1 = 3)

    t3 : (2 = 2) >

    1

  • t4 : (2 = 3)

    F (s2) A D

    2 2

    Zadatak 1.2 Zadane su relacije i ogranicenje:

    r1 A B C

    1 3 12 0 2

    r2 A B C

    1 1 22 0 23 2 3

    F = (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 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) > > >

    s2 =

    F (s1) A B C

    1 3 12 0 23 2 3

    AB(s2) A B

    1 32 03 2

    Zadatak 1.3 Zadane su relacije i ogranicenje

    r A B C

    1 3 12 0 2

    s B C D

    1 1 23 2 3

    H = [(A 6 s.C ) (r .B > s.B)] (A < s.C )

    Izracunajte AC (r .C ,s.B(H(r s))).

    2

  • Rjesenje 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 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) [> ] >

    r2 =

    H(r1) A r .B r .C s.B s.C D

    1 3 1 3 2 32 0 2 1 1 2

    r3 =

    r .C ,s.B(r2) r .C s.B

    1 32 1

    AC (r3) =

    r .C (r3) r .C12

    oo

    s.B(r3) s.B

    31

    r3

    =

    r .C (r3) oo s.B(r3) r .C s.B

    1 31 12 32 1

    r3

    =

    AC (r3) r .C s.B

    1 12 3

    Zadatak 1.4 Zadane su relacije i ogranicenje

    r1 A B C

    2 2 11 1 03 1 1

    r2 B C D

    2 1 01 1 21 0 2

    F = [(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 D

    2 2 1 01 1 0 23 1 1 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 D

    2 2 1 01 1 0 2

    s3 =

    AD(s2) A D

    2 01 2

    AC (s3) =

    A(s3) A21

    oo

    D(s3) D

    02

    s3

    =

    A(s3) oo D(s3) A D

    2 02 21 01 2

    s3

    =

    AC (s3) A D

    2 21 0

    Zadatak 1.5 Zadane su relacije i ogranicenje:

    r1 A B C

    4 2 32 0 21 1 2

    r2 A B C

    1 1 22 0 23 2 3

    F = [(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 C

    1 1 2

    s3 =AB(s2) A B

    1 1

    4

  • AC (s3) =

    (A(s3) A

    1oo

    B(s3) B

    1

    ) s3

    =A(s3) oo B(s3) A B

    1 1 s3

    =AC (s3) A B

    Zadatak 1.6 Zadane su relacije i ogranicenja:

    r1 A B C D

    2 2 b 31 4 b 25 1 a 2

    r2 A B D

    1 1 22 2 33 2 3

    F = (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 D

    2 2 b 31 4 b 2

    (b 6= a) >

    (b 6= a) >

    (a 6= a)

    s2 =

    ABD(s1) A B D

    2 2 31 4 2

    s3 =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) >

    s4 =

    s2 s3 A B D2 2 31 4 2

    5

  • AC (s4) =

    A(s4) A21

    oo

    B(s4) B

    24

    oo

    D(s4) D

    32

    s4

    =

    A(s4) oo B(s4) oo D(s4) A B D

    2 2 32 2 22 4 32 4 21 2 31 2 21 4 31 4 2

    s4

    =

    AC (s4) A B D

    2 2 22 4 32 4 21 2 31 2 21 4 3

    1.2 Relacijska algebra i SQL

    Zadatak 1.7 Zadane su relacije:

    r A B C

    1 3 12 0 2

    s B C D

    1 1 23 2 3

    Neka 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 imamo

    r1 = F (r2)

    odnosno:

    6

  • r1 = (r .C=s.C)(A>1)(r2)

    Iz FROM klauzule iscitavamo relacije koje valja staviti u produkt. Stoga imamo:

    r2 = r s

    Konacno 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 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 s.B s.C D2 0 2 3 2 3

    A r .B D((r .C=s.C)(A>1)(r s)) A r .B D2 0 3

    Zadatak 1.8 Zadane su relacije i ogranicenje:

    r1 A B C D

    1 a 1 2 b 2 2 c 2

    r2 A B E

    1 a 22 c 23 a 3

    F = (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 E

    1 a 1 22 c 2 2

    7

  • t1 : (1 > 1) ( 6= ) >

    t2 : (2 > 2) ( 6= ) >

    s2 =F (s1) A B C D E

    s3 = AC (F (r1 oo r2)) =AC (s2) A C

    Rjesavamo (b):Pocinjemo sa SELECT klauzulom koja je ekvivalentna konacnoj projekciji:

    SELECT A, C

    U FROM klauzuli moraju se pojaviti sve relacije iz RA(U):

    FROM r1, r2

    U 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.B

    Dakle ukupni upit je:

    SELECT A, CFROM r1, r2WHERE A > C AND D AND r1.A = r2.A AND r1.B = r2.B

    Ovaj 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.B

    8

  • 2 SQL

    Zadatak 2.1 Zadana je relacija

    artikl Sifra Naziv Jedinicna cijena

    1 Kava 82 Rakija 43 Klipic 2

    Zadana 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 > 3

    9

  • RA(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 cijena

    1 Kava 82 Rakija 4

    sifra, cijena(r1) sifra jedinicna cijena

    1 82 4

    Zadatak 2.2 Zadana je relacija

    pr N P

    n1 bpn1 uzn2 bpn3 bpn3 uzn3 fm

    Semantika: 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(

    10

  • SELECT NFROM prWHERE P = fm

    )

    o(SQL(U)) N

    n1

    Zadatak 2.3 Zadana je relacija i ogranicenja

    knjiga ISBN Naslov Godina

    1 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 > 2000

    RA(U) : Naslov (Godina>2000(knjiga))

    t1 : 1992 > 2000

    t2 : 2005 > 2000 >

    t3 : 2009 > 2000 >

    r1 =

    Godina>2000(knjiga) ISBN Naslov Godina

    2 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009

    Naslov (r1) Naslov

    Arhitektura suvremenih organizacijaTeorija baza podataka

    11

  • Zadatak 2.4 Zadana je relacija

    knjiga ISBN Naslov Godina

    1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 20053 Teorija baza podataka 2009

    Zadana 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 < 2008

    RA(U) : Naslov (Godina

    t2 : 2005 < 2008 >

    t3 : 2009 < 2008

    r1 =

    Godina>2000(knjiga) ISBN Naslov Godina

    1 Programiranje u Prologu 19922 Arhitektura suvremenih organizacija 2005

    Naslov (r1) Naslov

    Programiranje u ProloguArhitektura suvremenih organizacija

    Zadatak 2.5 Zadana je relacija

    racun broj racuna klijent saldo

    1 k1 2134, 562 k2 444, 093 k3 234, 434 k1 342.51

    Zadana 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 < 0

    RA(U) : klijent(saldot4 : 342.51 < 0 >

    r1 =

    saldo

  • Atribut emisija u relaciji tvprogram vanjski je kljuc koji se referencira na primarni kljuc relacijeemisija

    Kreirajte 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 )

    )

    14

    1 Relacijska algebra1.1 Izracun upita1.2 Relacijska algebra i SQL

    2 SQL

Recommended

View more >