COMPUTERWORLD
pod kapotou
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:

  • ·prava schΘmatu (obvykle dekompozicφ chybn∞ navr₧enΘho schΘmatu),
  • nßslednß ·prava konceptußlnφho nßvrhu (existuje-li).

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 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.

ZKOUèKY

P╪EDN┴èKA

STUDENT

ZN┴MKA

LφΦenφ

Zφka

1

 

LφΦenφ

Tup²

2

 

LφΦenφ

Nov²

2

 

LφΦenφ

Bφl²

1

 

ScΘnß°e

Nov²

2

 

ScΘnß°e

Vorel

3

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.

ZKOUèKY1

P╪EDN┴èKA,

STUDENT

ScΘnß°e

Nov²

ScΘnß°e

Vorel

LφΦenφ

Zφka

LφΦenφ

Tup²

LφΦenφ

Nov²

LφΦenφ

Bφl²

ZKOUèKY2

P╪EDN┴èKA,

ZN┴MKA

 

LφΦenφ

1

 

LφΦenφ

1

 

ScΘnß°e

3

 

ScΘnß°e

2

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>