1 „neslužbena skripta baze podataka skripta · pdf filebaza podataka je kolekcija...
TRANSCRIPT
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,tjr da se bilo koja dva sloga podudaraju na praznom
atributu.
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) = tX 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 tR r i
tS 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) = tX 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 = PT(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) P
[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 .
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 „neslužbena skripta“
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
PITUP
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) BP (B) Tablice (C) Stranice (D) 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