Strokovni; razpravi; normalizacija baze podatkov s pomočjo teorije grafov Jože Nemec, Univerza v Mariboru, Visoka kmetijska sola, Vrbanska 30, 62000 Maribor Janez Grad, Univerza v Ljubljani, Ekonomska fakulteta. Kardeljeva ploiCad 17, 61000 Ljubljana POVZETEK Določitev višjih normalnih oblik baz podatkov je pogosto zamuden proces. Delo pri normalizaciji baz si lahko olajšamo, če uporabimo teorijo grafov. V članku so navedene lastnosti grafov baz podatkov in lastnosti matrik, ki te grafe opisujejo. Na osnovi teh lastnosti je prikazan algoritem za določitev baze podatkov brez odvečnih povezav. ABSTRACT DATABASE NORMALIZATION PROCESS BASED ON THE GRAPH THEORY - Determination of the higher order normal forms for database is frequently a time-consuming process. We can make the work easy by applying graph theory. In the paper the necessary characteristics of database graphs and the corresponding matrices which describe the graphs are analyzed. The algorithm for designing database involving no redundancy, based on these characteristics is also presentee/. Ključna gesla: relacijske baze, normalizacija, tretja normalna oblika UVOD Proces izgradnje relacijskih baz poteka praviloma v več fazah. Tako moramo opraviti snemanje stanja v organizaciji, zatem moramo določiti povezave med podatki in na koncu te povezave še normalizirati. Iskanje normalizirani oblik relacijskih baz je zahteven postopek. Idealno je, če lahko ta postopek v čim večji meri avtomatiziramo tako, da lahko pri izgradnji ustreznega modela uporabimo tudi računalnik. V preteklosti so bili že izdelani taki postopki. V (Vetter, Mad-dison, 1981) je prikazana izgradnja baze, kjer na osnovi ugotavljanja odvečnih povezav pridemo do ustreznega modela. Drugi algoritem je prikazan v (Salzberg, 1986), popravek tega algoritma je naveden v (Atkins, 1988) in (Diederich, 1991). Nekoliko modificirano obliko tega algoritma pa najdemo v (Diederich, Milton, 1988). V pričujočem prispevku bomo skusali prikazati metodo, ki nam omogoča določitev optimalne baze podatkov s pomočjo teorije grafov. Atribut Xj na sliki 1 je ključ relacije, Hiko je V relaciji BAR-VA-IZ {IZDELEK, BARVA) ključ izdelek, barva pa je odvisen atribut. V primeru, da sestavlja ključ relacije več atributov, govorimo o sestavljenem ključu (vozliičtt). Primer takega sestavljenega ključa jc relacija MNENJE-ŠT (ŠTUDENT, UČITELJ, MNENJE). Ključ te relacije sestavljata atributa ŠTUDENT in UČITELJ, saj mnenje ni odvisno le od atributa ŠTUDENT ali le od atributa UČITELJ. Zato take relacije ne moremo razstaviti na več elementarnih relacij. Med atributi, ki sestavljajo ključ, in sestavljenim ključem vzpostavimo trivialno vejo, ki ima začetek v elementarnih atributih in konec v sestavljenem ključu. Trivialne veje bomo v grafu prikazali s črtasto črto. Gornjo relacijo lahko zato prikažemo s sliko 2. ------->. GRAFI IN RELACIJE V BAZI PODATKOV V informacijskem sistemu imamo praviloma opravka s podatki vrste entitet, ki so predstavljene s svojimi atributi. Denimo, da prikažemo te atribute kot vozlišča grafa. Povezave med posameznimi atributi pa prikažemo z usmerjenimi vejami. Povezava prikazana na sliki 1 prikazuje povezavo med dvema atributoma. "1 A2 Slika 1: Medsebojno povezana atributa inx?. Slika 2: Sestavljeni ključ rctacijc. Na gornji sliki sestavljata atributa ŠTUDENT (x,) in UČITELJ (Xj) sestavljeni ključ relacije x3. Oba atributa, ki sestavljata sestavljeni ključ, sta z njim povezana s trivialnima vejama. Denimo, da smo pri izgradnji baze podatkov dobili sliko D podatkih v informacijskem sistemu. Ker je ta slika nastala na osnovi potreb različnih služb, imamo opravka z \ \ i - ■■ upnnilnuA NfOR M ATI KA Strokovni; razpravi; množico atributov in različnih povezav med atributi. Na osnovi teh podatkov lahko narišemo graf z množico vozlišč (atributov) in usmerjenih vej (relacij) med njimi. ]'nvzemimo, da so v grafit vse netrivialne in trivialne veje nnše baze. V tem primeru sc da dokazati, da mora graf relacijske baze podatkov zadoščati pogojema: a Nobena krožna pot v grafu ne sme vključevati vozlišča, ki predstavlja sestavljeni ključ neke relacije, a Ce obstaja pot z začetkom v sestavljenem vozlišču (ključu) in koncem v vozlišču xi; tedaj ne sme obstajati pot, ki ima začetek v vozlišču, ki sestavlja sestavljeno vozlišče in konec v vozlišču x,. Dokaz za ti trditvi in za vse nadaljnje trditve v tem poglavju bo lahko bralec našel v članku istih avtorjev, ki bo izšel v reviji Informatica, V primeru pa, da je relacijska baza podatkov v tretji normalni obliki, mora zadoščati še naslednji zahtevi: a Med dvema vozliščema sme obstajati samo ena pol. Upoštevajmo sedaj še pojem povezanosti grafa. Usmerjeni graf je a) krepko povezan, Čc za poljubni vozlišči x, in xjr ki nista istovetni, velja, da obstaja pot, ki vodi i/, vozlišča x, v Xj, in pot, ki vodi iz vozlišča Xj v x,; b) enostransko povezan, če za poljubni vozlišči X; in xj( ki nista istovetni, velja, da obstaja pot, ki ima začetek v enem izmed obeh vozlišč in konec v drugem, lahko pa sta vozlišči povezani s potmi v obe smeri; c) šibko povezan, če med poljubnima vozliščema, ki nista istovetni, obstaja zaporedje poljubno usmerjenih vej; d) nepovezan, če ni šibko povezan. Za grni baze podatkov v tretji normalni obliki velja: ■ Graf baze podatkov v tretji normalni obliki je šibko povezan graf. Oglejmo si sedaj še lastnosti podgrafov baze podatkov. Denimo, da imamo tak podgraf, da so v njem vsa vozlišča krepko povezana. Tak podgraf bomo poslej imenovali krepka komponenta danega grafa. Seveda ima lahko nek graf več krepkih komponent. Dokazati se da, da velja trditev: a Graf baze podatkov v tretji normalni obliki ne sme imeti krepkih komponent, Definirajmo sedaj matriko povezav grafa: Vsakemu grafu baze podatkov lahko priredimo kvadratno matriko povezav vozlišč P ■■ 1 p, | v kateri je a) pjj = p, če obstaja p vej, ki imajo začetek v i-tem in konec v j-tem vozlišču in b) p^ = 0, če ne obstaja nobena veja z začetkom v i-tem in koncem v j-tem vozlišču. Oglejmo si lastnosti matrike P. [/računajmo najprej višje potence matrike i'. Dokazati se da, da ima ta matrika naslednje lastnosti: a Element r,. k-te potence matrike povezav R=Pk je enak številu poti z dolžino k, ki vodijo od i-tega k j-temu vozlišču. ■ Če je element p,, matrike P baze podatkov v tretji normalni obliki enak 1, je element p|t te matrike enakO. Diagonalni elementi p,; matrike P so enaki nič. a V grafu baze podatkov, ki je v tretji normalni obliki, lahko element r1( k-tc potence matrike povezav R=Pk zavzame le vrednosti 0 ali 1 .Če je element rl( matrike Pk enak l,so vsi elementi a;l matrik P, P2, P3,Pkl enaki ti. Tvorimo sedaj matriko D14 za katero velja, da je: a) d^ - 0, če so vsi elementi a(| matrik l1. V7-,.,. Pk enaki nič in b) dk,j = 1, če je vsaj en element atJ matrik P, P2,... Pk od nič različen. Dokazati se da, da veljajo trditvi*: ■ Vedno obstoji tako število m, da veljajo enakosti: a D = D"1 = Dtn4k/ k« 1,2,3..... ■ Matrika D določa t ran/.iti v no zaprtje baze podatkov. V i-ti vrstici so od nič različni le elementi d1|; ki določajo, da obstoji pot z začetkom v i-tem vozlišču in koncem v j-tem vozlišču. a Za elemente matrike D baze podatkov v tretji normalni obliki velja, da je d, =0, če je d,,= 1. V primeru, da baza podatkov vsebuje krožne poti, lahko matriko D razstavimo na vsoto ene simetrične in ene asimetrične matrike tako, da je D = + 1> Elementi dstj in d'1,, teh matrik so določeni takole: d"» = 1 in dajj ~ 0, če je d¡| = d^ = 1 dsjj = Q in d^djj, če je d^d,, S to razstavitvijo matrike D smo dosegli, da je element ds,j matrike Ds enak 1 le, če obstaja pot, ki gre iz i-tega v j-to vozlišče in pot, ki gre iz j-tega v i-to vozlišče. Element d1^ matrike D1' pa je enak 1 le, če obstaja pot, ki vodi iz i-tega v j-to vozlišče in ne obstaja pot, ki vodi iz j-tega v i-to vozlišče. POSTOPEK DOLOČITVE OPTIMALNE ZGRADBE BAZE PODATKOV Skušajmo sedaj vse te lastnosti, ki jih graf baze podatkov mora imeti, i/koristiti /a to, da določimo optimalno zgradbo baze podatkov. To bomo storili tako, da bomo s pomočjo matrik D, Ds, P, P2, P3,..., Pk določili potrebne relacije v ra-lacijski bazi podatkov. Denimo, da smo za dane podatke določili matriko povezav P. V tej matriki naj bodo tako netrivialne kot trivialne veje. S pomočjo te matrike lahko izračunamo zaporedne po- iifvmhi kiINFORM ATIKA Strokovni; razpravi; tence P2, P:',..., Pk matrike P. Istočasno Iahfcotvorimo matrike D1, D2,..., Dk. Računanje višjih potenc matrike P končamo, ko sta matriki Dkin D1"1 enaki. V tem primeru je D = Dk. Glede na obliko teh matrik moramo določiti tudi nadaljnje postopke. Za začetek si oglejmo primer, da lahko pišemo matriko D kot vsoto simetrične in asimetrične matrike. Denimo, da smo ta razcep lahko opravili. V tem primeru je: D = !> + DJ Denimo, da jc v gornji simetrični matriki element d^ od nič različen. Oglejmo si sedaj i-to vrstico te matrike. Razen elementa v j-tem stolpcu so lahko elementi z vrednostjo 1 še v nekaj stolpcih. Vsa vozlišča, ki ustrezajo tem stolpcem, so povezana v obeh smereh. To pa pomeni, da predstavljajo krepko povezan graf.'lak graf pa ni v tretji normalni obliki. Tvorimo sedaj podgraf iz vozlišč, ki ga sestavljajo vsa vozlišča (atributi), katerih elementi so v i-ti vrstici matrike D" od nič različni. V matriki D takega podgrafa so vsi elementi enaki 1. To pomeni, da ima baza podatkov, ki jo predstavlja tak graf, krožne poti, ki jih moramo odstraniti. To storimo tako, da gledamo podgraf, ki ga sestavljajo samo krepko povezana vozlišča. Z odvzemom ene veje prekinemo vsaj eno krožno pot. V primeru, da smo posameznim relacijam določili pogostnost uporabe, lahko to črtanje avtomatiziramo tako, da postopoma črtamo veje z najmanjšo pogostnostjo uporabe. V primeru, da pogostnosti uporabe relacij nismo določili, se moramo odločiti sami, katero vejo moramo vdani fazi postopka črtati, Postopek črtanja vej v krožnih poteh pričnemo tako, da poiščemo tista vozlišča, ki so v matriki P obojestransko povezana, Za ta vozlišča velja, da jc PirPji To pomeni, da obstaja tako veja, ki vodi iz i-tega vozlišča k j-temu vozlišču, kot veja, ki vodi od j-tega vozlišča k i-temu vozlišču. Med tema vejama izberemo tisto, ki ima manjšo pogostnost uporabe, in jo črtamo. Ko srno na ta način prekinili vse veje, ki sestavljajo krožne poti z dvema vozliščema, nadaljujemo Še s črtanjem ostalih odvečnih vej. Po odvzemu vsake posamezne veje analiziramo matriko povezav danega podgrafa na enak način kot analiziramo matriko celotnega grafa. Postopek odvzemanja vej ponavljamo tako dolgo, dokler ne odstranimo vseh možnih krožnih poti. Matrika Ds nam torej omogoča določiti tisti del modela baze podatkov, ki ima odvečne krožne povezave. Posebej pa moramo opozoriti, da v nobenem podgrafu, ki vsebuje krožne poti, ne sme biti sestavljenih vozlišč. Če v nekem podgrafu s krožnimi potmi obstaja kakšno sestavljeno vozlišče, moramo zgradbo sestavljenega ključa ponovno preveriti. Ko smo dosegli, da so prekinjene vse krožne poti, bo matrika D asimetrična. Sedaj moramo preveriti še, ali obstajajo kakšne tranzitivne povezave v našem grafu. Če take povezave obstajajo, graf ni v tretji normalni obliki. Eksisten- co tranzitivnih vej ugotovimo tako, da primerjamo matriko P11 z matriko D^'1. Če je v obeh matrikah element a|p enak 1, tedaj med i-tim in j-tim vozliščem obstajata dve poti. Prav tako so v grafu tranzitivne veje, če je element a,, matrike Pk večji od nič. Z določitvijo tranzitivnih poti (postopek določevanja poti bomo opisali pozneje) lahko na eni izmed poti odstranimo končno vejo. Tudi ta postopek lahko avtomatiziramo, če smo določili, katero vejo (relacijo) na danih poteh bomo najmanjkrat uporabljali. Vendar moramo omeniti, da v tranzitivnih poteh ne sme biti trivialnih vej. Če so v kakšni tranzitivni poti tudi trivialne veje, tedaj sestavljena vozlišča niso korektno določena. V tem primeru moramo korektnost sestavljenih vozlišč preveriti. Ko pri določitvi matrik D nc najdemo več tranzitivnih poti, je postopek določitve povezav v optimalni bazi podatkov končan. Naslednji korak je določitev zgradbe baze na osnovi danih povezav. Najprej črtamo v matriki P vse trivialne veje. Zatem pa tvorimo matrike P, P2, P3,..., P11 in D. Kot smo že ugotovili, mora biti matrika D baze podatkov v tretji normalni obliki asimetrična. Oglejmo si, kakšen pomen ima ta matrika. Denimo, da so vsi elementi j-te vrstice te matrike enaki 0. Tedaj je to vozlišče (atribut) lahko le končno vozlišče vej ali poti v grafu. Iz tega vozlišča ne moremo doseči nobenega drugega vozlišča, Analizirajmoše primer, ko obstajajo v i-ti vrstici in stolpcu od nič različni elementi. Tedaj so v grafu veje, ki imajo konec v i-tem vozlišču in veje, ki imajo začetek v item vozlišču. Podobno lahko ugotovimo, da če so vsi elementi i-tega stolpca enaki nič, to vozlišče (atribut) ni končno vozlišče nobene veje. Iz takega vozlišča lahko dosežemo nekatera druga vozlišča. Denimo, da smo določili vsa vozlišča, ki imajo v pripadajočih stolpcih vse elemente enake nič. Vsa vozlišča s to lastnostjo določajo neko pod množico vozlišč K našega grafa. Vzemimo neko vozlišče x grafa, ki ni element množice K. V tem primeru obstaja v množici K vsaj eno vozlišče xj( ki je povezano z vozliščem Xi z neko vejo ali potjo. Vozlišča, ki niso v množici K, so namreč končna vozlišča vsaj ene veje. Začetno vozlišče veje s koncem v vozlišču je ali vozlišče iz množice Kali pa je vozlišče, ki je istočasno začetno in končno vozlišče vej. V drugem primere postopek iskanja predhodnih vej nadaljujemo tako dolgo, dokler ne pridemo do vozlišča iz množice K. V teoriji grafov imenujemo vozlišča iz množice K bazna vozlišča. Bazna vozlišča v grafu imajo to lastnost, da predstavljajo vhod v graf. Iz množice baznih vozlišč grafa lahko vedno dosežemo vsa druga vozlišča v grafu. V bazi podatkov nam bazna vozlišča grafa predstavljajo primarne ključe relacij. Razen teh nastopajo v bazi še drugi ključi, ki jih moramo določiti s pomočjo matrike P in njenih potenc. Oglejmo si zaporedje matrik P, P2, P3,..., Pk in njihovo povezavo z matriko D. Vzemimo, da smo s pomočjo matrike D določili končna vozlišča poti. Denimo, da je i-to vozlišče uponibi »INFORMATIKA Strokovni; razpravi; (atribut) končna vozlišče neke poti. V tem primeru so vsi elementi v i-ti vrstici enaki nič. Tvorimo sedaj zaporedje, ki ga določajo elementi i-tega stolpca matrik Pk. Glede na število od nič različnih elementov v i-tem stolpcu matrike P*ločimo tri možnosti: a) to število je enako 1, b) to Število je večje od 1, c) to Število je enako 0. Oglejmo si vse tri primere. V prvem primeru obstaja v i-tem stolpcu matrike P natanko en element, katerega vrednost je enaka i. Denimo, daje ta element v j,-t i vrstici. Denimo, da je Se v nekaj naslednjih zaporednih matrikah Pkpoen od nič različen element v i-tem stolpcu. Na ta način dobimo zaporedje indeksov Il'l2' ).V-)n> To je zaporedje končnih vozlišč na poti od jtega vozlišča k i-temu vozlišču. Vozlišča na tej poti si torej sledijo v naslednjem vrstnem redu: jn< jfi-t'in-2' •"»)]'1 Vsaka veja med dvema sosednjima vozliščema na tej poti definira eno relacijo. Vozlišče na začetku veje je ključ te relacije. Postopek končamo, ko je jn-to vozlišče začetno vozlišče neke poti. V tem primeru so v vseh naslednjih matrikah P1, elementi v i-tem stolpcu enaki nič in imamo zato v tem primeru opravka s tretjim primerom. Oglejmo si še drugo možnost. Denimo, da je v i-tem stolpcu matrike Pk en sam element od nič različen. Označimo vozlišče, ki ustreza temu elementu z xk. Nadalje naj bo v item stolpcu matrike Pk+1 m od nič različnih elementov. Označimo sedaj vozlišča, ki ustrezajo tem elementom z: Xkl, X^2, JCjj, xkn, Vsako izmed navedenih vozlišč definira eno pot. Vse te poti potekajo od vozlišča xk do vozlišča x( po istih vejah. Do vozlišča pa pridejo tako, da je vozlišče xk končno vozlišče vej, ki imajo začetek v vozliščih xkj. Postopek nadaljujemo tako dolgo, dokler ne dosežemo vseh začetnih vozlišč poti. Ta začetna vozlišča poti so lahko le glavni ključi. Ce smo odstranili vse trivialne veje, so začetna vozlišča poti tudi sestavljeni ključi. Ob koncu tega postopka dobimo množico poti. Vsaka pot pa nam definira neko zaporedje vozlišč (atributov). Zapišimo vozlišča v posameznih poteh, Na ta način dobimo naslednjo množico zaporedij vozlišč na posameznih poteh: 1. pot: xtigXi_2, ••••XjiII(j 2. pot: *2.1< x2.2' xiy "" x2.m2 3. pot: X3<1,x3 2, x3 v.... x3>m3 k-ta pot:xkJ,xu, xu.....xUlk Prvi člen vsakega zaporedja je začetno vozlišče (glavni ključ ali sestavljeni ključ). Zadnji člen vsakega zaporedja je nek atribut Po dva sosednja člena v isti vrsti definirata eno relacijo v bazi. Ključ te rclacije je tisto vozlišče (atribut), ki je bliže začetku vrstice. Ob tem pripomnimo, da se lahko posamezna vozlišča (atributi) v zgornjih zaporedjih pojavljajo večkrat. Vendar se vsako vozlišče (atribut) lahko v posamezni vrstici pojavi samo enkrat. Sedaj lahko tvorimo končni model relacijske baze v naslednjih korakih: !. Vzemimo vsa različna vozlišča, ki se pojavijo kot prvi člen gornjih zaporedij. 2. Vsakemu vozlišču pripišemo pripadajoča vozlišča (atribute), ki nastopajo kot drugi Člen zaporedja. 3. Zatem v vsakem zaporedju črtamo prvi člen. Prav tako črtamo vsa tista zaporedja, ki jim je po črtanju prvega člena ostal le še en sam člen. 4. Ponavljamo gornje tri korake tako dolgo, dokler ne črtamo vsa vozlišča. Ob tem moramo paziti, da lahko kot ključ nastopa vsako vozlišče (atribut) samo enkrat. Določanje relacij, ki nastopajo v bazi podatkov lahko na ta način v veliki meri poenostavimo, saj nam posamezne korake lahko opravi računalnik. Zlasti je to pomembno tedaj, ko ima naša baza podatkov veliko atributov in veliko povezav med njimi. Tak primer pa srečamo že v vsaki malo obsežnejši organizaciji. V veliki organizaciji ima matrika povezav zelo velike dimenzije, število operacij, kijih moramo opraviti, da dobimo matriko D, je zato zelo veliko. Opišimo še postopke, ki nam to matriko in število operacij zmanjšajo. Za določitev, katera vozlišča smemo odstraniti, uporabimo naslednji postopek. Če je vsota elementov matrike P v i-ti vrstici nič, v i-tem stolpcu pa ena, je to končno vozlišče zadnje veje na neke poti. Istočasno ta veja ni v nobeni drugi poti. Zato lahko i-to vrstico in stolpec črtamo. Na ta način dobimo novo matriko povezav P', Ce je vsota elementov matrike P v j-ti vrstici ena, v j-tem stolpcu pa nič, je to začetno vozlišče prve veje na neke poti. Ti veja ni v nobeni drugi poti. Zato lahko i-to vrstico in stolpec črtamo. Na ta način dobimo novo matriko povezav P". Postopek ponavljamo tako dolgo, dokler ne pridemo do reducirane matrike Pr, v kateri ne moremo črtati nobenega vozlišča več. Pod graf, ki ustreza tej matriki, vsebuje sedaj vse možne veje, ki jih lahko odstranimo. Z reducirano matriko Pr lahko sedaj opravimo postopek odvzemanja vej, ki smo ga opisali na začetku. Ker ima matrika Pr znatno manjše dimenzije kot prvotna matrika P, je seveda število operacij temu primerno manjše. Denimo, da smo sedaj določili, katere veje moramo odstraniti in tako dobili novo reducirano matriko povezav P, ki teh vej ne vsebuje. Kot smo že ugotovili, potrebujemo za določitev posameznih poti višje potence te matrike. V matriki P pa je veliko takih vrstic in stolpcev , ki imajo vse člene enake nič. V teh primerih so tudi vse istoležne vrstice Ufjcmibi tal NFORM ATIKA Strokovni; razpravi; in stolpci v matrikah višjih potenc enaki nič, Ce to pri izračunu upoštevamo, se nam število operacij pri množenju matrik bistveno zmanjša. Prav tako lahko zmanjšamo število matrik, ki jih maramo med obdelavo hraniti v pomnilniku. Ugotovili smo namreč, da sme biti elementa» različen od nič le v oni potenci Pk matrike P. Denimo, da smo v matriki P odstranili tudi vse trivialne veje, če to upoštevamo, lahko tvorimo matriko Z, katere elemente določimo tako, da izenačimo vse njene izven diagonalne elemente z nič, diagonalne elemente pa z 1 Ob izračunu matrike Pk pa postavimo, da je element z]t matrike Z enak k, če je element 1'^enak 1. Na ta način dobimo v stolpcih zaporedja števil, V stolpcih matrike Z, ki ustrezajo posameznim končnim vozliščem poti, števila od 1 do m določajo obratni vrstni red indeksov končnih vozlišč na poti od začetnega vozlišča k izbranemu končnemu vozlišču. Namesto vseh potenc matrike P lahko branimo le matriko Z. ZAKLJUČEK V pričujočem članku smo pokazali, da morajo imeti grafi, ki predstavljajo bazo podatkov v tretji normalni obliki, določene lastnosti. Prav tako morajo tudi matrike, ki te grafe opisujejo, ustrezati nekaterim zahtevam. Lastnosti matrik, ki prikazujejo bazo podatkov, pa lahko uspešno uporabimo pri določitvi algoritma, s katerim lahko konstruiramo bazo podatkov v tretji normalni obliki. Z uvedbo kriterijev, ki nam določijo, katere veje smemo v danem trenutku črtati, lahko postopek določevanja tretje normalne oblike relacijske baze podatkov avtomatiziramo. S tem pa nam odpade zamudno nealgoritmično načrtovanje ustreznega konceptualnega modela baze. LITERATURA: (1) Atkins John, A Note on Minimal Covers, Sit»MO 15 Record, Vol, 17, it. 4, d«scntfoui NFOR MATI KA