3.relaciona Algebra I Racun

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 56

Relaciona algebra

ta je algebra
Algebra je formalni matematiki sistem koji
se sastoji od skupa objekata i operacija nad
tim objektima.
Primer: Bulova algebra, algebra skupova, ...
Za definiciju formalnog sistema je potrebno
prikazati sintaksu
dati semantiku
dati pravila izvoenja dokaza

Relaciona algebra

Relaciona algebra je familija algebri sa dobro


zasnovanom semantikom koja se koristi za
modeliranje relacija (objekata) smetenih u
relacionoj bazi podataka i za definisanje upita
nad njima.
U sutini predstavlja skup operatora iji su
operandi i rezultati relacije
Prvu verziju je dao Codd 1972. g.; kasnije je
proirivana od strane raznih autora

Relacioni operatori
CODD je originalno predloio 8 operatora
1.
2.
3.
4.

Restrikciju (selekciju)
Projekciju
Proizvod
Uniju

5.
6.
7.
8.

Presek
Razliku
(Prirodno) Spajanje
Deljenje

Kasnije su dodati operatori


9.
10.

Rename
Semijoin

11. Extend
12. Summarize

Minimalni skup operatora


Minimalni skup operatora sadri

restrikciju (selekciju)
projekciju
proizvod
uniju
razliku

Sintaksa
Relacioni izraz je izraz oblika
ROP arg1 arg2 ... argn

gde su
ROP relacioni operator
argi relacije koje su argumenti relacionog
operatora
(formalna definicija u knjizi Date-IDB, deo 6.3)

Semantika
U opisu semantike se koristi
da su relacije matematiki zasnovane i da
predstavljaju skupove torki
u pitanju su operacije nad skupovima koje
predstavljaju preslikavanje domena relacija u
novi domen

Relaciono zatvorenje
Osobina da su i argumenti i rezultat primene bilo kog
relacionog operatora takoe relacije se naziva relaciono
zatvorenje.
Zatvorenje znai da mogu da se piu ugnedeni relacioni
izrazi, tj. relacioni izrazi iji su operandi takoe relacioni
izrazi
Treba obezbediti da i novodobijene relacije imaju
odgovarajue zaglavlje (sa jedinstvenim nazivima atributa) i
odogovarajue telo, bez obzira da li su u pitanju osnovne ili
izvedene relacije

Relacioni operatori -pregled


Projekcija

Restrikcija

Proizvod
a
b
c

(Prirodno) Spajanje
x

a
a
b
b
c
c

x
y

Proizvod

Deljenje

z w

a1 b1
a2 b1
a3 b2

b1 c1
b2 c2
b3 c3

R1

R2

a1 b1 c1
a2 b1 c1
a3 b2 c2
R1

R2
y=z

x
a1
a1
a1
a2
.
.
.

y
b1
b1
b1
b1
.
.
.

z
b1
b2
b3
b1
.
.
.

R1 x R2

x
y
x
y
x
y

w
c1
c2
c3
c1
.
.
.

a
b
c

a
a
a
b
c

x
y
z
x
y

x
z

Relacioni operatori -pregled


Unija

Presek

Razlika

Restrikcija (selekcija)
Traenje
torki
koje
zadovoljavaju
postavljeni
uslov

Restrikcija (nastavak)
Neka relacija A ima bar atribute X i Y i
neka je operator (obino '=', '<', itd.)
takav da je uslov X Y dobro definisan i
da se izraunava kao istinitosna vrednost
(tana ili netana).
Tada je restrikcija relacije A na atribute
X i Y relacija koja ima isto zaglavlje kao i A
i telo koje sadri sve torke t iz A za koje je
vrednost uslova X Y tano.

Restrikcija (nastavak)
Primer: Prikazati sve torke iz tabele dosijea za koje
je vrednost atributa prezime jednaka 'Petrovi'
dosije WHERE prezime = ' Petrovi '

Projekcija

Izdvajanje
eljenih
atributa

Projekcija (nastavak)
Neka relacija A ima bar atribute X, Y, ...,Z.
Tada se projekcija relacije A na X, Y, ...,Z
oznaava sa A {X, Y, ..., Z} i predstavlja
relaciju ije
zaglavlje je izvedeno iz A uklanjanjem svih

atributa koji se ne nalaze u skupu {X, Y, ..., Z}


telo se sastoji od svih torki {X:x, Y;y, ..., Z;z} pri
emu se svaka torka javlja u A sa X vrednou x,
Y vrednou y, ...., Z vrednou z.

