Professional Documents
Culture Documents
BP Skripta (II Kolokvijum)
BP Skripta (II Kolokvijum)
Selekcija
Projekcija
π (r)
< lista atributa >
Npr.: (predmet)
NazivPredmeta, ECTS
Unija
r s = {t | t r or t s}
Npr.: (nastavnik) (student)
JMB JMB
Razlika
r – s = {t | t r and t s}
Kartezijev proizvod
r x s = {t q | t r and q s}
Npr.: (r x s)
A=C
Preimenovanje
r s ={ t | t r and t s }
Primjetimo da je: r s = r - (r - s)
Upit kojim se iz baze podataka dobija lista klijenata koji imaju štedni račun u nekoj filijali
lociranoj u Banjoj Luci:
ime-klijenta ( grad-filijale =‘Banja Luka’ (klijent-racun ⋈ stedni-racun ⋈ filijala))
DX: Element iz kolone A (Tabela R), npr. α, će se naci u r s ako kao par
ima sve elemente koje se nalaze u tabeli S. Znači u R ∃ (α,1) i (α,2).
Ovaj upit, primjenom agregatne operacije: Ne zna ni prof. (Nije dobro
definisano) ☹
3. Navesti definiciju i dati opis operacije generalizovane projekcije. Kreirajte upit
kojim se iz baze podataka (specifikovane u dijelu: Korištene relacije) dobija lista
naziva filijala i ukupnog iznosa (stanja) računa za odnosnu filijalu izraženu u
EUR-ima. Napomena: Stanja računa u filijalima se vode u KM. Uzeti da je kurs
KM prema EUR-u 1.95 KM za 1 EUR-o.
Generalizovana projekcija proširuje operaciju projekcije na način da se dozvoljava korištenje
aritmetičkih funkcija u projekcionoj listi.
F1, F2, …, Fn(E)
E je bilo koji izraz relacione algebre, svaki od F1, F2, …, Fn su aritmetički izrazi koji uključuju
konstante i atribute iz šema referenciranih u E. Tako npr. neka je data relacija credit-
info(customer-name, limit, credit-balance). Koliko još svaka osoba može da potroši se dobija:
naziv-filijale, limit – credit-balance (credit-info)
Upit kojim se iz baze podataka dobija lista naziva filijala i ukupnog iznosa (stanja) računa za
odnosnu filijalu izraženu u EUR-ima (ako se misli na štedne račune):
naziv-filijale, ukupan-iznos_KM/1,95 as ukupan-iznos_EUR ( naziv-filijale gsum(stanje) as ukupan-iznos_KM (stedni-racun))
5. Opišite operacije spajanja (Dekartov proizvod, theta join, equi-join, natural join) u
relacionoj algebri. Koja je razlika equi-join i natural join spajanja? Ilustrujte
primjenu operacije spajanja (koju smatrate pogodnom) za kreiranje upita kojim
se iz baze podataka specifikovane (u dijelu Korištene relacije) dobija:
Ime, Grad, Plata
radnika koji imaju rukovodioca sa imenom 'Petar'.
Ovako, theta join omogućuje proizvoljno poređenje odnosa ( kao što je ≥ ), equi-join je theta
join sa operatorom jednakosti, natural join je e equi-join na atribute koje imaju isto ime u svakoj
vezi. Pored toga, natural join uklanja duple kolone koje su uključene u odnosu jednakosti, tako
da ostaje samo jedna od poređenih kolona.
Upit:
Ime, Grad, Plata (( ImeRukovodioca = ‘Petar’ (rukovodi)) ⋈ zaposleni ⋈ zaposlenje))
Slično kao kod generalizovane projekcije, rezultati agregatnih funkcija nemaju ime, mora se
koristiti preimenovanje (renaming) .
Upit kojim se iz baze podataka dobija prosječna plata radnika kompanije po gradovima u kojima
žive:
Grad g avg(Plata) as Prosječna plata (zaposleni ⋈ zaposlenje )
7. Null vrijednosti: šta se reprezentuje null vrijednošću i u kojem domenu? Kako
operacije relacione algebre rade sa null vrijednostima? Napomena: Pretpostaviti
da operacije relacione algebre koriste istu konvenciju kao SQL.
Moguće je da n-torke imaju null vrijednost za neke od atributa, null označava nepoznatu
vrijednost ili vrijednost koja ne postoji. Rezultat nekog aritmetičkog izraza koji sadrži null
vrijednost je null vrijednost. Za eliminisanje duplih vrijednosti i grupisanje, null se tretira kao
bilo koja druga vrijednost, i uzma se da su dvije null vrijednosti iste vrijednosti (jedan upit traži
polje sa null, dobija dva rezultata, vraca samo jedan – uzima da su iste vrijednosti).
Konvenciju koja je usvojena u SQL standardu: Komparacija sa null vrijednostima kao rezultat
vraća specijalnu logičku vrijednost unknown. Ukoliko bi false bilo korišteno umjesto unknown,
tada not (A < 5) ne bi bilo ekvivalentno sa A >= 5 (A - null, ≡ - ekvivalencija):
A<5 ≡ not(A>5)
false ≡ not(false)
Koristi se logika sa tri vrijednosti: true, false, i unknown: Logičke operacije koje uključuju
unknown logičku vrijednost:
OR:
o (unknown or true) = true
o (unknown or false) = unknown
o (unknown or unknown) = unknown
AND:
o (true and unknown) = unknown
o (false and unknown) = false
o (unknown and unknown) = unknown
NOT:
o (not unknown) = unknown
U SQL-u “P is unknown” rezultuje logičkom vrijednošću true ako se za vrijednost
predikata P dobije unknown.
Rezultat predikata selekcije se tretira kao false, ako se kao vrijednost predikata dobije unknown.
gdje je t torka promiertijiva (tuple variable), a vrijednost torke t na atributu A se označava t[A].
P je formula slična formulama u predikatskom računu (moze biti true ili false). Rezultat upita
je skup svih n-torki t za koje je predikat P istinit za t. Primjer upita:
{ t | t predmet t[ECTS] = 6 }.
Moguće je specifikovati izraze u relacionom računu n-torki, takve da se kao rezultat generišu
beskonačne relacije. Takvi izrazi su nesigurni. Na primjer, {t | (t r)} rezultuje beskonačnom
relacijom. Da bi se izbjegle ovakve situacije, skup dozvoljenih izraza se ograničava na sigurne
izraze. Izraz {t | P(t)} u relacionom računu n-torki je siguran ukoliko je svaka komponenta
rezultata iz domena formule P (dom(P)). Domen formule P je skup svih vrijednosti koje se
referenciraju u P, kao i moguće vrijednosti tuple promjenljivih koje se pojavljuju u P. (tuple (n-
torka) promjenljive mogu imati vrijednosti bilo koje n-torke korespondentnih relacija baze
podataka). Npr. izraz { t | t[A]=5 true } nije siguran, definiše beskonačan skup čije se
vrijednosti atributa ne pojavljuju ni u jednoj relaciji, n-torci niti konstanti u P.
gdje x1, x2, …, xn predstavljaju domenske varijable, a P predstavlja formulu sličnu formuli u
predikatskom računu. Formula se izgrađuje od atoma. Atomi:
<x1, ..., xn > r, gdje je r relacija na n atributa a xi, i = 1, … , n su domenske varijable ili
domenske konstante,
x y, gdje su x, y domenske varijable a operator poređenja (, , =, , , ) i
x c, gdje je c konstanta u domenu atributa x, a x domenska varijabla.
Primjer upita:
{ <c,n,e> | <c,n,e> predmet e = 6 }.
Upit kojim se iz baze podataka dobija lista imena klijenata koji imaju štedni račun i kojima je
dat kredit (u nekim filijalama banke):
{ <i> | ∃ r (<i,r> klijent-racun) ∃ k (<i,k> klijent-kradit) }
11. SQL Assertions (potvrde).
Potvrda (eng. assertion) је generalni tip ogrаnicenja kojirn se moze specifikovati predikat/uslov
na nivou baze роdаtаkа, koji mora da bude zadovoljen za svaku instancu baze. Predikat tiрično
ukljucuje atribute iz različitih relacija baze роdаtаkа (ako uključuju atribute samo jedne relacije,
onda se potvrda svodi na ograničenje provjere uslova na nivou rеlacije, а ako uključuju samo
jedan atribut, onda je ekvivalentna check ograničenju nа nivou atributa) . Specifikaciјa роtvrdе
imа formu:
create assertion naziv_potvrde check (Р);
Na primjer, zahtjev da: 'za sve studijske programe, broj obaveznih predmeta ne moze da bude
manji od broja izbornih ргеdmеtа' sadrzi frazu 'za sve', koja nema direkini ekvivalent u SQL-u.
Umjesta toga se može specifikovati uslov 'da ne postoji nijedan studijski program za koji je broj
izbornih рrеdmеtа veći od broja obaveznih ргеdmеtа'. Specifikacijа navedenog ograničenjа tipa
potvrda bila bi:
create assertion broj_obav_predrneta
check (not exists
(select * from stud_program Ѕ
where ((select count ( IdPredmeta ) from sadrzi T
where T. IdSР = S.IdSP аnd ТiрPrеdmеtа='I')
>
(select count ( IdPredmeta ) from sadrzi T
where T. IdSР = S.IdSP аnd ТiрPrеdmеtа='O'))));
Ako uslov nije narušen, DBMS dopušta modifikaciju, u suprotnom se odbija akcija
modifikacije baze. Ovo testiranje utiče na performanse sistema tako da ga treba primjenjivati
samo kada je neophodno.
12. Opišite vrste autorizacije koje se mogu dobiti za različite aktivnosti nad bazom
podataka.
Korisnik može dobiti autorizaciju za sledeće aktivnosti:
Aktivnosti koje se odnose na rad sa podacima u bazi:
o autorizacija za čitanje podataka iz baze
o autorizacija za umetanje podataka u bazu
o autorizacija za ažuriranje podataka
o autorizacija za brisanje podataka iz baze
Aktivnosti koje se odnose na definisanje i menjanje strukture baze:
o autorizacija za kreiranje objekata baze podataka
o autorizacija za promenu objekata baze podataka
o autorizacija za brisanje objekata baze podataka
13. Generalna forma davanja/povlačenja privilegija u SQL.
Iskaz namenjen za dodelu prava na objektima šeme baze podataka korisnicima je grant iskaz:
GRANT <lista_privilegija> ON <naziv_objekta> TO <lista_korisnika/lista_uloga>;
Iskaz namenjen za povlačenje prava na objektima šeme baze podataka korisnicima je revode
iskaz:
REVOKE <lista_privilegija> ON <naziv_objekta> FROM <lista_korisnika/lista_uloga>;
14. Specifikujte SQL iskaz, kojim se ulozi licni_bankar dodjeljuje privilegija čitanja,
umetanja, ažuriranja i brisanja podataka (torki) na relaciji stedni-racun.
Napomena: prethodno SQL iskazom kreirati navedenu ulogu.
CREATE ROLE licni_bankar;
GRANT SELECT, INSERT, UPDATE, DELETE ON stedni_racun TO licni_bankar;
FLUSH PRIVILEGES;
/* Za korisnika:
CREATE USER 'licni_bankar'@'localhost' IDENTIFIED BY 'lozinka123' ;
GRANT SELECT, INSERT, UPDATE, DELETE ON db.stedni_racun
TO 'licni_bankar'@'localhost';
FLUSH PRIVILEGES;
*/
15. Specifikujte SQL iskaz, kojim se korisniku U1 oduzima privilegija brisanja
podataka (torki) na relaciji kredit. Napomena: povlačenje privilegije korisniku U1
treba da bude onemogućeno/blokirano ukoliko je korisnik U1 tu privilegiju
proslijedio drugim korisnicima.
REVOKE DELETE ON kredit FROM U1 RESTRICT;
FLUSH PRIVILEGES;
Povlačenje privilegije korisniku U1 je onemogućeno/blokirano/baca error ukoliko je korisnik
U1 tu privilegiju proslijedio drugim korisnicima pomoću RESTRICT, alternativa je CASCADE
gdje se povlače i privilegije drugim korisnicima ukoliko je korisnik U1 tu privilegiju njima
proslijedio.
17. Zašto vršimo dekompoziciju relacionih šema? Kakve uslove treba da zadovolji
dekompozicija? Navedite formalnu specifikaciju tih uslova.
Radi podoljšanja organizacije, smanjenja redundantnosti i eliminisanja anomalija. Višeznačne
zavisnosti daju potreban i dovoljan uslov da se relacija može dekomponovati u par svojih
projekcija bez gubitka informacije, tj. da bude rezultat prirodnog spajanja svojih projekcija.
18. Suvišni atributi u funkcionalnim zavisnostima. Eliminišite suvišne atribute u
funkcionalnim zavisnostima iz skupa F = {A→BCD, BC→DE, B→D, D→A} koje
vrijede na šemi R = (A,B,C,D, E, F).
Primjena algoritma na F (Knjiga strana 302: S.5.3):
1. K0: Inicijalizacija. Fm = {A→BCD, BC→DE, B→D, D→A}
2. K1: Primjena dekompozicije na A→BCD tako da A→B, A→C, A→D i na BC→DE tako
da BC→D, BC→E, pa imamo: Fm = {A→B, A→C, A→D, BC→D, BC→E, B→D, D→A}