You are on page 1of 9

5/9/2014

INTEGRITET
PODATAKA
Baze podataka

Osim podataka, potrebno je modelovati i pravila.

Pravila i ograničenja (constraints) određuju moguće


vrednosti podataka i moguće akcije nad podacima.

Pravila

Podaci

1
5/9/2014

DEKLARATIVNI INTEGRITET -
zadovoljenje formalnih pravila
(npr. ocena na ispitu je integer od 5 do 10, ne može
biti 18,76)

PROCEDURALNI INTEGRITET -
zadovoljenje logičkih uslova
karakterističnih za prostor problema
(npr. student ne može prijaviti ispit iz predmeta koji
nije slušao)

Pravila integriteta
relacionog modela

1. INTEGRITET ENTITETA:
Ni jedan atribut koji je primarni ključ, ili je
deo primarnog ključa, ne sme nikad
poprimiti NULL vrednost!

2. REFERENCIJALNI INTEGRITET:
Skup vrednosti spoljnjeg ključa relacije R1
mora biti podskup skupa vrednosti
primarnog ključa relacije R2, s kojom se
R1 povezuje.

2
5/9/2014

Primarni ključ se zahteva (ne može biti NULL)

Spoljni ključ poprima


vrednosti primarnog ključa
relacije sa kojom se vezuje

Referencijalni integritet
Referencijalni integritet čuva i štiti
veze među entitetima.
strani ključ primarni ključ
index# ime ... smer# IDsmera naziv ...
32008 Marija 1 1 EPO
34865 Tanja 3 2 BIO
47962 Ljiljana 1 3 MT
spoljna relacija primarna relacija

Uslov očuvanja referencijalnog integriteta:

Spoljna relacija ne sme da sadrži strani ključ za


koji ne postoji vrednost primarnog ključa u
primarnoj relaciji!

3
5/9/2014

ENTITETI SIROČIĆI (orphaned entities):


n-torke koje sadrže vrednosti spoljnog ključe koja ne
postoji kao primarni ključe u primarnoj relaciji.

Uzroci pojave entiteta siročića:


spoljnoj tabeli je dodata vrednost
zabranjuje se koja ne postoji kao primarni ključ

izmenjena je vrednost ključa u


relativno retko primarnoj tabeli
u praksi

izbrisan je referencirani entitet u


primarnoj tabeli

ZABRANOM PROMENE PRIMARNOG KLJUČA


eliminišu se uzroci pojave entiteta siročića.

AKO SE DOZVOLI PROMENA PRIMARNOG KLJUČA:

KASKADNO (lančano) AŽURIRANJE (cascading update):


automatsko ažuriranje spoljnih ključeva u spoljnoj
relaciji, kad se promeni primarni ključ u primarnoj
relaciji

KASKADNO (lančano) BRISANJE (cascading delete):


automatsko brisanje entiteta iz spoljne relacije kad se
briše entitet u primarnoj relaciji

KASKASKADNO AŽURIRANJE I BRISANJE je veoma opasno,


moguća je pojava neželjenih efekata u složenim sistemima.

ALTERNATIVA:
UVOĐENJE VIRTUELNOG KLJUČA tipa AutoNumber, koji se nikad
ne menja, a ostaje skriven od korisnika.
UVOĐENJE LOGIČKOG ATRIBUTA kao INDIKATORA BRISANJA,
pa se fizičko brisanje entiteta nikad ne dešava.

4
5/9/2014

TIP (type) ATRIBUTA


• numerički (integer, real, currency...)
Sistemski • tekstualni (text, string, memo...)
• datumski (Date, DateTime, Time...)
tipovi • logički (Yes/No, Boolean, bit...)
• ...

Korisnički • Dan u nedelji (ponedeljak, utorak...)

definisani • Smer studenta (BIO, MIT, EPO)


• Tip studenta (budžetski, samofinansirajući)

tipovi • pol (muško, žensko)

DOMEN (domain) ATRIBUTA


DOMEN je skup vrednosti koje atribut može poprimiti.
Primer: ocena je celi broj od 5 do 10, godina studija je
celi broj od 1 do 3, semestar je celi broj od 1 do 6...

DOMEN JE PODSKUP TIPA!

Integritet domena

INTEGRITET DOMENA
je trojka (tip podatka, dužina podatka, uslov).

primer:
1. smer (Text, 3, IN {"BIO","EPO","MIT" })

2. ocena (Integer, , (>= 5) and (<= 10))

Sistemski numerički, datumski i logički tipovi imaju


fiksnu dužinu, pa se ona ne mora navoditi.

5
5/9/2014

tip podatka

ATRIBUT

dužina podatka

uslov

Integritet relacionog modela i integritet


domena su DEKLARATIVNI INTEGRITETI.

Deklarativni integritet se ugrađuje u definiciju


podataka, prilikom definisanja strukture baze
podataka.

Mašina baze podataka (DBMS - Database


Managment System) ne dozvoljava korisniku
narušavanje deklarativnog integriteta!

6
5/9/2014

PROCEDURALNI INTEGRITET

PROCEDURALNI INTEGRITET inkorporira


poslovna pravila u bazu podataka.
POSLOVNA PRAVILA su određena prostorom
problema.
Proceduralni integritet se ugrađuje u čeone
komponente aplikacije (tj. u program sistema
koji radi sa bazom podataka).

Nepoznate i nepostojeće vrednosti


Radnik nema premiju.
Student nema telefon. Premija radnika je O.
Student ima telefon, ali ga mi ne znamo.

NULL
posebna vrednost atributa koja omogućava
dodelu nepoznatih i nepostojećih vrednosti

Primarni ključ ne sme imati vrednost NULL!


ALTERNATIVA:
UVOĐENJE KONVENCIONALNE VREDNOSTI kao indikatora
nepostojeće ili nepoznate vrednosti. (npr. #01/01/1900# za datum)

PROBLEM: korisnik mora znati koja je vrednost uvedena.


agregatne funkcije mogu imati netačan rezultat.

TREBA KORISTITI NULL VREDNOSTI!

7
5/9/2014

INTEGRITET PROMENE STANJA


(transition integrity constraints)
Integritet promene stanja definiše stanja kroz koja n-torka može
da prođe i u kom mogućem redosledu se ta stanja mogu javiti.

primljen zahtev knjiga izvršena knjiga knjiga


za knjigu poručena reklamacija primljena izdata

INTEGRITET TRANSAKCIJA
(transaction integrity)

TRANSAKCIJA
skup akcija nad podacima koji se izvršavaju
celovito. (tj. ili se realizovala svaka, ili nijedna)

Integritet baze podataka mora biti garantovan na početku


i na kraju transakcije. U toku odvijanja transakcije, može
biti privremeno narušen.

8
5/9/2014

Razlozi • Hardverski (otkaz uređaja,


neuspelog prekid napajanja...)
odvijanja • Softverski (virusi, bagovi,
transakcije otkaz OS...)

BEGIN TRANSACTION
Kod neuspele transakcije,
baza podataka se vraća u
stanje pre početka COMMIT TRANSACTION
transakcije!

ROLLBACK TRANSACTION

OKIDAČI (triggers)

OKIDAČI
kraći delovi koda koji se automatski izvršavaju
kada se desi neki događaj (npr. upis ili
brisanje entiteta, promena vrednosti nekog
atributa i slično).

Za realizaciju proceduralnog integriteta mogu se


koristiti okidači, ili se pravila proceduralnog integriteta
ugrađuju u čeonu komponentu aplikacije.

You might also like