Sunteți pe pagina 1din 4

Descompunerea schemelor de relaie. Jonciuni fr pierderi. Descompuneri cu pstrarea dependenelor funcionale. prof. dr. ing.

Mircea Petrescu
Descompunerea schemelor de relaie Fie R={A1, A2, ..., An}. Denumim descompunere a schemei R nlocuirea acesteia prin colecia ={R1, R2, ..., Rn}, unde RiR, astfel nct R1R2...Rk=R. Submulimile Ri nu trebuie s fie neaprat disjuncte. n general, se consider c descompunerea schemelor de relaie este de dorit atunci cnd trebuie rezolvate probleme ca eliminarea redundanelor. Prudena fa de descompunerea schemelor determinat de faptul c n cazul schemelor descompuse, trebuie calculate mai multe jonciuni dect atunci cnd schemele de relaie nu sunt descompuse. Desigur, descompunerea schemelor are unele avantaje. O problem pe care ne-o punem: dac am descompus o schem de relaie R n , n ce mod vom obine, dac dorim, o relaie r care este valoarea curent a schemei R? ntrebarea se pune, deoarece practic noi realizm relaiile elementare n care se descompune r. Relaia r se poate obine relativ simplu (dei nu ieftin), dac schema R admite o jonciune fr pierderi n raport cu o mulime de dependene funcionale F. Vom spune, n acest caz, c descompunerea este cu jonciune fr pierderi. n aceast situaie, r este dat de: r = R (r ) >< R (r ) >< ... >< R (r ) , unde >< este operatorul
1 2 k

de jonciune natural. Exemplu. Fie R=ABCD, iar F={AC, BCD}. Fie o realizare (valoare curent) a schemei R: A B C D r= a p b m m q c p b a a q Fie rAC=AC(r), rBCD=BCD(r). Avem imediat: A rAC= a m b n continuare: A a a a m m m b b b A C b b b c c c a a a B B p q a p q a p q a C C b c a b c a b c a D
1

C b c a

rBCD=

B p q a

C b c a D m p q m p q m p q

D m p q

rACrBCD=

Rezult, aadar:

rAC >< rBCD=

a m b

p q a

b c a

m p q

Sau: r = rAC >< rBCD = AC (r ) >< BCD (r ) . Deoarece descompunerea cu jonciune fr pierderi prezint aspecte importante pentru teoria relaiilor i aduce dup sine unele avantaje, vom releva unele proprieti ale sale mai n profunzime. Fie =(R1, R2, ...,Rk). Vom nota atunci cu m(r) jonciunea natural a proieciilor realizrii r pe schemele de relaie din , sau: m (r ) = >< R r (deci o aplicaie de tip proiecie-jonciune).
i =1
i

innd seama de aceast notaie, putem exprima condiia privind jonciunea fr pierderi n raport cu mulimea de dependene funcionale F astfel: pentru r care satisface F, avem r=m(r). De asemenea, dac t este un tuplu, iar X o list de atribute, vom defini t[X] ca fiind lista componentelor din tuplu t pentru atributele din X. De exemplu, X(r) poate fi exprimat n forma {t[X] | tr}. O lem important: fie R o schem de relaie, =(R1, R2, ..., Rk) o descompunere a schemei R, r o relaie pentru schema R, iar ri=Ri(r). Atunci avem: a) rm(r); b) dac s=m(r), atunci Ri(s)=ri; c) m(m(r))=m(r). Demonstraie: a) fie tr. Atunci pentru fiecare i, ti=t[Ri]ri. Rezult, prin definiia jonciunii naturale, c tm(r), deoarece t coincide cu ti pe atributele din Ri pentru i. b) Din a) rezult c r s; prin urmare Pentru a arta c
i
Ri i

(s ) r (punctul b) din enunul lemei), vom admite, pentru o valoare i particular, c t (s ) . Atunci, un tuplu t n s, astfel nct t[Ri]=ti. Dar, ntruct ts,
Ri

(r ) (s ) ; sau, cu alte cuvinte,


Ri Ri

ri R (s ) .
i