Projekcija (nastavak)
Ako su u listi navedeni svi atributi relacije A
tada je projekcija identitet.
Primer: Prikazati imena studenata i nazive
mesta u kojima su roeni:
dosije{ime, mesto_rodjenja}
U daljem tekstu bie navedene opisne ali ne i formalne definicije
ostalih operatora

Prirodno spajanje
(Prirodno) Spajanje
a1 b1
a2 b1
a3 b2

b1 c1
b2 c2
b3 c3

a1 b1
a2 b1
a3 b2

c1
c1
c2

Prirodno spajanje
(nastavak)
Semantika: Neka relacije A i B imaju sledea
zaglavlja
A: {X1, X2, , Xm, Y1, Y2, , Yn}
B: {Y1, Y2, , Yn, Z1, Z2, , Zp}

Tada je prirodno spajanje relacija A i B definisano


sa
A JOIN B = {{X:x, Y: y, Z:z} |{X:x, Y:y} A {Y:y, Z:z} B}

Prirodno spajanje
(nastavak)
Primer: Prirodno spajanje relacija dosije i
ispit
dosije JOIN ispit
Postoji i spajanje za torke iji atributi
zadovoljavaju uslov X Y. Ako je = '='
tada se ovo spajanje naziva jednakosno
spajanje (ako se jedan od atributa X ili Y
eliminie dobija se prirodno spajanje)

Deljenje

A Divided by B per C
B
C
a x
x

Deljenje (nastavak)
Sintaksa: A DIVIDEBY B PER C
Semantika: pretpostavimo da naredne tri relacije
imaju sledea zaglavlja:
A: {X1, X2, , Xm}
B: {Y1, Y2, , Yn}
C: {X1, X2, , Xm, Y1, Y2, ., Yn}

Tada je delenje A sa B po C definisano kao


DIV(A, B, C) = {{X:x} A | {Y:y} B: {X:x, Y:y} C}

Unija

Sintaksa
A UNION B

Semantika
A B = {t | t A t B}

Presek

Sintaksa:
A INTERSECT B

Semantika:

A B = {t | t A t B}

Razlika

Sintaksa:
A DIFFERENCE B

Semantika:
A - B = {t | t A t B}

Dekartov proizvod
Sintaksa: A TIMES B
Semantika: neka relacije A i B
A
a
b
c
proizvod
x
y
B

x
a
b
b
c
c

x
y
x
y
x
y

imaju sledea zaglavlja


{A1, A2, , Am}
{B1, B2, , Bn}
Tada proizvod A TIMES B ima
zaglavlje
{A1, A2, , Am, B1, B2, , Bn}

i vai A TIMES B = {t t| t A
t B}

Svrha relacione algebre


Pisanje relacionih izraza koji se koriste za

definisanje prostora za dohvatanje podataka


definisnje prostora za auriranje podataka
definisanje pravila integriteta
definisanje izvedenih relacija
definisanje pravila zatite
...

Osnova za optimizaciju upita

Relaciona kompletnost
Jezik je relaciono kompletan ako je moan
isto kao i algebra, tj. ako bilo koja relacija
predstavljiva u algebri moe da se predstavi
i u jezika.
SQL je relaciono kompletan jer postoje SQL
izrazi za svaki od 5 primitivnih operatora
relacione algebre

Relaciona kompletnost
(nastavak)
Algebra
A
A
A
A
A
A

WHERE P
{x, y, , z}
TIMES B
UNION B
MINUS B
RENAME x AS y

SQL
SELECT * FROM A WHERE P
SELECT DISTINCT x, y, , z FROM A
A CROSS JOIN B
SELECT * FROM A UNION SELECT * FROM B
SELECT * FROM A EXCEPT SELECT * FROM B
SELECT x AS y FROM A

Algebarski zakoni
Zakon asocijacije
(A UNION B) UNION C = A UNION (B UNION C)
(A INERSECT B) INTERSECT C =
A INTERSECT (B INTERSECT C)
(A TIMES B) TIMES C = A TIMES (B TIMES C)
(A JOIN B) JOIN C = A JOIN (B JOIN C)

Algebarski zakoni
Zakon komutacije
A UNION B = B UNION A
A INERSECT B = B INTERSECT A
A TIMES B = B TIMES A
A JOIN B = B JOIN A

Dodatni operatori
RENAME promena naziva relacije
SEMIJOIN Spajanje relacija A i B projektovano
na atribute relacije A
EXTEND proirivanje relacije novim atributom
SUMMARIZE omoguava sabiranje po kolonama
Detaljan opis operatora je dat u knjizi Date-IDS u 6.7

Relacioni raun

