|
| ||||||||||||||||||||||||||||
4. normßlnφ forma
Ji₧ lΘta jsem neslyÜel mezi projektanty databßzφ o 4NF relacφ. A₧ nedßvno jsem se stal aktΘrem konzultace s profesionßlem, na kterΘm zadavatel ₧ßdal, aby navr₧enß databßze m∞la relace ve 4NF. Tento po₧adavek, a¥ u₧ byl formulovßn z jak²chkoliv d∙vod∙, se stal motivacφ pro dneÜnφ Databßzovou abecedu. Nejde o to, ₧e je nutnΘ se v praxi 4NF zab²vat (ukß₧eme si, ₧e spφÜe ne), nicmΘn∞ je dobrΘ v∞d∞t, o co vlastn∞ jde, zdali o n∞co nep°ichßzφme, neuva₧ujeme-li tuto vlastnost relaΦnφ databßze ve svΘm nßvrhu. Prvnφ v∞c, kterou je t°eba si uv∞domit, je typ zßvislostφ, na kter²ch je 4NF zalo₧ena. Nejde toti₧ o funkΦnφ zßvislosti, ale o tzv. multizßvislosti. Uva₧ujme schΘma relace R(A). Jsou-li dßny dv∞ mno₧iny atribut∙ C, D z A, pak multizßvislost D na C vychßzφ z intuitivnφ p°edstavy, ₧e jednΘ C-hodnot∞ se p°i°adφ n∞kolik D-hodnot. Tento jev se v praxi vyskytuje b∞₧n∞ a v n∞kter²ch p°φpadech neΦinφ ₧ßdnΘ potφ₧e. Uva₧ujme nejprve tabulku ATELI╔R s atributy JM╔NO_A a REÄIS╔R. Zam∞stnßvß-li ateliΘr vφce re₧isΘr∙, pak z°ejm∞ REÄIS╔R multizßvisφ na JM╔NO_A. Tato multizßvislost je ovÜem trivißlnφ a nevede k ₧ßdn²m problΘm∙m z hlediska provozu tabulky ATELI╔R. P°idejme nynφ do schΘmatu ATELI╔R atribut UM═ST╔N═_A. Tento atribut je ovÜem nezßvisl² na re₧isΘrech, znamenß, ₧e jeden ateliΘr je n∞kde umφst∞n a to dokonce navφce mφstech. Tedy klφΦem takto rozÜφ°enΘho schΘmatu je mno₧ina vÜech atribut∙, schΘma je ve 3NF a dokonce v BCNF. Jednu relaci ATELI╔R* ukazuje tabulka 1.
Tab. 1 Tabulka v BCNF s anomßliemi Ka₧d² vidφ, v Φem je problΘm. Objevuje se zcela nevhodnß redundance, proto₧e v jednΘ tabulce se dßvajφ do souvislosti nesouvisejφcφ fakta, zalo₧enß na dvou multizßvislostech. ProblΘmy s aktualizacφ takovΘ relace jsou z°ejmΘ. Vzhledem k nezßvislosti informacφ o re₧isΘrech a umφst∞nφch ateliΘr∙ je vhodnΘ provΘst dekompozici schΘmatu ATELI╔R do dvou schΘmat: REÄIS╔╪I_A(JM╔NO_A, REÄIS╔R) POLOHA(JM╔NO_A, UM═ST╠N═_A) Data, kterß se umφstφ do t∞chto tabulek se snadno zφskajφ projekcemi na atributy p∙vodnφ tabulky, tj, jako ATELI╔R [ JM╔NO_A, REÄIS╔R] a ATELI╔R[ JM╔NO_A, UM═ST╠N═_A] . Lze si povÜimnout, ₧e spojφme-li ob∞ tabulky p°irozen²m spojenφm (p°es atribut JM╔NO_A), obdr₧φme zase p∙vodnφ tabulku ATELI╔R*. Tato vlastnost je pro multizßvislosti zßsadnφ. Dajφ se dokonce pomocφ spojenφ definovat. Multizßvislost C ->> D v R(A), o kterΘ se zde bavφme, tedy n∞jak zßvisφ na kontextu tvo°en²m zbytkem atribut∙, tj. atributy z A - C - D. Formßln∞ lze multizßvislost definovat takto:
Pro schΘma relace R(A), kde A = { C,D,X} , X = A - C - D, C ->> D je multizßvislost nad A, jestli₧e pro ka₧dou p°φpustnou relaci R* platφ R* = R* [ C,D] * R* [ C,X] . Je-li X prßzdnß mno₧ina, naz²vß se multizßvislost C ->> D trivißlnφ. ╪φkßme, ₧e D multizßvisφ na C. P∙vodnφ definice multizßvislostφ je trochu nep°ehledn∞jÜφ a nebudeme ji zde uvßd∞t. NaznaΦuje, jak jsou mno₧iny hodnot p°i°azenΘ hodnotßm C nezßvislΘ. Prakticky jde o to, ₧e se nap°. pro hodnotu KOLIBA v naÜem p°φkladu musφ v °ßdcφch tabulky prokombinovat vÜechny mo₧nosti mezi re₧isΘry Koliby a umφst∞nφmi Koliby. VÜimn∞me si, ₧e kdy₧ odstranφme z tabulky 1 °ßdek (KOLIBA, Smolφk, Hostiva°), okam₧it∞ p°estane platit multizßvislost v uvedenΘm smyslu. Provedeme-li dekompozici REÄIS╔R_A a POLOHA takto upravenΘ tabulky (nazv∞me ji tabulka 2) a op∞tnΘ spojenφ dφlΦφch relacφ, ve v²sledku se objevφ inkriminovan² °ßdek, co₧ je ve sporu s definicφ (v²sledkem mß b²t tabulka 2). Teoreticky byly multizßvislosti studovßny v 2. polovin∞ 70. let. Byla pro n∞ zkonstruovßna takΘ odvozovacφ pravidla. ┌pln² a korektnφ soubor odvozovacφch pravidel byl dokonce sestaven i pro "smφÜenΘ" zßvislosti, tj. pro zßkladnφ mno₧inu zßvislostφ obsahujφcφ jak funkΦnφ zßvislosti, tak multizßvislosti. Pro praktickou manipulaci p°i nßvrhu relaΦnφho schΘmatu databßze jde ovÜem o dost komplikovanΘ mechanismy. JednoduchΘ je pravidlo replikace, kterΘ °φkß,
Tedy funkΦnφ zßvislosti jsou specißlnφm p°φpadem multizßvislostφ. Z dalÜφch pravidel uvedeme pouze pravidlo o komplementu, kterΘ p°φmo vypl²vß ze symetrie definice multizßvislosti.
Platnost pravidla komplementu potvrzuje i nßÜ p°φklad ATELI╔R. Nynφ ji₧ lze tuÜit, jak asi bude vypadat definice 4NF. SchΘma relace R (A) je ve 4NF, jestli₧e je v BCNF a ka₧dß multizßvislost nad A je trivißlnφ. Podobn∞ jako u 3NF nebo BCNF se ke 4NF p°iblφ₧φme vhodnou dekompozicφ, kterß separuje netrivißlnφ multizßvislosti do r∙zn²ch relacφ. Projektant m∙₧e namφtnout, ₧e objevit multizßvislost podobnΘho typu jako p°edvßd∞l p°φklad s ateliΘrem, je trivißlnφ zßle₧itost. To je pravda. Jakmile ale je ve schΘmatu relace atribut∙ vφce, je ji₧ problΘm znaΦn∞ slo₧it∞jÜφ. P∞kn² Ükolnφ p°φklad (t²kajφcφ se navφc Ükoly) ukazuje Ullman ve svΘ znßmΘ uΦebnici Principles of Database and Knowledge-Base Systems. SchΘma databßze je V▌UKA(P╪EDN┴èKA, U╚ITEL, HODINA, M═STNOST, STUDENT, ZN┴MKA). Tuto tabulku si snadno dovedeme p°edstavit jako pohled v SQL slou₧φcφ ·°ednici na studijnφm odd∞lenφ. Jako databßzisti budeme oprßvn∞n∞ protestovat proti ulo₧enφ takovΘto tabulky jako zßkladnφ relace. Zmi≥me pouze, ₧e jedin²m klφΦem je dvojice atribut∙ { STUDENT, HODINA} . Anal²zou lze zjistit, ₧e zde existuje multizßvislost P╪EDN┴èKA ->> { HODINA, M═STNOST} . Dv∞ma dekompozicemi bychom pak obdr₧eli schΘma relaΦnφ databßze (klφΦe neuvßdφme) R1(P╪EDN┴èKA, HODINA, M═STNOST), R2(P╪EDN┴èKA, U╚ITEL), R1(P╪EDN┴èKA, STUDENT, ZN┴MKA), kterΘ je smysluplnΘ a nelze ho zφskat pouze na zßklad∞ znalosti funkΦnφch zßvislostφ a postupn²mi dekompozicemi do BCNF (Φi 3NF). Existujφ ovÜem i dalÜφ zdroje multizßvislostφ. P°edstavme si E-R model, kde jsou povoleny vφcehodnotovΘ atributy (budeme je oznaΦovat hv∞zdiΦkou). Nech¥ typ entity REÄIS╔R mß krom∞ atribut∙ JM╔NO_R, ADRESA apod. vφcehodnotovΘ atributy JAZYKY (kterΘ ovlßdß) a èKOLY (kterΘ vystudoval). Na obrßzku 1 je vid∞t grafickΘ vyjßd°enφ.
JM╔NO_R REÄIS╔R ADRESA JAZYKY èKOLY Obr. 1 Typ entity s vφcehodnotov²mi atributy Vytvo°it z danΘho E-R diagramu jednu tabulku REÄIS╔R by vedlo k relaci, kterß nebude ve 4NF. Jejφm klφΦem by z°ejm∞ byla mno₧ina atribut∙ { JM╔NO_R, JAZYKY, èKOLY} . Nev²hoda odpovφdajφcφch tabulek je z°ejmß: mnohonßsobnß redundance dat. Nap°. pro jednoho re₧isΘra hovo°φcφho t°emi jazyky se t°emi Ükolami jeho vzd∞lßnφ bychom pot°ebovali 6 °ßdk∙ (se stßle se opakujφcφ jednou adresou). Ne nadarmo se v praxi proto vyskytujφ verze E-R model∙ s jednoduch²mi atributy. V naÜem p°φkladu to znamenß, ₧e JAZYK a èKOLA budou samostatnΘ entity s jednφm atributem. SchΘma relaΦnφ databßze pak bude obsahovat, jak lze oΦekßvat, 3 schΘmata relacφ ve 3NF, nap°. REÄIS╔R, JAZYKOV╔_ZNALOSTI, VZD╠L┴N═. Co z toho plyne? Odstra≥ovßnφ vφcehodnotov²ch atribut∙ na konceptußlnφ ·rovni vede ke 4NF odpovφdajφcφch relacφ. Kdo si ovÜem slo₧it∞jÜφch multizßvislosti p°i nßvrhu na konceptußlnφ ·rovni nevÜimne (viz t°eba p°φklad V▌UKA), mß sm∙lu. Poznamenejme vÜak, ₧e p°irozenΘ vyjßd°enφ reality na obrßzku 1 by bylo v praxi rovn∞₧ akceptovatelnΘ, pouze algoritmus transformace do RMD by musel b²t trochu slo₧it∞jÜφ. Povzbuzenφm nßm m∙₧e b²t fakt, ₧e dneÜnφ objektovΘ databßze umo₧≥ujφ p°φmou reprezentaci takov²chto struktur. Vzhledem k obtφ₧nosti objevovßnφ multizßvislostφ se t∞₧ko dosahuje 4NF. Takovß je vÜak ji₧ profese projektanta databßzφ. Objevovßnφ a chßpßnφ zßkonitostφ v reßlnΘm sv∞t∞ je empirickß zßle₧itost vy₧adujφcφ zkuÜenosti, dobrou intuici, porozum∞nφ. Pak lze teprve nasadit formßlnφ prost°edky, kterΘ odhalφ dalÜφ zßvislosti a pomohou dosp∞t k smysluplnΘmu nßvrhu. èkoda, ₧e souΦasnΘ poΦφtaΦovΘ prost°edky podporujφcφ nßvrh (CASE systΘmy) toho umφ tak mßlo. <seznam dφl∙ serißlu> <COMPUTERWORLD> |