|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dekompozice relacφ
Navrhovat relace pomocφ transformace z konceptußlnφho nßvrhu je dnes b∞₧n² technologick² postup navrhovßnφ databßze. V poslednφch pokraΦovßnφch DatabßzovΘ abecedy jsme zmi≥ovali normßlnφ formy relacφ, tj. 3NF, BCNF a 4NF. P°edstavme si nynφ, ₧e mßme ji₧ hotovΘ schΘma relaΦnφ databßze a n∞kdo nßm ulo₧φ zkontrolovat, zdali vÜechny jeho Φßsti jsou v danΘ normßlnφ form∞. Podrobn∞jÜφ anal²za m∙₧e ukßzat ₧e nikoliv, co₧ mß za nßsledek dv∞ akce:
Kdykoli jsme cht∞li dosßhnout 3NF nebo BCNF, museli jsme ale nahradit jedno schΘma n∞kolika jin²mi schΘmaty. Tato nßhrada zachovßvß zatφm pouze jednu vlastnost: je-li A mno₧ina atribut∙ p∙vodnφho schΘmatu relace a Ai, pro i = 1,2,...n, n>1, mno₧ina atribut∙ i-tΘho schΘmatu relace, pak sjednocenφ vÜech Ai je rovno A. Tomuto procesu se °φkß dekompozice schΘmatu relace. Otßzkou je, do jakΘ mφry souvisφ schΘmata zφskanß dekompozicφ s p∙vodnφmi schΘmaty z hlediska jejich sΘmantiky a do jakΘ mφry jsou si "podobnß" data odpovφdajφcφch relacφ p∙vodnφ, resp. novΘ relaΦnφ databßze. Jin²mi slovy °eΦeno, jde o problΘm korektnosti novΘ reprezentace dat. Intuitivnφ p°edstava korektnφ reprezentace vychßzφ ze dvou idejφ: (1) v²slednß schΘmata by m∞la mφt "stejnou" sΘmantiku, (2) v²slednΘ relace by m∞ly obsahovat "stejnß" data, jakß by obsahovala p∙vodnφ databßze. Vlastnost pokrytφ zßvislostφ Zam∞°φme se nejd°φve na bod (1). SΘmantika schΘmatu relace je dßna pomocφ integritnφch omezenφ (IO). Ta jsou na konceptußlnφ ·rovni vyjßd°ena r∙zn²mi zp∙soby, na ·rovni jednoho schΘmatu relace vÜak vystaΦφme pouze z funkΦnφmi zßvislostmi mezi mno₧inami atribut∙. Cφlem tedy bude, aby p∙vodnφ schΘma a schΘmata zφskanß dekompozicφ n∞jak vhodn∞ odrß₧ely stejnΘ funkΦnφ zßvislosti. P°ipome≥me situaci s p°φkladem ADRES┴╪(M╠STO, ULICE, PS╚) a jeho dekompozici do BCNF. SEZNAM_ULIC(ULICE, PS╚), M╠STA(PS╚, M╠STO). Zφskanß schΘmata jsou jist∞ dekompozicφ. V schΘmatu M╠STA lze kontrolovat funkΦnφ zßvislost PS╚-> M╠STO. Bohu₧el, funkΦnφ zßvislost {ULICE, PS╚}-> M╠STO ji₧ nepopisuje danß schΘmata. Levß strana zßvislosti je obsa₧ena v jednom schΘmatu, druhß strana v druhΘm schΘmatu, tj. (pon∞kud zjednoduÜen∞) tato zßvislost ji₧ ve sv∞t∞ vymezenΘm p°φpustn²mi databßzemi pro ob∞ schΘmata nemusφ platit. Pro pln∞jÜφ p°edstavu o problΘmu ukß₧eme jeÜt∞ jeden p°φklad. Vyjd∞me ze schΘmatu EVIDENCE(REÄIS╔R, ATELI╔R, VEDOUC═_A) a zßvislostφ REÄIS╔R -> ATELI╔R, ATELI╔R -> VEDOUC═_A, REÄIS╔R -> VEDOUC═_A. Provedeme-li dekompozici do 3NF UM═ST╠N═(REÄIS╔R, ATELI╔R) STRUKTURA(ATELI╔R, VEDOUC═_) dostaneme se do jinΘ situace. FunkΦnφ zßvislost ATELI╔R -> VEDOUC═_A existuje dßle, proto₧e je odvoditelnß z funkΦnφch zßvislostφ, kterΘ platφ na schΘmatech UM═ST╠N═ a STRUKTURA. Formalizujme nynφ po₧adavek (1). M∞jme relaΦnφ schΘma databßze S(A,F), tj. na A je definovßna mno₧ina funkΦnφch zßvislostφ F) a dekompozici S, danou jako R={Ri(Ai,Fi), 1 £ i £ n, n > 1}. ╪ekneme, ₧e R mß vlastnost pokrytφ zßvislostφ, jestli₧e vÜechny funkΦnφ zßvislosti, kterΘ se dajφ odvodit z F, jsou odvoditelnΘ ze sjednocenφ zßvislostφ Fi a naopak. Zatφm jeÜt∞ nenφ jasnΘ, jak vzniknou Fi. Jde o zßvislosti, kterΘ platφ na Ai, tj. o takovΘ zßvislosti odvoditelnΘ z F (nikoliv pouze ty z F), kterΘ lze "promφtnout" do atribut∙ Ai. Budeme je dßle naz²vat projekce zßvislostφ. Uva₧ujme schΘma relace PL┴N_F(REÄIS╔R, FILM, TYP_F, MAX_D╔LKA) a F: FILM -> TYP_F, TYP_F-> MAX_D╔LKA, Typem filmu se rozumφ nap°φklad dokumentßrnφ, hran², instruktß₧nφ apod. SchΘma PL┴N_F z°ejm∞ nenφ ve 3NF. Provedeme-li dekompozici R1(REÄIS╔R, FILM, MAX_D╔LKA), R2(REÄIS╔R, TYP_F), promφtnou se do R1 p∙vodnφ funkΦnφ zßvislosti nep°φmo, pouze prost°ednictvφm odvozenΘ zßvislosti FILM -> MAX_D╔LKA. DalÜφ zßvislosti v R1, R2 u₧ jsou jen zßvislosti na klφΦi. Ani jedna ze zßvislostφ F se ale do F1 ani do F2 nedostala. Mimochodem, R1 jeÜt∞ nenφ ve 3NF, nebo¥ atribut MAX_D╔LKA je ΦßsteΦn∞ zßvisl² na klφΦi. Dekompozice nemß vlastnost pokrytφ zßvislostφ. Je jasnΘ, ₧e provßd∞t podobnΘ anal²zy na v∞tÜφch p°φkladech je ruΦn∞ nßroΦn∞, odpovφdajφcφ prost°edky v CASE nßstrojφch nejsou, tak₧e v²sledky dekompozice, by¥ nespl≥ujφcφ vlastnost pokrytφ zßvislostφ se p°ijmou za vyhovujφcφ. Bezztrßtovß dekompozice Zam∞°φme se nynφ na formalizaci druhΘho kritΘria korektnφ reprezentace. ProblΘm stejn²ch dat lze vyjßd°it velmi p°irozen∞ pomocφ operace spojenφ. Vyjdeme ze stejn²ch p°edpoklad∙ jako u formulace vlastnosti pokrytφ zßvislostφ. VÜimn∞me si, ₧e dekompozice schΘmatu vlastn∞ znamenß na ·rovni databßze vytvo°it projekce p∙vodnφ relace na atributy odpovφdajφcφ jednotliv²m schΘmat∙m po dekompozici. Pak m∙₧eme po₧adovat, aby dekompozice m∞la vlastnost bezztrßtovΘho spojenφ, kterß °φkß, ₧e pro ka₧dou p°φpustnou relaci S* by m∞lo platit S* = S*[A1]* ... * S*[An] tj. ₧e se S* dß rekonstruovat pomocφ p°irozenΘho spojenφ projekcφ S* na atributy jednotliv²ch relacφ dekompozice. Toto nenφ v∙bec samoz°ejmΘ, jak ukazuje nßsledujφcφ situace vychßzejφcφ z p°φkladu V▌UKA.
Provedeme-li dekompozici ZAPIS(P╪EDN┴èKA, STUDENT) a HODNOCEN═(P╪EDN┴èKA, ZN┴MKA), pak odpovφdajφcφ projekce Z* poskytujφcφ data v tabulkßch ZKOUèKY1 a ZKOUèKY2.
Je hned vid∞t, ₧e v²sledek spojenφ t∞chto relacφ bude obsahovat vφce °ßdk∙ ne₧ p∙vodnφ relace ZKOUèKY*. Bude nap°. obsahovat n-tici (ScΘnß°e, Nov², 3). Spojenφ tedy nenφ bezztrßtovΘ. P°esto₧e obdr₧φme vφce °ßdk∙, informace je mΘn∞, nebo¥ nevφme, co platφ a co ne. Aby platila rovnost z definice bezztrßtovosti, je t°eba provΘst dekompozici dostateΦn∞ smyslupln∞. P╪EDN┴èKA a ZN┴MKA v tabulce ZKOUèKY2 bez dalÜφch atribut∙ nemß dob°e definovanou sΘmantiku. Jist∞ je ka₧dΘmu jasnΘ, ₧e by takovou ôbotuö p°i dekompozici schΘmatu ZKOUèKA neud∞lal. Ve trochu slo₧it∞jÜφ realit∞, Φi ne zcela jasnΘ sΘmantice toho, co vlastn∞ projektujeme, vÜak m∙₧e jφt b∞₧nou situaci. Dekompozici, kterß mß po₧adovanou vlastnost, lze provΘst podle nßsledujφcφho v²znamnΘho tvrzenφ. Tvrzenφ o bezztrßtovΘ dekompozici M∞jme schΘma R(A,B,C), kde A,B,C jsou disjunktnφ mno₧iny atribut∙, a funkΦnφ zßvislost B -> C. Rozlo₧φme-li R na schΘmata R1(B,C) a R2(A,B), je takto provedenß dekompozice bezztrßtovß. Naopak, je-li dekompozice R1(B,C) a R2(A,B) bezztrßtovß, musφ platit bu∩ B-> C nebo B-> A. Poznßmka: Z tvrzenφ vypl²vß, ₧e platφ-li B -> C, dekompozice R1(B,C) a R2(C,A) nenφ bezztrßtovß. (Neplatφ toti₧ ani C-> B ani C-> A.) Poznßmka: Dekompozice m∙₧e mφt vlastnost bezztrßtovΘho spojenφ, nemusφ vÜak mφt vlastnost pokrytφ zßvislostφ. Takovou dekompozici obsahuje p°φklad ADRES┴╪, kterou lze chßpat tak, ₧e byla provedena podle zßvislostφ PS╚-> M╠STO. Dekompozice, kterß mß vlastnost pokrytφ zßvislostφ, zase nemusφ b²t bezztrßtovß. To lze jednoduÜe vid∞t z p°φkladu schΘmatu {R(A,B,C,D), F: A -> B, C -> D}, kde dekompozice je dßna jako R1(C,D) a R2(A,B). Dekompozice, kterß je bezztrßtovß, se dß systematicky provßd∞t i podle multizßvislosti. Ve tvrzenφ o bezztrßtovΘ dekompozici staΦφ nahradit -> znakem -> >. JakΘ z t∞chto ·vah mohou plynout zßv∞ry pro projektanta databßze? Vid∞li jsme, ₧e pokr²vßnφ zßvislostmi lze dosßhnout obtφ₧n∞. Co vÜak je reßlnΘ a mohlo by b²t jednφm z cφl∙ nßvrhu, je bezztrßtovß dekompozice. Proto₧e dekomponujeme proto, aby v²sledkem byla schΘmata alespo≥ ve 3NF, sna₧φme se separovat zßvislost od klφΦe (klφΦ∙) schΘmatu. Pou₧itφ v²Üe uvedenΘho tvrzenφ je p°φmoΦarΘ a mßme zßruku, ₧e dekompozice je do jistΘ mφry korektnφ. Nenechme se zm²lit p°edstavou, ₧e ôselsk²m rozumemö se vÜe vy°eÜφ. Sv∞t m∙₧e b²t slo₧it² a hlavn∞ neznßm². Dekompozice je vlastn∞ o tom, jak rozlo₧it data do smyslupln²ch tabulek. A to jde v∞tÜinou mnoha zp∙soby. Jen n∞kterΘ z nich vÜak jsou sprßvnΘ, tj. spl≥ujφ jistß kritΘria korektnosti. <seznam dφl∙ serißlu> <COMPUTERWORLD> |