Relacioni raun
Opisan, neproceduralan jezik
Logiki ekvivalent relacione algebre ako se
posmatra deo relacionog modela podataka
za obradu podataka
Zasnovan na predikatskom raunu
Dve varijante:
Raun orijentisan ka torkama
Raun orijentisan ka domenima osnova za
QBE

Predikatski raun
Predikat
je istinitosno vrednosna funkcija sa
argumentima
kada se argumenti zamene vrednostima funkcija
daje izraz koji se naziva predlog koji moe da
bude taan ili netaan

Predikatski raun
(nastavak)
Opseg promenljivih
Promenljiva torki ima opseg iz skupa navedenih
relacija i doputene vrednosti koje pripadaju
torkama iz tih relacija
Promenljiva domena ima opseg iz skupa
navedenih domena i doputene vrednosti koje
pripadaju tim domenima.

Predikatski raun
(nastavak)
Neka je x predikat. Tada se skup svih x
takav da je P tano za x oznaava sa {x
| p(x)}
Postoje dva kvantifikatora:
: 'za svaki'
: 'postoji'

Relacioni raun torki


Slobodne i vezane promenljive
Kvantifikatori
FORALL V (p)
EXISTS V (p)
Kvantifikacija i rad sa slobodnim i vezanim
promenljivim su u skladu sa pravilima
predikatskog rauna

Relacioni raun torki


Korienjem promenljivih torki trae se
torke za koje je predikat taan
Sintaksa ovog rauna se u literaturi
prikazuje na razliite naine

Relacioni raun torki


(nastavak)
RANGE OF <promenljiva> IS <tabele>
RETRIEVE <promenljiva>.<imeatributa>
[WHERE<uslovni izraz>]
ili
RANGEVAR <promenljiva> RANGES OVER <tabela>
<promenljiva>.<imeatributa>
[WHERE<uslovni izraz>]

Relacioni raun torki


(nastavak)
Primer 1: prikazati imena i godine roenja svih
studenata koji su roeni u Beogradu, i upisani
na fakultet kolske 2011-2012 godine, a imaju
broj indeksa vei od 456
RANGEVAR DOSIJEX RANGES OVER DOSIJE
{DOSIJEX.IME, DOSIJEX.GOD_RODJENJA}
WHERE DOSIJEX.MESTO_RODJENJA='Beograd'
AND DOSIJEX.INDEKS>20110456

Relacioni raun torki


(nastavak)
Primer 2: prikazati imena studenata koji su poloili
najmanje jedan predmet ija je ifra "P270"
RANGEVAR DX RANGES OVER DOSIJE
RANGEVAR PX RANGES OVER PREDMET
RANGEVAR IX RANGES OVER ISPIT
DX.SIME
WHERE EXISTS IX (DX.INDEKS = IX.INDEKS AND EXISTS
PX (PX.IS?PREDMETA = IX.ID_PREDMETA AND
PX.SIFRA = 'P270' ) ) )

Relacioni raun domena


Opseg vaenja promenljivih su domeni a
ne relacije
Mogue je definisati uslov pripadnosti.
Oblik R (lista_parova)
R je nazib relvara
svaki par u listi je oblika A x gde je A naziv
atributa u R, a x ili ime promenljive torki ili
poziv selektora

Relacioni raun domena


Uslov je taan akko postoji torka u relaciji
R takva da je za svaki konkretan par
poredjenje A=x tano
Na primer,
ISPIT {INDEKS INDEKS(20110456),
ID_PREDMETA ID_PREDMETA(1001)}
ima vrednost tano akko postoji torka u ispitu
koja ima vrednost 20110456 za atribut indeks i
1001 za atribut id_predmeta

Algebra ili raun


Algebra i raun su semantiki ekvivalentni
Kodov algoritam redukcije (prikaz da je
algebra mona bar koliko i raun i obratno)
Neki upitni jezici su vie zasnovani na
algebri, a neki na raunu
SQL ima osobine i algebre i rauna

Algebra, raun i SQL


Logika ekvivalencija
Relaciona algebra

Relacioni raun
+
SQL

Rekurzija
Tema za razgovor: u relacionoj algebri
irelacionom raunu ne postoji operator
rekurzije. Zato?

Dodatak: tabele u
bazi studenata

Baza studenata
Relvar DOSIJE oznaava dosijea studenata
INDEKS oznaava (jedinstveni) broj indeksa studenta
(ukljuuje i godinu upisa)
IME oznaava ime studenta
PREZIME oznaava prezime studenta
GOD_RODJENJA oznaava godinu rodjenja studenta
MESTO_RODJENJA oznaava mesto rodjenja studenta

Baza studenata (nastavak)


