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 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) = 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) [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
© Copyright 2024 Paperzz