va exista un tuplu ujrj, pentru fiecare j, astfel nct t[Rj]=uj. ns t[Ri]=ti, aadar tiri i, prin urmare, R (s ) ri . Rezult deci c ri = R (s ) .
i i

c) Dac s=m(r), rezult din b) c


k

R (s ) = ri . Aadar, m (s ) = >< ri = m (r ) . i =1
i

Observm c dac pentru fiecare valoare i, ri este o valoare curent (relaie) a unei scheme Ri, iar

s = >< ri , atunci nu trebuie ndeplinit n mod necesar egalitatea:


i =1

(s ) = r . Cauza pentru care


Ri i

putem face aceast afirmaie: relaia ri poate conine tupluri slab legate. Pentru a ilustra aceast idee, fie schemele R1=AB, R2=BC, precum i relaiile r1={a1b1} i r2={b1c1, b2,c2}. Rezult atunci imediat s={a1b1c1}, iar R (s ) = BC (s ) = {b1c1}, deci R (s ) r2 . Putem afirma c tuplul {b1c1}
2 2

din r2 este slab legat n aceast relaie, ntruct el constituie tuplul {b2c2} i a determina astfel respectarea egalitii
R2

(s ) = r .
2

(s ) fr a antrena dup sine


R2

Memorarea tuplurilor slab legate este un avantaj al descompunerii relaiilor. Pe de alt parte, ns, descompunerea conduce la necesitatea de a efectua mai multe jonciuni pentru a rspunde la mesajele de interogare, dect n cazul relaiilor nedescompuse. Decizia de a descompune relaii 2

trebuie atent analizat. Caz n care descompunerea se recomand pentru eliminarea sau reducerea redundanelor.
Verificarea posibilitii de descompunere cu jonciune fr pierderi

Algoritmul care urmeaz pentru a verifica dac o descompunere are o jonciune fr pierderi n raport cu o mulime de dependene funcionale. Intrarea algoritmului: schema R=A1A2...An, mulimea de dependene F, descompunerea =(R1R2...Rk). Ieirea algoritmului: decizia dac admite o jonciune fr pierderi. Metoda: se construiete o tabel cu n coloane i k linii; coloana j corespunde atributului Aj, linia i schemei Ri. n linia i i coloana j introducem simbolul aj dac AjRi; dac nu, introducem simbolul bij. n continuare, se examineaz fiecare din dependenele XY care F, opernd, de fiecare dat, modificri n tabel. Cnd examinm o dependen XY, cutm liniile care coincid ca valori n toate coloanele ce corespund atributelor din X. Dac sunt gsite dou astfel de linii, se egaleaz simbolurile din aceste linii, n cmpurile corespunztoare atributelor din Y. Dac unul din simboluri este aj, ambele simboluri (care se egaleaz) devin aj; dac simbolurile sunt bij i bji, devin ambele bij sau bji n mod arbitrar. Dac modificnd astfel liniile tabloului, una din linii devine a1...ak, descomunerea este cu jonciune fr pierderi. Exemplu descompunerea schemei de relaie FURNIZORI n FD i FAP. Dependenele sunt FD, FAP; tabelul iniial este: F D A P a2 b13 b14 a1 FD a3 a4 a1 b22 FAP F NUMEF D ADRESAF A ARTICOL P PRET

Deoarece FD iar cele dou linii coincid pe coloana F, vom egala simbolurile pentru D, fcnd (notnd!) b22=a2. Rezult: Deoarece o linie nu conine dect F D A P simboluri a, jonciunea este fr pierderi. a1 a2 b13 b14 a1 a2 a3 a4 Un alt exemplu: R=ABCDE, R1=AD, R2=AB, R3=BE, R4=CDE, R5=AE, iar mulimea dependenelor funcionale: AC, BC, CD, DEC, CEA. Ca exerciiu! Algoritmul de mai sus permite verificarea jonciunii fr pierderi pentru descompuneri n orice numr de subscheme. Pentru descompunerea n dou subscheme, se poate folosi urmtoarea teorem: Teorem. Fie R o schem, =(R1, R2) o descompunere, F o mulime de dependene funcionale. Atunci admite jonciune fr pierderi n raport cu F dac i numai dac: R1R2R1R2 sau R1R2R2R1. Ultimele dou dependene nu trebuie s F, ci este suficient s F+. Exemplu (fr demonstraia teoremei): fie R=ABC i F={AB}. Atunci descompunerea schemei R n AB i AC admite o jonciune fr pierderi, deoarece ABAC=A, ABAC=B, iar AB este valabil (not: reamintim c AB este o notaie pentru AB, etc). Dac ns vom descompune R n subschemele R1=AB i R2=BC, rezult c R1R2=B, iar B nu determin funcional nici R1R2=A, nici R2R1=C. Aadar, descompunerea n AB i BC nu admite o jonciune fr pierderi pentru dependena F={AB}; acest lucru poate fi constatat lund relaia: 3

