[Р371] Пројектовање база података 2 [Р371] Пројектовање база података Саша Малков Саша Малков Универзитет у Београду Математички факултет 2018/2019 Тема 3 Релациони модел података [Р371] Пројектовање база података Саша Малков 2018/19 час 2 1 Делови релационог модела Структурни део релационог модела Релациони модел чине: Структурни део релационог модела начин моделирања података Манипулативни део релационог модела начин руковања моделираном подацима Интегритетни део релационог модела начин обезбеђивања ваљаности података Основна идеја је да се све моделира релацијама све значи и ентитети и односи касније ћемо детаљније о томе најпре ћемо да размотримо моделирање ентитета [Р371] Пројектовање база података Саша Малков 2018/19 час 2 2 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 3 1
Математичке основе Модел релације Релациони модел је у потпуности формално математички заснован Овде ћемо само навести оквире те формализације у ширини и дубини које омогућавају даљи рад За више информације погледајте друге изворе Свакој математичкој релацији одговара тачно један скуп објеката који задовољавају релацију Тај скуп се често употребљава као математички модел релације Ако је nарна релација и њен домен означен са Dom( ) Онда је један модел релације скуп: model( ) = { (a 1, a 2, a n ) (a 1, a 2, a n ) Dom( ) (a 1, a 2, a n ) } Приметимо да важи: model( ) Dom( ) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 4 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 5 Представљање релација скуповима Пример За све nторке из Dom( ) важи: (a 1, a 2, a n ) (a 1, a 2, a n ) model( ) Због наведене еквиваленције често се уместо ознаке model( ) употребљава и само ознака релације у истом контексту: = {(a 1, a 2, a n ) (a 1, a 2, a n ) Dom( ) (a 1, a 2, a n ) } Т.ј. релације често представљамо управо помоћу њиховог модела Нека имамо црвену, плаву, белу и зелену кутију и у њима лопте, коцке и плочице Бинарна релација kutijasadrži(k,p) је задовољена ако кутија K садржи P Њен домен је: Dom(kutijaSadrži) = { crvena, plava, bela, zelena} { lopte, kocke, pločice } Нека наредни модел релације описује шта се налази у којој кутији: kutijasadrži = {(plava,lopte), (plava,kocke), (zelena,pločice),(crvena,kocke)} Исказ kutijasadrži(plava,kocke) је тачан Исказ kutijasadrži(zelena,lopte) није тачан Искази kutijasadrži(žuta,kocke) и kutijasadrži(zelena,knjige) нису дефинисани, зато што аргументи нису у домену релације [Р371] Пројектовање база података Саша Малков 2018/19 час 2 6 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 7 2
Пример (2) Бесконачне релације и скупови Релације (односно њихови модели) са коначним бројем елемената могу да се представе и помоћу табела (таблица): BOJA plava plava zelena crvena kutijasadrži SADRŽAJ lopte kocke pločice kocke Релације са бесконачним бројем елемената можемо да представљамо формалним записивањем скупа који представља модел релације На пример, релацију neparan можемо да представимо, па и да дефинишемо, скупом: neparan = { n n N ( k N)( n=2k1) } У области база података бесконачне релације нису посебно занимљиве колико год да тежимо да наша складишта података буду велика, она су свакако коначна ипак могу да имају своју примену у базама знања и системима за аутоматско закључивање [Р371] Пројектовање база података Саша Малков 2018/19 час 2 8 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 9 Ентитети и атрибути Ентитети и атрибути пример Ентитетима називамо неке објекте стварног света које моделирамо и описујемо неким скупом података Нека је E неки скуп ентитета Кажемо да се скуп ентитета карактерише коначним скупом атрибута A 1, A n, у ознаци E(A 1, A n ), акко: Сваки атрибут A i представља функцију која слика ентитете у одговарајући домен атрибута D i : A i : E D i Сваки атрибут A i има јединствен назив t i За сваки ентитет e E, вредност функције A i (e) D i представља вредност атрибута A i Нека је E скуп радника који се карактерише атрибутима: ime (ниска од 20 знакова) prezime (ниска од 25 знакова) osnova_plate (број облика 7.2). Скуп свих атрибута одређује функцију: (x)=(ime(x), prezime(x), osnova_plate(x)) IME Dragana Marko Dragana Jelena Dragiša PREZIME Pantić Marković Pantić Popović Đukić OSNOVA_PLATE 45000 40000 45000 43000 47000 * Приметимо да за различите ентитете можемо да добијемо једнаке слике [Р371] Пројектовање база података Саша Малков 2018/19 час 2 10 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 11 3
Ентитети и атрибути (2) Представљање ентитета релацијама Скуп свих атрибута одређује функцију: (e)=(a 1 (e), A n (e)) Слика скупа ентитета функцијом је скуп: R= (E) Подсетимо се, функција је инјективна акко за све различите оригинале даје различите слике, тј. акко важи: (e)= (u) акко e=u Кажемо да скуп атрибута добро карактерише скуп ентитета ако, поред наведених услова, функција представља инјективно пресликавање Ако је инјективна функција, тада кажемо да је слика R= (Е) релација R са атрибутима A 1, A n, доменом релације Dom(R)=D 1 D n и називима атрибута Kol(R)=(t 1, t n ) и тада скуп ентитета E са атрибутима A 1, A n моделирамо релацијом R * релација R je добра карактеризација скупа ентитета Е * формално, дефинишемо R тако да је model(r) = (E) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 12 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 13 Записивање Представљање релације табелом Ако је (e)=(a 1,,a n ), онда nторку (a 1,,a n ), која формално представља модел ентитета e, често називамо и ентитетом e A i (e) записујемо и као e.t i Намерно не правимо разлику између релације R и одговарајућих релација добијених пермутовањем атрибута Релацију R= (E) често представљамо, па и називамо, табелом: Колоне табеле одговарају атрибутима A 1, A n Називи колона одговарају називима атрибута t 1, t n Врсте табеле одговарају торкама релације, тј. ентитетима [Р371] Пројектовање база података Саша Малков 2018/19 час 2 14 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 15 4
Релација или табела Представљање ентитета пример Релација не сме да има једнаке елементе RADNIK У контексту концептуалног и логичког моделирања уобичајено је да се користи термин релација У контексту физичког моделирања често се користи термин табела IME Dragana Marko Dragana Jelena Dragiša PREZIME Pantić Marković Pantić Popović Đukić OSNOVA_PLATE 42000 40000 45000 43000 47000 Ако је (x)=(imex, prezimex, osnova_platex), онда ћемо nторку (imex, prezimex, osnova_platex) у записима обично да изједначавамо са x ime(x) ћемо да записујемо као x.ime (и слично за остале атрибуте) Нећемо разликовати релацију RADNIK од релација добијених пермутовањем атрибута ни табелу од табеле која се добие пермутовањем редова [Р371] Пројектовање база података Саша Малков 2018/19 час 2 16 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 17 Релациона база података Пример базе података типови Релациона база података је скуп релација Опис релације чине домен релације и називи атрибута Релациона схема је скуп описа релација које чине базу података Уведимо описно следеће скупове: N(a) = скуп свих целих бројева са највише a декадних цифара"; N(a,b) = скуп свих бројева који у декадном запису са леве стране децималне запете имају највише a, а са десне стране највише b цифара" C(a) = скуп свих ниски дужине до a знакова" D = скуп свих датума (у неком подразумеваном опсегу) Наведени скупови се најчешће употребљавају као домени (тј. типови) атрибута релација Сви атрибути у наредном примеру релационе базе података имају за домен неки од наведених скупова [Р371] Пројектовање база података Саша Малков 2018/19 час 2 18 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 19 5
Пример базе података схема Пример базе података схема (2) ORG_JEDINICA Kol(ORG_JEDINICA) = ('org_jed_id', 'nad_org_jed_id', 'naziv') Dom(ORG_JEDINICA) = N(3) N(3) C(60) Kol(RADNIK) = ('radnik_id', 'org_jed_id', 'ime', 'prezime', 'pol', 'dat_zaposlenja', 'osnova_plate') Dom(RADNIK) = N(4) N(3) C(30) C(50) C(1) D N(10,2) Kol(KAT_STAZA) = ('od_godine', 'do_godine', 'staz_bonus', 'naziv') Dom(KAT_STAZA) = N(2) N(2) N(10,2) C(60) Kol(RESENJE) = ('rad_id', 'proj_id', 'dat_pocetka', 'dat_prestanka', 'opis') Dom(RESENJE) = N(4) N(3) D D C(60) Kol(PROJEKAT) = ('projekat_id', 'proj_bonus', 'naziv') Dom(PROJEKAT) = N(3) N(10,2) C(60) RADNIK RADNIK_ID ORG_JED_ID IME PREZIME POL DAT_ZAPOSLENJA OSNOVA_PLATE REŠENJE RAD_ID PROJ_ID DAT_POČETKA DAT_PRESTANKA N(4) N(3) C(30) C(50) C(1) D N(10,2) N(4) N(3) D D ORG_JED_ID N(3) NAD_ORG_JED_ID N(3) NAZIV C(60) PROJEKAT PROJEKAT_ID N(3) PROJ_BONUS N(10,2) NAZIV C(60) KAT_STAŽA OD_GODINE N(3) DO_GODINE N(3) STAŽ_BONUS N(10,2) OPIS C(60) NAZIV C(60) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 20 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 21 Пример базе података садржај (1) Пример базе података садржај (2) RADNIK RADNIK _ID 100 101 102 103 104 105 106 107 ORG_ JED_ID 10 11 11 30 30 30 40 IME Petar Marko Lazar Milica Dragica Gorica Vladana Đurđa PREZIME Perić Marković Lazić Milić Dragić Bojić Mladić Perić POL M M M Ž Ž Ž Ž Ž DAT_ ZAPOSLENJA 26.03.1991. 30.03.1990. 21.04.1981 30.06.1979. 10.07.1988. 20.07.2003. 05.01.2007. 29.03.1978. OSNOVA _PLATE 42000 43000 28000 45000 44000 39000 29000 35000 ORG_ JED_ID 40 30 11 10 50 60 70 NAD_ORG _JED_ID 40 10 40 40 40 40 ORG_JEDINICA NAZIV Softver Projektovanje Dokumentacija Planiranje Analiza Dizajn i modeliranje Kodiranje 108 40 Đura Lazić M 18.03.1983. 42000 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 22 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 23 6
Пример базе података садржај (3) Пример базе података садржај (4) REŠENJE PROJEKAT RAD_ID 100 PROJ_ID 200 DAT_POČETKA 01.01.1991. DAT_PRESTANKA OPIS privremeno učešće OD_ GODINE 1 6 21 KAT_STAZA DO_ GODINE 5 20 50 STAŽ_ BONUS 2000 5000 8000 NAZIV Početna Srednja Završna PROJEKAT_ID 100 150 200 250 300 250 900 PROJ_ BONUS 1500 2000 1500 NAZIV Crveni LJubičasti Plavi Zeleni Žuti Narandžasti Crni 101 108 104 105 106 107 100 101 102 108 104 105 107 108 200 200 100 100 100 100 150 150 150 150 150 150 150 250 01.01.1991. 01.01.1984. 01.01.1989. 01.01.2004. 01.01.2008. 01.01.1981. 01.01.1999. 01.01.1972. 01.01.1972. 01.01.1972. 01.01.1986. 01.01.1998. 01.01.1999. 01.01.1999. 31.12.1998. 31.12.1998. 31.12.1998. 31.12.1998. 31.12.1998. 31.12.1998. 31.12.1998. Koordinator Projektant 108 300 01.01.1999. 108 350 01.01.1999. 105 250 01.01.1998. 107 350 01.01.1998. [Р371] Пројектовање база података Саша Малков 2018/19 час 2 24 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 25 Моделирање односа Моделирање односа (2) Нагласили смо да се односи моделирају на исти начин као и ентитети релацијама Без много формализовања, погледајмо претходни пример и видећемо да већ имамо неке односе: Сваки RADNIK има додељен тачно једнан ентитет ORG_JEDINICA Свакo REŠENJE представља однос тачно једног ентитета RADNIK и тачно једног ентитета PROJEKAT, уз још неке додатне атрибуте Основна идеја је сасвим једноставна: Ако су два ентитета е Е и f F у неком односу, онда то можемо описати новом релацијом (e,f), чији је домен Dom( ) Ако су ентитети е Е и f F моделирани као e=(x 1,...,x n ), f=(y 1,...,y m ), онда њихов однос може да се моделира као (e,f) = (x 1,...,x n,y 1,...,y m ) Ако постоји подскуп атрибута А i1,...,a ink такав да постоји пресликавање k, које за сваки ентитет е из Е једнозначно пресликава изабрани подскуп атрибута (x i1,...,x ink ) ентитета е у комплетан модел ентитета е (x 1,...,x n ), онда у моделу релације тај скуп атрибута може да се користи уместо пуног скупа атрибута А 1,...,A n [Р371] Пројектовање база података Саша Малков 2018/19 час 2 26 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 27 7
Манипулативни део модела Формални упитни језици Кључно место у манипулативном делу модела има појам упита: Упит је дефиниција нове релације на основу већ познатих релација базе података Најпознатији формални упитни језици у релационом моделу су: Релациона алгебра и Релациони рачун [Р371] Пројектовање база података Саша Малков 2018/19 час 2 28 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 29 Релациона алгебра Упити (2) Проширење скуповне алгебре (коју чине уобичајене скуповне операције на релацијама) Основне додатне операције су: Пројекција издвајање подскупа атрибута: { (x.ime, x.prezime) x RADNIK } Рестрикција издвајање подскупа редова: { x x RADNIK x.org_jed_id = 40 } Производ упаривање свих торки једне са свим торкама друге релације: { (x, y) x RADNIK y ORG_JEDINICA } Комбиновањем основних операција добијајау се сложенији упити, као: природно спајање производ, па рестрикција по услову једнакости атрибута са истим именом, па пројекција на различите атрибуте: {(x, y) x RADNIK y ORG_JEDINICA x.org_jed_id = y.org_jed_id }... слободно спајање спајање са рестрикцијом по слободном услову: {(x, y) x RADNIK y KAT_STAZA y.od_godine staz(x) y.do_godine } (уз претпоставку да је staz(x)=godina(današnji_datumx.dat_zaposlenja) ) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 30 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 31 8
Илустрација операција Релациони рачун Примена предикатског рачуна на релације Еквивалентан релационој алгебри [Р371] Пројектовање база података Саша Малков 2018/19 час 2 32 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 33 Примери упита Примери упита (2) Наредни упит издваја мушкарце који имају основу плате мању од 32000: { x x RADNIK x.pol='m' x.osnova_plate < 32000 } Ако нас занимају имена, презимена и датуми запослења радника који зарађују бар 40000, онда је решење наредни упит: {(x.ime, x.prezime, x.dat_zaposlenja) x RADNIK x.osnova_plate 40000 } Имена и презимена запослених у Планирању, чији стаж улази у категорију Средња : { (x.ime, x.prezime) x RADNIK ( y ORG_JEDINICA) (y.naziv='planiranje' x.org_jed_id=y.org_jed_id) ( z KAT_STAZA) (z.naziv='srednja z.od_godine staz(x) z.do_godine) } [Р371] Пројектовање база података Саша Малков 2018/19 час 2 34 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 35 9
Примери упита (3) Оптимизација упита Написати упит који издваја имена, презимена и категорију стажа запослених који имају највећа примања у свом одељењу или међу радницима истог пола: { (x.ime, x.prezime, y.naziv) } x RADNIK y KAT_STAZA y.od_godine staz(x) y.do_godine (( z RADNIK) (z.org_jed_id=x.org_jed_id z.osnova_plate x.osnova_plate) ( z RADNIK) (z.pol=x.pol z.osnova_plate x.osnova_plate)) Из угла теорије, кључно је да се утврди да је упитни језик довољно добар да се њиме може исказати било који упит У пракси је потребна и ефикасност Оптимизација упита обухвата послове анализе упита и проналажења најефикаснијег пута за његово израчунавање Релациони упитни језици омогућавају релативно једноставно аутоматско модификовање, па тиме и оптимизацију, имајући у виду формалну заснованост * Оптимизација базе података обухвата послове анализе (стварне или процењене) употребе и пројектовања физичког модела базе података у циљу омогућавања свеукупно ефикаснијег рада система [Р371] Пројектовање база података Саша Малков 2018/19 час 2 36 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 37 Манипулативни део модела (2) Интегритетни део модела Поред упита, важно место заузима ажурирање базе података Има више приступа, али суштина је да захтева проширења и нове појмове: релациона променљива (= променљива релације) релација = вредност релације = садржај релационе променљиве променљива базе података база података = вредност базе података = садржај променљиве базе података Ажурирање базе података је замењивање вредности променљиве базе података новом вредношћу базе података т.ј....замењивање вредности једне или више релационих променљивих њиховим новим вредностима Интегритетни део модела чине концепти и механизми који омогућавају да се аутоматизује проверавање задовољености одређених услова Стање базе је конзистентно (тј. исправно) ако садржај базе података испуњава све услове интегритета Промена садржаја (вредности) базе података је допуштена акко преводи базу из једног у друго конзистентно стање (може да се не проверава у тзв. прелазним стањима) (није пресудно за већину примена, помињаћемо детаљније касније) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 38 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 39 10
Интегритетни део релационог модела Врсте услова интегиритета База података (тј. њена вредност) се описује релацијама Услови интегритета у релационом моделу се описују предикатима (истинитосним формулама) над релацијом или базом података Формалност модела олакшава формулисање услова интегритета Општи услови интегритета (имплицитни) они који морају да важе за сваку релацију и сваку базу података подразумевају се на нивоу модела или имплементације СУБП не дефинишу се експлицитно за сваку релацију или базу података Специфични услови интегритета (експлицитни) они који се односе на поједину релацију, атрибут или базу података одређују се при одређивању структуре базе података [Р371] Пројектовање база података Саша Малков 2018/19 час 2 40 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 41 Врсте услова интегиритета (2) Интегритет домена Специфични услови интегритета: интегритет домена интегритет кључа (интегритет јединствености) референцијални интегритет интегритет страног кључа други специфични услови интегритета активно одржавање интегритета Интегритет домена одређује да сваки атрибут може да има само неку од вредности из унапред изабраног домена Домен је неки од типова података, а може да обухвата и дужину податка опциону декларацију јединствености опциону декларацију подразумеване вредности (већина имплементација омогућава и декларисање да ли домен обухвата и тзв. недефинисане вредности) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 42 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 43 11
Интегритет домена (2) Интегритет кључа Односи се на једну релацију Свака релација мора да има тачно одређен домен један од општих услова интегритета Одређује се условом кључа Услов кључа одређује минималан подскуп атрибута релације који представља јединствени идентификатор торке релације Подскуп X атрибута А i1,...,a ink релације R је кључ (или кључ кандидат) релације R акко су испуњени следећи услови: X функционално одређује све атрибуте релације R и ниједан прави подскуп од X нема претходно својство. [Р371] Пројектовање база података Саша Малков 2018/19 час 2 44 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 45 Интегритет кључа (2) Интегритет кључа (3) Једна релација може да има више кључева Један од кључева се проглашава за примарни кључ и употребљава за јединствено идентификовање торки релације Подскуп X скупа атрибута релације R представља наткључ ако задовољава само први од услова кључа: X функционално одређује све атрибуте релације R Свака релација мора да има примарни кључ један од општих услова интегритета у пракси већина имплементација омогућава постојање релација без примарног кључа, али уз умањену функционалност Торке релације се по правилу реферишу помоћу примарног кључа иако може да се користи и било који други кључ препоручује се због ефикасности [Р371] Пројектовање база података Саша Малков 2018/19 час 2 46 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 47 12
Интегритет јединствености Интегритет јединствености (2) Назива се и интегритет ентитета Примарни кључ не сме да садржи недефинисане вредности, нити две торке једне релације смеју имати исте вредности примарних кључева један од општих услова интегритета недоследних имплементација У доследним релационим моделима интегритет јединствености = интегритет кључа они не обухватају недефинисане вредности јединственост вредности примарног кључа је имплицирана јединственошћу торки у релацији У пракси често: интегритет јединствености је јачи од интегритета кључа зато што постоји подршка за недефинисане вредности могу да постоје две идентичне торке у релацији Поред примарног кључа, могу да се експлицитно декларишу и јединствени кључеви, који су по свему исти као примарни кључеви, али није уобичајено да се користе при реферисању Основна намена је имплементација додатних услова јединствености торки [Р371] Пројектовање база података Саша Малков 2018/19 час 2 48 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 49 Референцијални интегритет Референцијални интегритет Референцијални интегритет представља услове о међусобним односима које морају да задовољавају торке двеју релација: не сме се обрисати торка на коју се односи нека торка неке релације у бази података, нити се сме тако изменити да референца постане неисправна не сме се додати торка са неисправном референцом (таквом да не постоји торка на коју се односи) У пракси се остварује путем интегритета страног кључа У случају недоследних имплементација, које подржавају недефинисане вредности, услови референцијалног интегритета су измењени: не сме се обрисати торка на коју се односи нека торка неке релације у бази података, нити се сме тако изменити да референца постане неисправна не сме се додати торка са неисправном референцом (таквом да не постоји торка на коју се односи) референца која садржи недефинисане вредности је исправна (и не реферише ништа) акко је у потпуности недефинисана (т.ј. сви њени атрибути су недефинисани) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 50 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 51 13
Интегритет страног кључа Интегритет страног кључа (2) Скуп FK атрибута релације R је њен страни кључ који се односи на базну релацију B акко важе следећи услови: релација B има примарни кључ PK домен кључа FK је идентичан домену кључа PK свака вредност кључа FK у торкама релације R је идентична кључу PK бар једне торке релације B (интегритет кључа имплицира јединственост) За релацију R се каже да је зависна од базне релације B Базна релација B се назива и родитељском релацијом У случају недоследних имплементација, које подржавају недефинисане вредности, страни кључ мора да испуњава измењен скуп услова: релација B има примарни кључ PK домен кључа FK је идентичан домену кључа PK за сваку вредност кључа FK у торкама релације R важи да или све вредности атрибута имају недефинисану вредност, или ниједна вредност атрибута није недефинисана; свака вредност кључа FK у торкама релације R је или у потпуности недефинисана или је идентична кључу PK бар једне торке релације B [Р371] Пројектовање база података Саша Малков 2018/19 час 2 52 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 53 Интегритет страног кључа (3) Интегритет страног кључа (4) Поштовање интегритета страног кључа при мењању садржаја базе података се одређује правилима ажурирања која могу да буду: правила брисања (бира се тачно једно) правила ажурирања (бира се тачно једно) Правила брисања (бира се тачно једно): Ако се покуша брисање торке базне релације B, за коју постоји зависна торка релације R (она чији је страни кључ једнак примарном кључу торке која се покушава обрисати) онда... активна забрана брисања RESTRICT...забрањује се брисање торке из релације B. пасивна забрана брисања NO ACTION слично као активна забрана, али се одлаже провера до самог краја брисања, зато што можда постоји линија каскадних правила која ће обрисати зависну торку каскадно брисање CASCADE...бришу се све одговарајуће зависне торке R. постављање недефинисаних вредности SET NULL...у свим зависним торкама релације R атрибути страног кључа се постављају на недефинисане вредности. постављање подразумеваних вредности SET DEFAULT...у свим зависним торкама релације R атрибути страног кључа се постављају на подразумеване вредности. [Р371] Пројектовање база података Саша Малков 2018/19 час 2 54 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 55 14
Интегритет страног кључа (5) Други услови интегритета Правила ажурирања (бира се тачно једно): Ако се покуша мењање примарног кључа торке релације B, за коју постоји зависна торка релације R (она чији је страни кључ једнак примарном кључу торке која се покушава обрисати) онда... активна забрана мењања RESTRICT...забрањује се мењање торке релације B. пасивна забрана мењања NO ACTION слично као активна забрана, али се одлаже провера до самог краја мењања, зато што можда постоји линија каскадних правила која ће променити зависну торку; каскадно мењање CASCADE...на исти начин се мењају атрибути страног кључа свим зависним торкама релације R. постављање недефинисаних вредности SET NULL...у свим зависним торкама релације R атрибути страног кључа се постављају на недефинисане вредности. постављање подразумеваних вредности SET DEFAULT...у свим зависним торкама релације R атрибути страног кључа се постављају на подразумеване вредности. Поред описаних посебних услова, могу да се одреде и додатни специфични услови интегритета на атрибуту на торки на релацији на бази података [Р371] Пројектовање база података Саша Малков 2018/19 час 2 56 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 57 Додатни услов инт. на атрибуту Додатни услов инт. на атрибуту (2) При дефинисању домена атрибута могу да се пропишу и додатни услови интегритета атрибута локалног карактера, односи се на вредност једног атрибута једне торке услов може да зависи само од вредности атрибута може да се користи за додатно сужавање домена на пример, атрибут мора да има једну од неколико вредности може да се користи за проверу исправности сложених типова података на пример, датум се представља текстом, али се онда проверава да ли текстуални запис представља исправан запис датума Присутно у практично свим имплементацијама Пример: create table... ( attr1 int check ( attr1 in (1,2,3)),...) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 58 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 59 15
Додатни услов инт. на торки Додатни услов инт. на торки (2) При дефинисању релације могу да се пропишу и додатни услови интегритета торке локалног карактера, односи се на вредност једне торке услов може да зависи од вредности свих атрибута торке користи се за проверу исправности сложенијих сагласности атрибута у оквиру једне торке на пример, ако се наводи неки интервал, може да се проверава да ли је почетна вредност интервала мања од крајње вредности интервала Присутно у практично свим имплементацијама Пример: create table... ( attr1..., attr2..., constraint check (attr1 < attr2 )...) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 60 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 61 Додатни услов инт. на релацији Додатни услов инт. на релацији (2) При дефинисању релације могу да се пропишу и додатни услови интегритета релације глобалног карактера, може да се односи на све торке једне релације услов може да зависи од вредности свих атрибута торке користи се за проверу исправности сложенијих сагласности вредности у оквиру једне релације на пример, може да се проверава да ли број торки или сума по неком атрибуту задовољава одређене услове Обично су имплементирани слично као и услови интегритета на торкама Подржавају их само неке напредније имплементације Пример: create table Т1 ( attr1..., attr2..., constraint check ( select sum(attr1*attr2) from T1 < 1000 )...) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 62 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 63 16
Додатни услов инт. на бази података Додатни услов инт. на бази података (2) На нивоу базе података могу да се пропишу и додатни услови интегритета између више релација глобалног карактера, односи се на вредности торки у различитим релацијама користи се за проверу сложенијих услова интегритета на пример, ако садржај једне релације мора да буде у складу са садржајем друге релације, али на начин који превазилази могућности обичног референцијалног интегритета Нису подржани у свим савременим имплементацијама Пример: create assertion asrt_1 check ( select count(*) from T1 < select count(*) from T2 ) (срећу се под називима constraints и assertions) [Р371] Пројектовање база података Саша Малков 2018/19 час 2 64 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 65 Активно одржавање интегритета Окидачи на релацијама Основно средство активног одржавања интегритета су окидачи Окидачи су изворно уведени за аутоматизацију реаговања на промене података у релацијама Извршавају се пре или после наредбе за додавање, мењање или брисање торки Ако на релацији постоји окидач, који се извршава после наредбе додавања, онда ће он бити аутоматски покренут после сваке наредбе додавања торки тој релацији Извршавају се пре или после наредбе за додавање, мењање или брисање торки на једној релацији може да буде више окидача некад се мора реаговати пре или после, а некад је свеједно Пример окидача на релацији: аутоматски одређује основну плату новог службеника на основу нивоа образовања: CREATE OR REPLACE TRIGGER insert_set_salary NO CASCADE BEFORE INSERT ON employee REFERENCING NEW AS N FOR EACH ROW BEGIN SET n.salary = CASE n.edlevel WHEN 18 THEN 50000 WHEN 16 THEN 40000 ELSE 25000 END; END [Р371] Пројектовање база података Саша Малков 2018/19 час 2 66 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 67 17
Окидачи на погледима Окидачи на погледима (2) Савремени СУБП нуде окидаче на погледима Извршавају се уместо наредбе за додавање, мењање или брисање торки из погледа Омогућавају преусмеравање измена на релације на којима почива поглед, али и даље од тога, на сасвим друге релације Пример окидача на погледу: Ако поглед V1 почива на релацијама T1 и T2, окидачем се решава како се мењају табеле кроз поглед CREATE TRIGGER V1_UPDATE INSTEAD OF UPDATE ON V1 REFERENCING NEW AS n OLD AS o FOR EACH ROW MODE DB2SQL UPDATE T1 SET (c1, c2) = (n.c1, n.c2) WHERE c1 = o.c1 AND c2 = o.c2 Окидачи на погледима омогућавају скривање веома сложених операција којима се спољашња схема раздваја од концептуалне, или концептуална од интерне Пример окидача на погледу: имплементира скривено имплицитно енкриптовање лозинки при записивању у базу података: CREATE TRIGGER UPDATE_LOGINS INSTEAD OF UPDATE ON LOGINS REFERENCING OLD AS o NEW AS n FOR EACH ROW MODE DB2SQL UPDATE USERS U SET system = n.system, login = n.login, password = encrypt(n.password) WHERE system = o.system AND login = o.login AND U.user = USER [Р371] Пројектовање база података Саша Малков 2018/19 час 2 68 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 69 Раздвајање нивоа модела Резиме релационог модела Основно средство раздвајања нивоа схема у релационом моделу су погледи На нижем нивоу (интерна или концептуална схема) релације су нормализоване ради стабилности и нередундантности На вишем нивоу (концептуална или спољашња схема) релације могу да буду денормализоване, тј. спајају се ради лакшег постављања упита и приступања подацима Привилегије на погледима могу да се потпуно разликују од привилегија на релацијама Основно ограничење погледа: Погледи над више релација не могу да се ажурирају То значајно ограничава примену погледа у раздвајању нивоа модела Окидачи на погледима потпуно превазилазе то ограничење: Омогућавају потпуну контролу над употребом погледа за раздвајање нивоа модела Употпуњују и заокружују релациони модел Пуна математичка заснованост непротивречан и недвосмислен модел Јединствен и потпун концепт релације релација моделира и ентитете и односе тј. сав садржај базе података Једноставан концепт интегритетног дела модела строга формалност модела омогућава формалност и прецизност интегритетног дела модела Универзалан приступ на свим нивоима исти модел може да се користи на свим нивоима од интерне, преко концептуалне до спољашње схеме технике релационог модела могу да се користе за потпуно раздвајање различитих нивоа схема [Р371] Пројектовање база података Саша Малков 2018/19 час 2 70 [Р371] Пројектовање база података Саша Малков 2018/19 час 2 71 18
Литература за тему Ramakrishnan, Gehrke, Database Management Systems, 2.ed, 2000. Гордана ПавловићЛажетић, Увод у релационе базе података Codd, A relational model of data for large shared data banks, Comm.ACM, 13(6), 1970. Codd, Extending the database relational model to capture more meaning, ACM ToDS, 4(4), 1979. Codd The Relational Model for Database Management Version 2, AddisonWesley Publ. Inc., 1990. Darwen, Date, The Third Manifesto, 1995. IBM, Database Administration Concepts and Configuration Reference, 2012. [Р371] Пројектовање база података Саша Малков 2018/19 час 2 72 19