Relvar PREDMET oznaava predmete koji
postoje na nekom od studijskih programa
ID_PREDMETA oznaava (jedinstvenu) identifikaciju
predmeta
SIFRA oznaava ifru predmeta
NAZIV predstavlja naziv predmeta
KREDITI predstavlja broj kredita koji predmet nosi

Baza studenata (nastavak)


Relvar ISPITNI_ROK oznaava ispitne
rokove u kojima je mogao da se polae
neki od predmeta
GODINA_ROKA oznaava godinu u kojoj je dran
ispitni rok
OZNAKA_ROKA oznaava ifru ispitnog roka
NAZIV oznaava naziv ispitnog roka

Baza studenata (nastavak)


Relvar ISPIT oznaava polagane ispite

INDEKS oznaava broj indeksa studenta


ID_PREDMETA oznaava identifikaciju predmeta
GODINA_ROKA oznaava godinu u kojoj je dran rok
OZNAKA_ROKA oznaava ifru ispitnog roka
OCENA oznaava dobijenu ocenu
DATUM_ISPITA oznaava datum kada je dran ispitni rok

Red u tabeli ispit oznaava da je student sa brojem indeksa


INDEKS polagao predmet sa identifikacijom ID_PREDMETA
u roku OZNAKA_ROKA koji je odran u godini
GODINA_ROKA na dan DATUM_ISPITA i da je dobio ocenu
OCENA

Baza studenata (nastavak)

Formalna definicija (SQL, za nae potrebe)

http://www.matf.bg.ac.rs/~nenad/rbp/tabele.std2011.sql

Baza studenata(izgled)
Tabela dosijea
INDEKS
----------20100021
20100022
20100023
20100024
20100025
20100026

IME
----------Milos
Marijana
Sanja
Nikola
Predrag
Zorica

PREZIME
-------------Peric
Savkovic
Terzic
Vukovic
Popovic
Miladinovic

GOD_RODJENJA
-----------1992
1993
1991
1992
1991
1993

MESTO_RODJENJA
---------------

Baza studenata(izgled)
Tabela predmeta
ID_PREDMETA
----------1001
1002
1003
1021
1101
1102
2001
2002
2003
2004
3001
3002
4001
4002

SIFRA
-------------------M111
M112
M113
M131
M105
M106
P101
P102
P103
P104
S1
S2
R101
R102

NAZIV
KREDITI
----------------------------------------- ------Analiza 1
6
Analiza 2
6
Analiza 3
6
Geometrija
6
Diskretne strukture 1
6
Diskretne strukture 2
6
Programiranje 1
8
Programiranje 2
8
Objektno orijentisano programiranje
6
Algoritmi i strukture podataka
6
Engleski jezik 1
5
Engleski jezik 2
5
Uvod u organizaciju racunara
5
Uvod u Veb i Internet tehnologije
5

Baza studenata(izgled)
Tabela ispitnih rokova
GODINA_ROKA
----------2011
2011
2011
2011
2011
2011

OZNAKA_ROKA
-------------------jan
feb
apr
jun
sep
okt

NAZIV
--------------Januar 2011
Februar 2011
April 2011
Jun 2011
Septembar 2011
Oktobar 2011

Baza studenata(izgled)
Tabela ispita
INDEKS
ID_PREDMETA GODINA_ROKA OZNAKA_ROKA OCENA
----------- ----------- ----------- ----------- -----20100021
1001
2011 jan
9
20100022
1001
2011 jan
8
20100023
1001
2011 jan
8
20100024
1001
2011 jan
10
20100025
1001
2011 jan
6
20100026
1001
2011 jan
5
20100021
2001
2011 jan
10
20100022
2001
2011 jan
9
20100023
2001
2011 jan
8
20100024
2001
2011 jan
7
20100025
2001
2011 jan
5
20100021
3001
2011 jan
7
20100023
3001
2011 jan
5
20100024
3001
2011 jan
6
20100026
3001
2011 jan
6
20100026
1001
2011 feb
7
20100025
2001
2011 feb
6
20100026
2001
2011 feb
7
20100021
1021
2011 apr
7
20100022
1021
2011 apr
5
20100023
1021
2011 apr
10
20100024
1021
2011 apr
6
20100026
1021
2011 apr
8

DATUM_ISPITA
-----------01/20/2011
01/20/2011
01/20/2011
01/20/2011
01/20/2011
01/20/2011
01/25/2011
01/25/2011
01/25/2011
01/25/2011
01/25/2011
01/27/2011
01/27/2011
01/28/2011
01/28/2011
02/10/2011
02/10/2011
02/10/2011
04/03/2011
04/03/2011
04/03/2011
04/03/2011
04/03/2011

You might also like