Professional Documents
Culture Documents
BAZE PODATAKA
Web:
http://www.fsr.ba/~goran
o E-mail: goran.kraljevic@hteronet.ba
goran.kraljevic@sve-mo.ba
Sadrţaj predmeta:
o Uvod u baze podataka;
o Sustav za upravljanje bazom podataka;
o Relacijski model podataka;
o Modeliranje podataka (Model entiteti-veze, UML notacija);
o Normalizacija podataka (Normalne forme);
o Relacijske baze podataka;
o SQL (standardni upitni jezik);
o Korisnici i sigurnost baze podataka;
o Višekorisnički rad i upravljanje transakcijama;
o Zaključavanje podataka;
o Objekti u bazi podataka (tablice, pogledi, indeksi, ...);
Pismeni + Usmeni
Prolazna ocjena na ispitu: min. 60 bodova
60-69 bod. .......... dovoljan (2)
70-79 bod. .......... dobar (3)
80-89 bod. .......... vrlodobar (4)
90-100 bod. ........ izvrstan (5)
Napomena:
Studenti koji tijekom semestra (kolokviji ...) osvoje 40-49 bodova
dobit će 10 bodova koji će im se pribrojiti na svim pismenim ispitnim
rokovima do kraja akademske godine.
Studenti koji tijekom semestra (kolokviji ...) osvoje 30-39 bodova
dobit će 5 bodova koji će im se pribrojiti na svim pismenim ispitnim
rokovima do kraja akademske godine.
• Problemi:
̶ nema standarda
̶ višestruko ponavljanje podataka
̶ meĎuovisnost podataka
̶ teško je vršiti neuobičajena pretraživanja
̶ integritet podataka
̶ sigurnost
̶ istovremeni pristup, ...
• Relacijski model
̶ 1970. dogaĎa se relacijska "revolucija“
̶ E.F.Codd objavljuje članak "A Relational Model
of Data for Large Shared Databanks"
koji postavlja osnove skoro svim današnjim
sustavima baza podataka
• Objektni model
̶ inspiriran objektno orijentiranim programskim jezicima
̶ baza je skup objekata koji se sastoje od podataka i metoda
koje vrše operacija nad njima
Funkcije SUBP-a:
• Definiranje baze podataka (DDL–Data Definition Language)
• Manipuliranje podacima u bazi (DML–Data Manipulation Language)
• Upravljačke funkcije:
̶ Sigurnost i zaštita od
neovlaštenog pristupa
̶ Očuvanje integriteta
(backup i recovery)
̶ Statističko praćenje
rada baze podataka
̶ Optimizacija rada
̶ Relacija
̶ Atribut
̶ Domena
Primjer:
Primjer:
• Entitetski integritet
- povezan sa primarnim ključem
• Referencijalni integritet
- povezan sa stranim ključem
Primjeri:
NASTAVNIK = {SifNas, PrezNas}
PK (NASTAVNIK) = {SifNas} → SifNas ne smije biti NULL
ISPIT = {Matbr, SifPred, DatIsp}
PK (ISPIT) = {Matbr, SifPred, DatIsp} → Matbr, SifPred, DatIsp ne smiju biti NULL
• Integritet ključa:
U relaciji ne smiju postojati dvije n-torke s jednakim
vrijednostima kljuĉa (vrijedi za sve moguće kljuĉeve).
Primjer:
Domenski integritet
• Kako svaki atribut ima pridruženu domenu, postoje ograničenja
(engl. domain constraints) koja čine restrikcije nad skupom
dozvoljenih vrijednosti atributa relacije.
• Unija
• Razlika
• Presjek
• Kartezijev produkt
• Projekcija
• Selekcija
• Spajanje (join)
ER modeliranje:
• je sastavljeno iz entiteta, veza i atributa
• je slikovni prikaz sustava baze podataka
• je neovisno o DBMS i hardveru
• predstavlja konceptualni model visokog nivoa
• podržava korisnikovu percepciju podataka
• je alat za projektiranje
• JAKI entitet
Tip entiteta čija egzistencija nije vezana za postojanje nekog
drugog tipa entiteta.
• SLABI entitet
Tip entiteta čija egzistencija ovisi o postojanju nekog drugog
tipa entiteta, tj. onaj tip entiteta koji ne može postojati u bazi
podataka ukoliko neki drugi tip entiteta takoĎer ne postoji u
bazi.
Binarna veza
veza 2 entiteta
Ternarna veza
veza 3 entiteta
Unarna veza
isti entitet više puta
egzistira u različitim
ulogama
Primjer:
• Vezu više na više možemo razbiti uvoĎenjem entiteta najam, koji sadrži
atribut datum_najma
VEZA JEDAN:VIŠE
• Primarni ključ entiteta sa strane veze JEDAN doda se kao
strani ključ u entitet sa strane veze VIŠE.
VEZA VIŠE:VIŠE
• Doda se novi entitet, koji sadrži primarne ključeve obaju
rubnih entiteta.
• Ti atributi zajedno tvore složeni primarni ključ novonastalog
entiteta.
Usporedne veze
• Svaku vezu zamijenimo s po jednim stranim ključem u relaciji
na strani veze VIŠE (usporedne veze se preslikaju u jednu, ali
s uvoĎenjem dodatnog stranog ključa).
• Da bi razlikovali veze meĎu entitetima stranim ključevima
damo različite nazive.
Povratne veze
• Doda se strani ključ jednak primarnom ključu relacije.
• Za povratne veze vrijedi da je strani ključ jednak primarnom
ključu relacije, ali pod drugim imenom.
ZAVISNOST (dependency)
AGREGACIJA (aggregation)
GENERALIZACIJA (generalization)
REALIZACIJA (realization)
Rješenje:
PK (STUDENT) = {Matbr}
PK (ISPIT) = {Matbr, SifPred, DatIsp}
ISPIT ne zadovoljava 2 NF !
Rješenje:
ISPIT ne zadovoljava 3 NF !
Rješenje:
Vaţno:
- Baza podataka treba biti barem u 3 NF !
- Osim 1NF, 2NF, 3NF postoje i BCNF (Boyce-Coddova normalna forma),
4NF i 5NF.
...
Evidentiraju se letovi samo putničkih zrakoplova. Let je identificiran šifrom
i datumom leta (npr. "OU763", 1.6.2010), a za let se evidentira s kojeg
aerodroma zrakoplov polijeće, na koji aerodrom slijeće te vrijeme
polijetanja i vrijeme slijetanja. Evidentira se koji zrakoplov leti na kojem
letu.
Evidentiraju se kategorije cijena karata. Svaka kategorija cijena ima svoju
šifru (jedinstveno identificira kategoriju) i naziv (npr. "poslovna",
"ekonomska", "s popustom za zaposlenika kompanije", "s popustom za
osobe mlaĎe od 27 godina", itd). Putnik kupuje kartu točno odreĎene
kategorije cijene za odreĎeni let. Putnik ne može za jedan let kupiti više
od jedne karte. Za svakog putnika se evidentira jmbg (jedinstveno
odreĎuje putnika), prezime i ime.
• Primjer SQL naredbe iz DML dijela jezika (iz tablice mjesto dohvaća sve
n-torke kojima je vrijednost atributa poštanski broj jednaka 88000):
SELECT *
FROM mjesto
WHERE pbr = 88000;
Kreiranje tablice:
Brisanje tablice:
• NULL/NOT NULL
• UNIQUE
• PRIMARY KEY
• FOREIGN KEY
• CHECK
• VARCHAR2(size)
• CHAR[(size)]
• NUMBER[(p,s)]
• DATE
ALTER TABLE
dodavanje novih atributa
modificiranje postojećih atributa
definiranje default-ne vrijednosti za novi atribut
brisanje atributa
Primjeri:
Primjeri:
Primjer:
Primjer:
Primjer:
Primjeri:
Integritet:
̶ korektnost (dopuštene zdravorazumske vrijednosti podataka)
̶ konzistencija (meĎusobna suglasnost podataka)
• CONNECT pero/pero;
GRANT sistemske_privilegije
TO korisnik | uloga | PUBLIC
[WITH ADMIN OPTION]
REVOKE sistemske_privilegije
FROM korisnik | uloga | PUBLIC
Primjeri:
Korisnici
Uloga
Privilegije
• GRANT uloga_1
TO pero;
Primjer:
• GRANT select
ON mjesto
TO PUBLIC;
500 KM
Raĉun 1 Raĉun 2
5.000 KM 1.000 KM
• 2 tipa transakcija:
o DDL – sadrži jedan DDL iskaz
o DML – sadrži jedan ili više DML iskaza
Optimistiĉne tehnike
• bazirane na pretpostavci da su konflikti rijetki tako da
dozvoljavaju transakcijama da nastave i nesinkronizirane
• provjeravaju konflikt na kraju (kada se transakcija potvrĎuje)
o read uncommitted
čitanje bez zaključavanja;
o read committed
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
otključava zapise odmah nakon što su pročitani;
o repeatable read
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
podaci ostaju zaključani do kraja transakcije;
UPDATE djelatnik
t1 SET placa=placa+1000
WHERE id_djelatnika=1; UPDATE djelatnik
t2 SET placa=placa-500
WHERE id_djelatnika=2;
UPDATE djelatnik
t3 SET placa=placa-500
WHERE id_djelatnika=2;
UPDATE djelatnik
t4 SET placa=placa+1000
WHERE id_djelatnika=1;
t5 → ORA-00060: deadlock detected while waiting for resource
Zakljuĉavanje:
– n-torke nad kojima se rade izmjene kroz transakciju (INSERT,
UPDATE, DELETE) automatski se zaključavaju i ostali korisnici
ih ne mogu mijenjati
Napomena: Npr. u Oracle sustavu implicitno zakljuĉavanje
će se desiti za sve SQL iskaze osim SELECT-a
Zakljuĉavanje:
– n-torke nad kojima su vršene izmjene kroz transakciju
nisu više zaključane i navedene n-torke postaju dostupne
za izmjenu i drugim korisnicima
Zakljuĉavanje:
– n-torke koje su bile implicitno zaključane kroz transakciju
nisu više zaključane te postaju dostupne za izmjenu i drugim
korisnicima
• TABLE – Tablica
• VIEW – Pogled
• INDEX – Indeks
• SEQUENCE – Sekvenca
(Oracle)
• SYNONYM – Sinonim
• STORED PROCEDURE – Pohranjena procedura
• TRIGGER – Okidač
Što je pogled?
o “prozor” u podatke
o podaci se izvode, ne posjeduju
o pohranjuje se kao SELECT izraz u rječnik podataka
Uporaba pogleda
o za ograničenje pristupa podacima
o za pojednostavljenje složenih upita
o za omogućavanje neovisnosti podataka
o za prikaz različitih pogleda na iste podatke
Jednostavni pogled
o podaci su iz jedne tablice
o ne sadrži funkcije ili grupe
o može izvršiti DML
Sloţeni pogled
o podaci su iz više tablica
o sadrži funkcije ili grupe
o ne može izvršiti DML
AUTOMATSKI
• UNIQUE INDEX se automatski kreira kada se definira
PRIMARY KEY ili UNIQUE CONSTRAINT u definiciji
tablice.
RUĈNO
• Korisnik može ručno dodati indeks na neki drugi atribut
(radi ubrzanja pristupa podacima).
Primjer:
• CREATE INDEX djelatnik_prez_idx
ON djelatnik(prezime);
• ...
Primjer:
Sekvenca (Oracle)
• SELECT odjel_sifra_seq.CURRVAL
FROM dual;
Primjer:
CREATE [PUBLIC] SYNONYM ime_sinonima
FOR [vlasnik.]ime_objekta;
REVOKE EXECUTE
ON { ime_procedure | ime_funkcije }
FROM { korisnici | uloge | PUBLIC }
[ CASCADE | RESTRICT ]
EXECUTE PROCEDURE
prebaci (1, 2, 500);
“Pasivni” SUBP
• konvencionalni SUBP je pasivan
• operacije nad podacima se izvršavaju isključivo na temelju
eksplicitnog zahtjeva korisnika / aplikacije
Web:
http://www.fsr.ba/~goran
o E-mail: goran.kraljevic@hteronet.ba
goran.kraljevic@sve-mo.ba