r={a1b1c1, a2,b2,c2} pentru schema R. Atunci, AB(r)={a1b1, a2b1}, BC(r)={b1c1, b1c2}, iar AB (r ) >< BC (r ) = {a1b1c1 , a1b1c2 , a2b1c1 , a2b1c2 }.
Descompuneri care conserv dependenele

Dac o descompunere admite o jonciune fr pierderi, atunci orice relaie care corespunde schemei descompuse poate fi obinut din proieciile sale; aceasta este o proprietate important. O alt proprietate a descompunerii unei scheme R n ={R1, R2, ..., Rk}: mulimea F a dependenelor funcionale pe R s fie implicat de proiecia lui F pe subschemele Ri. Din punct de vedere formal, proiecia Z(F) a mulimii de dependene F pe mulimea de atribute Z, este mulimea dependenelor XY din F+, astfel nct XYZ (vom observa c nu este necesar ca XYF, ci numai n F+). O descompunere conserv o mulime de dependene F dac reuniunea tuturor dependenelor din R (F ) , i=1, 2, ..., k, implic logic toate dependenele din F.
i

Exemplu. Ne reamintim c n cazul schemei (ORA, STR, COD), pe care o vom prezenta prescurtat prin (O, S, C), aveam dependenele OSC i CO. Observm c descompunerea OSC n subschemele SC i OC admite o jonciune fr pierderi, ntruct (SCOC)(OCSC). n acelai timp, observm c proiecia mulimii F={OSC, CO} pe SC ne d numai dependene funcionale care decurg din reflexibilitate, n timp ce proiecia pe OC conduce la CO i dependene triviale. Se poate verifica faptul c dependena CO i dependenele triviale nu implic OSC, prin urmare descompunerea nu conserv dependenele. Ca exemplu, observm c jonciunea relaiilor din figurile a) i b) este relaia din figura c). S C O C O S C Bd. Nou 120 70500 Bucureti 70500 Bucureti Bd. Nou 120 70500 Bd Nou 120 70501 Bucureti 70501 Bucureti Bd. Nou 120 70501 a) b) c) Relaia din figura a) satisface (toate) dependenele triviale, ca orice relaie. Relaia din figura b) satisface dependenele triviale i dependena CO. Cu toate acestea, relaia obinut prin jonciune, din figura c), nu satisface dependena OSC. Vom mai observa c o descompunere poate avea o jonciune fr pierderi fa de o mulime de dependene F, dar fr a conserva F! n exemplul anterior am subliniat o astfel de situaie. De asemenea, descompunerea poate conserva F, dar s nu admit o jonciune fr pierderi. De exemplu, fie F={AB, CD}, R=ABCD, iar =(AB, CD). Cauza pentru care este de dorit ca o descompunere s conserve F, const n faptul c dependenele din F pot fi vzute ca restricii de integritate pentru relaia R. Dac dependenele proiectate nu implic F, atunci, dac am reprezenta R prin =(R1, ..., Rk) am ajunge, eventual, la concluzia c valoarea curent a subschemelor Ri a reprezentat o relaie R care nu a satisfcut F, chiar dac admitea o jonciune fr pierderi fa de F. De asemenea, oricare actualizare a unei subscheme Ri ar reclama o jonciune pentru a verifica respectarea restriciilor (de integritate).

S-ar putea să vă placă și