BAZE PODATAKA – Skripta

1
foiskripte.com
„neslužbena skripta“
BAZE PODATAKA - skripta
1. Sustav za upravljanje bazom podataka
Baza podataka je kolekcija podataka, ograničenja i operacija koja reprezentira
neke aspekte realnog svijeta .
2. Relacijski model podataka
Za relacijski model podataka, RMP, imamo sljedeće: S je skup relacija
(tablica), UI je skup ograničenja stanja relacija i O je skup relacijskih
operatora.
To znači da će podaci u relacijskoj bazi podataka biti prikazani u obliku relacija
(tablica) dok će uvjeti integriteta UI predstavljati ograničenja koja trebaju biti
zadovoljena u relacijama da bi se dana baza podataka mogla smatrati valjanom.
3. Vrste baza podataka
Vrste baze podataka:

hijerarhijske baze podataka (temeljene na hijerarhijskom modelu
podataka)

mrežne baze podataka (temeljene na mrežnom modelu podataka

relacijske baze podataka (temeljene na relacijskom modelu
podataka)

deduktivne baze podataka (temeljene na deduktivnom modelu
podata)

temporalne baze podataka (temeljene na temporalnom modelu
podataka)

objektno/relacijske baze podataka (temeljene na poopćenom
relacijskom modelu podataka)

objektno orijentirane baze podataka (temeljene na objektnom
modelu podataka).
4. Pojam relacije
Konačan, neprazan skup atributa, R = {A1,.., Ak, nazivamo relacijskom
shemom.
Neka je D = D1 È D2 .. Dk, gdje je Dom(Ai) = Di za i = 1,.., k .
Slog nad R je funkcija t : R ® D , gdjeje t(Ai) Di , i = 1,.., k .
Relacija nad R je konačan skup slogova nad R . Notacija r(R) znači daje r
relacija nad R
5. Jednakost relacija
2
foiskripte.com
„neslužbena skripta“
Relacije r(R) i s(S) su jednake ako vrijedi da R = S tj. r i s se sastoje od
istih slogova .
6. Restrikcija sloga
Neka je X R; t[x] je restrikcija sloga t na skup atributa X.
Propozicija- ti[] = tj[] , ti,tjr da se bilo koja dva sloga podudaraju na
atributu.
praznom
7. Ažuriranje relacije
Izmjene u aplikacijskoj domeni imaju za posljedicu promjenu relacije
(održavanje modela odgovarajućim modelom za danu situaciju).
8. Primarni indeks, sekundarni indeks
SUBP automatski kreira primarni indeks na temelju primarnog ključa.
Sekundarni indeks kreira korisnik. Jednoj vrijednosti sekundarnog indeksa mozeodgovarati
grupa s više od jednog reda. Sekundarni indeks nema svojstvo jedinstvene identifikacije.
9. Relacijski operatori: unija, presjek razlika
Unija- r s (R) ; r  s = t nad R t  r ili t  s (redovi se ne ponavljaju)
Presjek- r  s (R) ; r  s = t nad R  t  r i t  s (redovi koji su: u R i u S
Razlika- r  s (R) ; r  s = t nad R  t  r i t  s (koji su u R a nisu u S)
10. Relacijski operatori: projekcija, selekcija
Projekcija- Za relaciju r(R) i X  R , X   imamo: X(r) (X) ; X(r) = tX  t  r  U
projekciji nema ponavljanja redova
Selekcija- F(r) (R) ; F(r) = t  r  F(t) = 1
11. Relacijski operatori: prirodno spajanje, aktivni komplement
Prirodno spajanje- Neka su zadane relacije r(R) , s(S) .r  s (RS) ; r  s = t nad RS  tR  r i
tS  s 
Aktivni komplement- Neka je zadana relacija r(A1,.., An) . Aktivni komplement od r je
relacija AC(r) definirana jednakošću: AC(r) = A(r)  ..  An(r)  r
12. Relacijski operatori: preimenovanje, produkt
PREIMENOVANJE ATRIBUTA
Za relaciju r(R) i A1 A2..Am Í R te B1, B2,..Bm  R i Dom(Ai) = Dom(Bi)
za i = 1,.m
3
foiskripte.com
„neslužbena skripta“
preimenovanjem atributa A1, A2,..Am redom atributima B1, B2,..,Bm u
relaciji r(R) dobivamo relaciju A1, A2,..,Am  B1, B2,..,Bm](r) (S) , gdje je
S = (R - {A1, A2,.., Am) È B1, B2,..,Bm};
Slogoviu  su slogovi iz r .
PRODUKT
Neka su zadane relacije r(R) i s(S). Produkt relacija r i s definiramo
ovako:
(1) Akoje R  S = Æ , ondaje r  s = r  s
(2) Akoje R  S   , onda izvršimo preimenovanje atributau R i S tako
da postignemo disjunktnost, a zatim primijenimo (1) .
13. Relacijski operatori: projekcija, kvocijent
Projekcija- Za relaciju r(R) i X  R , X   imamo: X(r) (X) ; X(r) = tX  t  r  U
projekciji nema ponavljanja redova
KVOCIJENT
Za relacije r(R) i s(S) takve daje S Ì R , kvocijent relacija r i s je relacija
r ¸ s (T) , gdjeje T = R  S ;
r  s = PT(r)  T(T(r)  s)  r 
Kvocijent relacija r(R) i s(S) predstavlja skup svih slogova t iz T(r)
takvih da kad spojimo t sa bilo kojim slogom t1 iz s(S) dobijemo slog iz r .
14. Temeljni skup relacijski operatora
Svaki relacijski izraz može se napisati u ekvivalentnom obliku koji je izgrađen samo od
operatora ,  , ,  ,  ,  .
4
foiskripte.com
„neslužbena skripta“
15. Katalog(relacijski operatori)
Za bilo koje relacijer(R), s(R) i F primjenjivo na r i s vrijedi:
(1) s[F](r  s) = [F](r)  [F](s)
(2) s[F](r Ç s) = [F](r)  [F](s) [F](r s) = [F](r)  [F](s)
Za bilo koje relacije r(R), s(R) i X ÍR vrijedi:
(4) P[X](r  s) = P[X](r)  P[X](s)
(5) P[X](r  s) = [X](r)  [X](s)
(6) [X](r)  [X](s)  P[X](r  s)
Za bilo koje relacije r(R), s(S) vrijedi:
(7) r ¥ s = s ¥ r
(8)
P[R](r  s) Í r
Za bilo koju relaciju r(R) vrijedi
(9) r Í P[X](r)  [Y](r) , gdjeje d(R) : X, Y dekompozicija od R , tj. X, Y Í
R i XY = R .
(10) r  [X](r) = r , gdjeje X Í R .
Za bilo koje relacije r(R), s(S) vrijedi:
(11) [F](r  s) = [F](r) s , gdjeje F primjenjivo na
r.
Za bilo koju relaciju r(R) , X R vrijedi:
(12)
[X]([F](r)) = [F]([X](r)) , gdje je F primjenjivo na [X](r)
16. Interpretacija relacijskog izraza kao upita
17. Relacijski upitni jezici
SQL : Structured Query Language
QUEL : Query Language
QBE : Query by Example
18. SQL (osnovne karakteristike)
(A) Relacijski jezik (dio je relacijskog SUBP)
(B) Deklarativan (s proceduralnom komponentom)
SQL ima dvije komponente:
(1) DDL (data definition language) je jezik za definiranje strukture podataka .
(2) DML (data manipulation language) je jezik za rukovanje podacima .
Kako je struktura BP stalnija od sadržaja BP , DDL se razmjerno rjeđe
koristi od DML .
P
5
foiskripte.com
„neslužbena skripta“
19. Kreiranje baze podataka
Create table dijelovi (Dio# int not null, Dio-od int not null, Naziv varchar(5), primary key
(Dio#))
20. Osnovni upiti
Select * from dijelovi (izlistati tablicu dijelovi)
21. Ponavljanje redova u rezultatu upita, eliminacija ponavljanja
Select distinct Dio# from skladište where S# = ‘S1’ or S# = ‘S3’
22. Operatori uspoređivanja






Jednakost =
Različitost 
Strogo manj 
Manje ili jednak=
Strogo veće 
Veće ili jednako =
23. Logički operatori (trovalentna logika)
Negacija NOT
Disjunkcija OR
Konjunkcija AND
24. Operator between
X between Y and Z znači (X = Y) and (X = Z) not (X<=Y) and (X<Z)
25. Operator in
Select B
From S
Where B in (X, Y, Z) , tj (where B=X, B=Y, B=Z)
- Ova formula vrijedi za bilo koju tablicu (S) koja ima neke elemente i među njima B.
26. Redoslijed redova u rezultatu upita
ascend (asc) - rastući poredak,
descend (desc) - padajući poredak
6
foiskripte.com
27. Spajanje tablica (realizacija u SQL-u)
SQL(U): Select Naziv, Kolicina
from skladiste, dijelovi
where skladiste.Dio# = dijelovi.Dio#
and S# = ‘S1’
28. Jednakost (pod)nizova
SQL(U1): Select Ime
frompas
where Ime = ‘Bobi
29. Vanjsko spajanje
SQL(U): SELECT *
FROM r1, r2
WHERE r1.B = r2. B
Lijevo vanjsko spajanje
SQL(U1): SELECT *
FROM r1, r2
WHERE r1.B *= r2.B
Desno vanjsko spajanje
SQL(U2): SELECT *
FROM r1, r2
WHERE r1.B = * r2.B
Potpuno vanjsko spajanje
SQL(U3): SELECT *
FROM r1, r2
WHERE r1.B *=* r2.B
„neslužbena skripta“
7
foiskripte.com
„neslužbe skripte“
30. Skupovne operacije
Union 
Intersect 
Minus definirane za kompatibilne relacije (korespondencija između atributa jednakih domena).
31. Zbirni upiti
sum(A) : zbroj vrijednosti u stupcu;
avg(A) : prosjek vrijednosti u stupcu;
min(A) : :minimalna vrijednost u stupcu A,
max(A) : maksimalna vrijednost u stupcu A,
count(A) : broj razlièitih vrijednosti u stupcu A,
count(*) : broj redova
32. Horizontalna podjela tablice
selectA, sum(B) from r group by A;



Grupiranje se može vršiti samo prema stupcima koji pripadaju nekoj od tablica iz
klauzule from
Klauzula group by sadrži sve (obične) stupce iz select liste, a select lista sadrži sve
stupce iz group by (praktičan zahtjev)
Prilikom group by S , sve null oznake izS smatraju se jednakim
33. Uvjeti: where, having
Where je uvjet na red, having je uvjet na grupu redova.
Having bez group by odnosi se na cijelu tablicu kao grupu.
34. Podupiti



Podupit se navodi u zagradama (
)
Rezultat podupita je tablica (skup)
Podupit ne sadrži order by, a niti uniju select iskaza
PITUP
8
foiskripte.com
„neslužbe skripte“
35. Vanjska referenca
PITUP
9
foiskripte.com
„neslužbe skripte“
36. Uvjeti: any, all, in, exists
36. Ažuriranje baze podataka
Ažuriranje baze podataka vršimo pomoću operatora:
INSERT - Upisivanje novih redova u tablicu
DELETE - Brisanje postojećih redova iz tablice
UPDATE - Mijenjanje sadržaja redova iz tablice
37. Pogledi
PITUP
10
foiskripte.com
„neslužbe skripte“
Pogled (relacija) p1 je virtuelna relacija (nije materijalizirana i ostvaruju se na zahtjev) ; p1 je
derivirano, tj. definirano na temelju bazne relacije r.
KORIŠTENJE POGLEDA
1. Olakšava interakciju (postavljanje upita)
2.
Zaštita BP
38. Ažuriranje pogleda
39. Integritet baze podataka
Definiranje i održavanje formalne ispravnosti sadržaja baze podataka.
VRSTE INTEGRITETNIH UVJETA (OGRANIČENJA)
I1: Zahtijevanje vrijednosti (zabranjuje se da
PITUP
11
foiskripte.com
„neslužbe skripte“
stupac (stupci) poprimi null znak)
I2: Kontrola valjanosti vrijednosti (definira se skup
vrijednosti koje mogu biti upisane u dani stupac)
I3: Entitetski integritet (niti jedan od atributa iz
primarnog ključa ne smije poprimiti null);
I3 je specijalizacija od I1 .
I4: Jedinstvenost entiteta (zahtijeva se jedinstve nost svake vrijednosti u stupcu (stupcima))
I5: Referencijalni integritet (Sprečava se da vanjski
ključevi ukazuju na nešto čega nema)
I6: Poslovna ograničenja (iskazuju se poslovna
pravila čije kršenje može dovesti do poslovnih
problema)
40. Referencijalni integritet
41. Referencijalni ciklus
PITUP
12
foiskripte.com
„neslužbe skripte“
PITUP
13
foiskripte.com
„neslužbe skripte“
42. Sigurnost baze podataka
Riječ je o postupcima (mjerama) zaštite baze podataka od njena neovlaštenja korištenja.
Dvije razine zaštite:
(A) Zaštita na razini sustava
(B) Zaštita na razini elemenata (objekata) baze podataka
Razina (A) realizira se registracijom korisnika (uz potencijalne ovlasti na razini (B)).
Razina (B) realizira se dodjeljivanjem ovlasti za određene elemente (objekte) baze podataka.
43. Indeksi
Primarni indeks se kreira automatski (od strane SUBP). Primarni ključ postaje primarni indeks.
Sekundarni indeks kreira korisnik.
Primjer (sekundarni indeks)
Kreirat ćemo sekundarni indeks po atributu Naziv relacije robot.
dijelovi(Dio#, Dio-od, Naziv)
PK = PI = Dio#
Create index I1 on dijelovi(Naziv)
I1 je sekundarni indeks. Ako želimo poništiti (eliminirati) sekundarni indeks I1, pisali bismo
Drop index I1.
44. Katalog sustava za upravljanje bazom podataka
DBMS vodi evidenciju o strukturnim svojstvima tablica, pogleda, ovlasti, ostalih entiteta u DB.
Navedeno čini sadržaj kataloga sustava (System catalog). Riječ je o relacijskoj bazi podataka.
45. Transakcije
Transakcija je vremenski uređen niz nedjeljivih radnji (radnje čine logičku jedinicu rada). U našem
kontekstu radnje su SQL iskazi .
46. Model realizacije transakcija u sustavu za upravljanje bazom podataka
PITUP
14
foiskripte.com
„neslužbe skripte“
Transakcija T: A1; A2;..; Ak je niz SQL iskaza.
Iskazi A1, A2,.., Ak se izvršavaju kao cjelina, tj. svi iskazi se izvršavaju uspješno ili se niti jedan
iskaz ne izvršava.
47. Izvršenje skupa transakcija, serijsko izvršenje, valjano (nevaljano) izvršenje
= akcije se ne smiju ispreplitati
Transakcija je valjana (validna) ako transformira valjanu bazu podataka u valjanu bazu podataka.
Dozvoljena su ona izvršenja koja su ekvivalentna nekom serijskom izvršenju (mogu se linearizirati).
PITUP
15
foiskripte.com
„neslužbe skripte“
48. Zaključavanje (locking), zastoj (deadlock)
Postupkom zaključavanja izbjegavamo nevaljana izvršenja. Usvojit ćemo sljedeće pravilo
zaključavanja.
Ako se prva radnja transakcije T izvršava na relaciji r , onda se relacija r zaključava, odnosno
relacija r je nedostupna za druge transakcije; relacija r se otključava tek onda kada je
transakcija T u cijelosti izvršena. Poslije toga, r je dostupna za druge transakcije.
Zaključavanje na razini:
(A)
(B)
(C)
(D)
BP
Tablice
Stranice
Retka
Zaključavanje na manjoj jedinici podataka daje ‘veću’ usporednost (paralelizam), ali su algoritmi
zaključavanja složeniji.
U postupku zaključavanja može doći do zastoja.
Zastoj (Deadlock)
Izvršenje ima sljedeći redoslijed (A1, B1, A2, B2) .
Radnjom A1 zaključava se relacija r; radnjom B1 zaključava se relacija s ; radnja A2 čeka
otključavanje s , a radnja B2 čeka otključavanje r . Prema tome niti jedna od transakcija ne
može završiti pa se čekanje nastavlja (‘ad infinitum’). Navedeni zastoj se eliminira intervencijom
administratora baze podataka. On će nakon nekog vremena čekanja aktivirati, napr., serijsko
izvršenje.
Imamo ove tipove brava:
(1) Zajednička brava (shared):
Koristi se kod transakcija koje samo čitaju danu jedinicu podataka.
(2) Isključiva brava (exclusive):
Koristi se kod transakcija koje mijenjaju jedinicu podataka.
PITUP
16
foiskripte.com
„neslužbe skripte“
49. SQL i programiranje
(a) Ugrađivanje (embedding) SQL naredbi u
(proceduralne) programe
(b) Aplikativno programiranje
(koristise API (Application programming
interface))
50. Sintaksni dijagram
PITUP