Professional Documents
Culture Documents
BP1 - Formalni Jezici
BP1 - Formalni Jezici
Baze podataka 1
dr Miloš CVETANOVIĆ
• Proceduralni jezici
– Relaciona algebra
• Deklarativni jezici
– Relacioni račun domena
– Relacioni račun n-torki
2
Biblioteka
3
Restrikcija
• Primer 1
σSifO=“PJ”(naslov) → t(SifN, Naziv, SifO)
• Primer 2
σKoji > 1(je_autor) → t(SifA, SifN, Koji)
4
Projekcija
• Primer 1
p Naziv, SifO(naslov) → t(Naziv, SifO)
• Primer 2
p Naziv (σSifO=“PJ”(naslov)) → t(Naziv)
5
Unija
• Unijska kompatibilnost
– Šeme relacija imaju isti broj atributa
– Atributi šema relacija redom odgovaraju jedni drugima (po tipu i značenju)
• Kardinalnost: max(N(r), N(s)) ≤ N(t) ≤ N(r)+N(s)
• Primer 1
clan U autor → t(SifX, Ime)
• Primer 2
p SifK (drzi) → t1(SifK)
p SifK (pozajmica) → t2(SifK)
t1 U t2 → t3(SifK)
6
Razlika
• Unijska kompatibilnost
• Kardinalnost: 0 ≤ N(t) ≤ N(r)
• Primer 1
p SifC, SifK (drzi) → t1(SifC, SifK)
p SifC, SifK (pozajmica) → t2(SifC, SifK)
t1 – t2 → t3(SifC, SifK)
• Primer 2
p SifC (clan) → t1(SifC)
p SifC (drzi) → t2(SifC)
t1 – t2 → t3(SifC)
7
Presek
• Unijska kompatibilnost
• Kardinalnost: 0 ≤ N(t) ≤ min(N(r), N(s))
• Ekvivalentno sa: r – (r – s)
8
Dekartov proizvod
9
Spajanje
r ´ P ( XY ) s = s P ( XY ) (r ´ s) = t ( XY ) = {xy | x Î r Ù y Î s Ù P( xy)}
10
Deljenje
11
Primer A
• p SifC(drzi) → drz(SifC)
• p SifC(pozajmica) → poz(SifC)
• drz U poz → drzpoz(SifC)
• clan x* drzpoz → svedrzpoz(SifC, Ime)
• p Ime(svedrzpoz) → resenje(Ime)
12
Primer B
13
Primer C
• Sastaviti iskaze relacione algebre koji daju šifre i nazive filmova koji su sadržani na
jednoj ili više kaseta a nisu pozajmljivani.
• Sastaviti iskaze relacione algebre koji daju šifre i imena članova koji su pozajmili bar
jedan od filmova koji imaju najmanju ocenu među filmovima svog žanra.
14
Dodatni operatori relacione algebre
• Preimenovanje
r s ( A , A ,..., A ) (r ) ® s ( A1 , A2 ,..., An )
1 2 n
• Agregatne operacije
15
• Proceduralni jezici
– Relaciona algebra
• Deklarativni jezici
– Relacioni račun domena
– Relacioni račun n-torki
16
Relacioni račun domena – primeri 1
{< SifN , Naziv, SifO > < SifN , Naziv, SifO >Î naslov Ù SifO =" PJ "}
{< Naziv, SifO > $SifN (< SifN , Naziv, SifO >Î naslov}
{< SifX , IME >| $SifA(< SifA, IME >Î autor Ù SifA = SifX ) Ú
Ú $SifC (< SifC , IME >Î clan Ù SifC = SifX )}
17
Relacioni račun domena – primeri 2
{< SifK >| $SifC , Datum(< SifK , SifC , Datum >Î drzi ) Ú
Ú $SifP, SifC , SifN , Dana(< SifP, SifC , SifK , SifN , Dana >Î pozajmica)}
{< SifC , SifK >| $Datum(< SifK , SifC , Datum >Î drzi Ù
Ù $SifP, SifN , Dana (< SifP, SifC , SifK , SifN , Dana ) Î pozajmica )}
{< SifN , NazivN , SifON , SifO, NazivO >|< SifN , NazivN , SifON >Î naslov Ù
Ù < SifO, NazivO >Î oblast Ù SifON = SifO}
{< SifN , Naziv, NazivO >| $SifON ((< SifN , Naziv, SifON >Î naslov) Ù
Ù $SifO (< SifO, NazivO >Î oblast Ù SifO = SifON ))}
18
Relacioni račun domena – primeri 3
{< SifN >| $SifC , Datum(< SifN , SifC , Datum >Î rezervacija ) Ù
Ù $SifK (< SifK , SifN >Î knjiga Ù
Ù ¬$SifC , Datum(< SifK , SifC , Datum >Î drzi ))}
19
• Proceduralni jezici
– Relaciona algebra
• Deklarativni jezici
– Relacioni račun domena
– Relacioni račun n-torki
20
Relacioni račun n-torki – primeri 1
21
Relacioni račun n-torki – primeri 2
22
Relacioni račun n-torki – primeri 3
23