Sunteți pe pagina 1din 11

4

NORMALIZAREA RELAIILOR

4.1 Scopul normalizrii La proiectarea unei BD relaionale, principalul obiectiv n realizarea unui model logic este crearea unei reprezentri corecte a datelor, relaiilor dintre ele i a constrngerilor. Pentru atingerea acestui obiectiv, trebuie identificat un set adecvat de relaii. Normalizarea reprezint o tratare de jos n sus a proiectrii bazelor de date, care ncepe prin examinarea relaiilor dintre atribute. Totui, de multe ori metodologia de proiectare abordeaz o tratare de sus n jos a BD (care ncepe prin identificarea principalelor entiti i relaii), caz n care normalizarea este folosit ca tehnic de validare. Procesul de normalizare este o metod formal, care identific relaiile bazndu-se pe cheile primare ale acestora i pe dependenele funcionale dintre atributele lor. Normalizarea ajut proiectanii de BD, prin prezentarea unei serii de teste care pot fi aplicate relaiilor individuale, pentru a preveni apariia anomaliilor de reactualizare. Unul din principalele scopuri urmrite la proiectarea BD relaionale, este gruparea atributelor n relaii n aa fel nct s se minimizeze redundana datelor i prin aceasta s se reduc spaiul de stocare necesar relaiilor de baz implementate. Problemele asociate redundanei datelor le vom ilustra printr-un exemplu. Exemplu: s analizm urmtoarele alternative de relaii: Personal i Filiala fa de PersonalFiliala (PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF) (PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID) (FilialaID, AdresaF, TelF)

n relaia PersonalFiliala exist date redundante: detaliile referitoare la filial sunt repetate pentru fiecare membru al personalului aflat la filiala respectiv. Relaiile care conin date redundante pot crea probleme, denumite anomalii de reactualizare. Anomaliile de reactualizare se clasific n: anomalii de inserare care pot fi de dou tipuri: anomalii privind identitatea datelor redundante: de ex, pentru inserarea noilor membri ai personalului, trebuie incluse detalii despre filiala la care vor lucra, detalii care trebuie s coincid cu valorile aflate pe celelalte rnduri ale relaiei, altfel provocm o incoeren a BD. anomalii privind necesitatea introducerii de rnduri cu null pentru cheia primar: de ex, pentru a insera o nou filial, care nu are nici un personal, este necesar introducerea de null-uri pentru atributele personalului; dar PersID este cheie primar i nu e permis null-ul (deoarece se violeaz integritatea entitilor) anomalii de tergere: tergerea anumitor nregistrri duce la pierderea unor detalii care nu sunt stocate n alt parte: dac se terge ultimul membru al personalului de la o filial, se pierd detaliile despre filial

anomalii de modificare: necesiatatea modificrii unei date redundante, presupune modificarea ei n toate nregistrrile n care ea apare: dac trebuie modificat unul din atributele unei filiale, este necesar reactualizarea rndurilor corespunztoare pentru toi membrii personalului de la filiala respectiv, altfel BD devine incoerent. Aceast analiz arat c relaiile Personal i Filiala au o structur mai bun dect PersonalFiliala. Procesul de normalizare furnizeaz o tehnic de proiectare a unor relaii mai bine structurate. 4.2 Dependene funcionale Dependenele funcionale sunt concepte fundamentale n procesul de normalizare.

Dependena funcional descrie legturile dintre atributele unei relaii: fie A i B dou atribute ale relaiei R; atributul B este dependent funcional de A (notat AB) dac fiecrei valori a atributului A i corespunde o singur valoare a atributului B. A i B pot fi simple sau compuse. Cnd exist o dependen funcional, ea este specificat ca o constrngere ntre atribute. Atributul din stnga sgeii se numete determinant. Exemplu: s considerm atributele PersID i Salariu din relaia Personal Personal (PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID) deci un membru al personalului are un singur salariu un salariu nu determin un singur membru al personalului

PersID Salariu Salariu PersID

Exemplu: S identificm dependenele funcionale din relaia PersonalFiliala PersonalFiliala PersID NumeP PersID AdresaP PersID Funcie PersID Salariu PersID FilialaID (PersID, NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF) PersID AdresaF PersID TelF FilialaID AdresaF FilialaID TelF AdresaF FilialaID AdresaF TelF TelF FilialaID TelF AdresaF

n aceast relaie sunt 13 dependene funcionale cu PersID, FilialaID, AdresaF i TelF ca determinani. Un format alternativ de afiare a acestor dependene este: PersID NumeP, AdresaP, Funcie, Salariu, FilialaID, AdresaF, TelF FilialaID AdresaF, TelF AdresaF FilialaID, TelF TelF FilialaID, AdresaF Pentru a identifica cheia candidat (sau cheile candidat) din relaia PersonalFiliala, este necesar s recunoatem atributul (sau grupul de atribute) care identific n mod unic fiecare rnd din relaie. Dac o relaie are mai mult de o chei candidat, trebuie identificat cheia primar. Toate atributele care nu fac parte din cheia primar, trebuie s fie dependente funcional de aceast cheie.

Singura cheie candidat pentru relaia PersonalFiliala (deci i cheie primar) este PersID, deoarece toate celelalte atribute ale relaiei sunt dependente funcional de aceasta. Cu toate c atributele FilialaID, AdresaF, TelF sunt determinani n aceast relaie, ele nu constituie chei candidat pentru ea. In orice relaie, atributele sunt dependente funcional de fa de cheile acesteia, deoarece orice cheie are proprietatea c identific n mod unic fiecare tupl, deci determin n mod univoc valorile atributelor tuplei. 4.3 Procesul de normalizare - descompunerea schemelor de relaie Conceptul de dependen funcional este elementul central n procesul de normalizare. Normalizarea este o tehnic formal de analiz a relaiilor, care se bazeaz pe cheile primare i dependenele funcionale. Tehnica presupune o serie de reguli care pot fi utilizate pentru testarea relaiilor individuale, astfel nct o BD poate fi normalizat pn la orice grad. Atunci cnd o cerin nu este ndeplinit, relaia care o deranjeaz trebuie s fie descompus n relaii care satisfac individual cerinele normalizrii. Adeseori, normalizarea este executat sub forma unei serii de pai. Fiecare pas corespunde unei anumite forme normale, care are proprieti cunoscute. Pe msur ce se desfoar normalizarea, relaiile devin n mod progresiv mai restrictive (mai puternice) ca format i mai puin vulnerabile la anomaliile de reactualizare. Pentru modelul relaional, numai prima form normal (1NF) este de importan critic n crearea de relaii adecvate. Toate formele normale urmtoare sunt opionale. Totui, pentru evitarea anomaliilor de reactualizare, se recomand efectuarea normalizrii pn la cel puin forma 3NF. Forma nenormalizat (UNF) este un tabel care conine unul sau mai multe grupuri repetitive. Un grup repetitiv este un atribut sau grup de atribute din cadrul tabelului, care apare cu valori multiple pentru o singur instan a atributului cheie. 4.4 Prima form normal (1NF)

Prima form normal (1NF) este o relaie n care intersecia fiecrui rnd cu fiecare coloan conine o singur valoare i numai una, adic toate atributele relaiei iau valori unice. Vom porni analiza de la un format de tabel nenormalizat. Pentru a-l transforma n prima form normal (1NF), vom identifica i vom elimina grupurile repetitive. Pentru eliminarea grupurilor repetitive dintr-un tabel nenormalizat, exist dou tratri uzuale, sau dou strategii de lucru: 1. Se elimin grupurile repetitive prin introducerea de date adecvate n coloanele goale ale rndurilor cu date repetitive. Cu alte cuvinte, se completeaz spaiile libere prin dublarea datelor nerepetitive, acolo unde este necesar. Aceast tratare este denumit aplatizarea tabelului. Tabelul rezultant, denumit acum relaie, conine valori singulare la intersecia fiecrui rnd cu fiecare coloan. n cadrul acestei tratri se introduce o redundan n relaia rezultant, redundan ce va trebui ulterior eliminat n procesul de normalizare. 2. Se nominalizeaz un atribut (sau un grup de atribute) ca o cheie a tabelului nenormalizat, dup care se elimin grupurile repetitive prin plasarea datelor care se repet mpreun cu o copie a atributului cheie iniial, ntr-o relaie separat. Se identific apoi cheile primare ale noilor relaii. Dac tabelul nenormalizat conine mai mult de un grup repetitiv, aceast tratare se aplic n mod repetat, pn nu mai rmn

grupuri repetitive. Un set de relaii se afl n prima form normal dac nu conine grupuri repetitive. Ambele tratri sunt corecte, dar a doua produce relaii aflate n cel puin forma 1NF cu redundan mai mic. Exemplu: o agenie imobiliar Pornim analiza de la un formular clasic, cu date despre proprietile nchiriate de un anumit client. Pentru a simplifica exemplul, vom presupune c un client nchiriaz o anumit proprietate o singur dat i nu nchiriaz mai multe proprieti n acelai timp. Detalii Client_nchiriere Numele clientului: Ion Buflea Numrul clientului: 76

Numrul Adresa nceputul Sfritul Chiria Numrul Numele proprietii proprietii nchirierii nchirierii proprietarului proprietarului 4 Rozelor 25 01.iul.94 31.aug.96 350 40 Tina Turner Braov 16 Stejri 19 01.sep.96 01.sep.98 450 93 Vali Vijelie Braov Detalii Client_nchiriere Numele clientului: Alina Gospodina Numrul clientului: 56

Numrul Adresa nceputul Sfritul Chiria Numrul Numele proprietii proprietii nchirierii nchirierii proprietarului proprietarului 4 Rozelor 25 01.sep.92 10.iun.94 350 40 Tina Turner Braov 36 Erorilor 21 10.oct.94 01.dec.95 375 93 Vali Vijelie Braov 16 Stejri 19 01.ian.96 10.aug.96 450 93 Vali Vijelie Braov Datele referitoare la proprietile nchiriate de cei doi clieni le transferm din formularele Detalii Client_nchiriere n urmtorul format de tabel: Tabelul Clientnchiriere Nr Nume Client Client 76 Ion Buflea Nr Adresa nceput Sfrit Chiria Nr Nume Proprietate Proprietate nchir nchir Proprietar Proprietar 4 Rozelor 25 01.iul.94 31.aug.96 350 40 Tina Turner Braov 16 Stejri 19 01.sep.96 01.sep.98 450 93 Vali Vijelie Braov 4 Rozelor 25 01.sep.92 10.iun.94 350 40 Tina Turner Braov

56

Alina Gospodina

36 16

Erorilor 21 10.oct.94 01.dec.95 Braov Stejri 19 01.ian.96 10.aug.96 Braov

375 450

93 93

Vali Vijelie Vali Vijelie

Acesta este un exemplu de tabel nenormalizat. Putem identifica atributul cheie ca fiind NrClient. Identificm grupurile repetitive ca fiind detaliile despre proprietatea nchiriat, care se repet pentru fiecare client care a nchiriat proprietatea respectiv. Structura acestui grup repetitiv este: GrupRepetitiv (NrProprietate, AdresaProprietate, nceputnchir, Sfritnchir, Chiria, NrProprietar, NumeProprietar)

Deci exist valori multiple la intersecia dintre anumite rnduri i coloane. De ex, exist dou valori ale atributului NrProprietate (4 i 16), corespunztoare clientului Ion Buflea. Pentru a transforma un tabel nenormalizat n forma 1NF, trebuie s ne asigurm c exist o singur valoare la intersecia dintre fiecare rnd i fiecare coloan. Aceasta se realizeaz prin eliminarea grupului repetitiv. Vom analiza procesul eliminare prin ambele strategii prezentate: 1. strategia aplatizrii tabelului n cazul acestei tratri, se elimin grupul repetitiv prin transformarea unui rnd cu valori multiple ale unui atribut n mai multe rnduri cu valori singulare pentru acel atribut (de fapt, prin introducerea datelor adecvate pe fiecare rnd). Relaia rezultat, Clientnchiriere, se afl deja n prima form normal. Identificm cheile candidat ale relaiei Clientnchiriere ca fiind cheile compuse (NrClient, NrProprietate), (NrClient, nceputnchir) i (NrProprietate, nceputnchir). Selectm drept cheie primar atributele (NrClient, NrProprietate) i pentru claritate, le grupm n stnga relaiei. Relaia Clientnchiriere Nr Nr Nume Client Proprietate Client 76 76 56 56 56 4 16 4 36 16 Adresa nceput Proprieta nchir te Ion Buflea Rozelor 01.iul.94 25 Braov Ion Buflea Stejri 01.sep.96 19 Braov Alina Rozelor 01.sep.92 Gospodina 25 Braov Alina Erorilor 10.oct.94 Gospodina 21 Braov Alina Stejri 01.ian.96 Gospodina 19 Braov Sfrit nchir 31.aug.96 01.sep.98 10.iun.94 01.dec.95 10.aug.96 Chiria Nr Nume Proprietar Proprietar 350 450 350 375 450 40 93 40 93 93 Tina Turner Vali Vijelie Tina Turner Vali Vijelie Vali Vijelie

Relaia Clientnchiriere este definit dup cum urmeaz: Clientnchiriere (NrClient, NrProprietate, NumeClient, AdresaProprietate, nceputnchir, Sfritnchir, Chiria, NrProprietar, NumeProprietar)

Relaia este n forma 1NF deoarece exist o singur valoare la intersecia dintre fiecare coloan i rnd. Relaia conine date care se repet de mai multe ori, deci este expus anomaliilor de reactualizare. Pentru a le elimina va trebui transformat n 2NF. 2. strategia creerii unei relaii separate n cazul celei de-a doua tratri, se elimin grupul repetitiv prin plasarea ntr-o relaie separat a datelor respective mpreun cu o copie a atributului cheie iniial (NrClient). Apoi vom identifica o chei primar pentru noua relaie. Formatele relaiilor 1NF rezultante sunt: Client Propnchir_Proprietar (NrClient, NumeClient) (NrClient, NrProprietate, AdresaProprietate, nceputnchir, Sfritnchir, Chiria, NrProprietar, NumeProprietar)

Relaia Client NrClient NumeClient 76 56 Ion Buflea Alina Gospodina

Relaia Propnchir_Proprietar Nr Client 76 76 56 56 56 Adresa Nr Proprie- Proprietate tate 4 Rozelor 25 Braov 16 Stejri 19 Braov 4 Rozelor 25 Braov 36 Erorilor 21 Braov 16 Stejri 19 Braov nceput nchir 01.iul.94 01.sep.96 01.sep.92 10.oct.94 01.ian.96 Sfrit nchir 31.aug.96 01.sep.98 10.iun.94 01.dec.95 10.aug.96 Chiria 350 450 350 375 450 Nume Nr Proprie- Proprietar tar 40 Tina Turner 93 40 93 93 Vali Vijelie Tina Turner Vali Vijelie Vali Vijelie

Ambele relaii sunt n forma 1NF, deoarece acum exist o singur valoare la intersecia dintre fiecare coloan i fiecare rnd. Totui, relaia Propnchir_Proprietar conine o oarecare redundan i prin urmare este vulnerabil la anomaliile de rectualizare.

4.5 A doua form normal (2NF) Se bazeaz pe conceptul de dependen funcional total. Dependena funcional total arat c, dac A i B sunt atribute ale unei relaii R, se spune c B este total dependent funcional de A, dac B este dependent funcional de A dar nu i de orice submulime a lui A. O dependen funcional A B este total dac eliminarea oricrui atribut din A are ca rezultat anularea dependenei. O dependen funcional A B este parial dac exist un atribut care poate fi eliminat din A i totui dependena s se menin. De ex, s considerm urmtoarea dependen funcional: NrPersonal, NumePersonal NrFilial Este corect s afirmm c fiecare valoare din (NrPersonal, NumePersonal) este asociat unei singure valori a atributului NrFilial. Dar asta nu e o dependen funcional total, deoarece atributul NrFilial este dependent funcional i de un subset al atributelor (NrPersonal, NumePersonal), i anume NrPersonal. A doua form normal se aplic relaiilor cu chei compuse, adic relaiilor care au cheia primar compus din dou sau mai multe atribute. O relaie a crei cheie primar este compus dintr-un singur atribut se afl automat n cel puin forma 2NF. O relaie care nu se afl n forma 2NF este expus anomaliilor de reactualizare. De ex, s presupunem c trebuie s schimbm chiria proprietii cu nr 4; va trebui s modificm toate nregistrrile (toate rndurile unde apare proprietatea nr 4), altfel BD devine incoerent. A doua form normal (2NF): o relaie este n a doua form normal dac ndeplinete condiiile pentru prima form normal i fiecare atribut care nu este cheie primar este total dependent funcional de cheia primar. Normalizarea relaiilor 1NF la forma 2NF presupune eliminarea dependenelor pariale. Asta se face prin eliminarea din relaie a atributelor parial dependente funcional, i plasarea lor ntr-o nou relaie, mpreun cu o copie a determinantului acestora. Exemplu: S vedem care sunt dependenele funcionale din relaia Clientnchiriere a crei cheie primar const din atributele (NrClient, NrProprietate). 1df NrClient , NrProprietate nceputnchir, Sfritnchir (cheie primar) 2df NrClient NumeClient (dependen parial) 3df NrProprietate AdresaProprietate, Chiria, NrProprietar, NumeProprietar (dependen parial) 4df NrProprietar NumeProprietar (dependen tranzitiv) 5df NrClient , nceputnchir NrProprietate, AdresaProprietate, Sfritnchir, Chiria, NrProprietar, NumeProprietar (cheie candidat) 6df NrProprietate, nceputnchir NrClient, NumeClient, Sfritnchir (cheie candidat) Se testeaz dac relaia Clientnchiriere se afl n 2NF, prin identificarea dependenelor pariale de cheia primar. Observm c:

atributul (NumeClient) este parial dependent de cheia primar el fiind dependent numai de atributul NrClient (vezi 2df) atributele proprietii (AdresaProprietate, Chiria, NrProprietar, NumeProprietar) sunt parial dependente de cheia primar ele fiind dependente numai de atributul NrProprietate (vezi 3df). Pentru a transforma relaia Clientnchiriere n 2NF este necesar crearea de noi relaii, astfel nct atributele care nu sunt chei primare s fie eliminate mpreun cu o copie a prii din cheia primar de care sunt total dependente funcional. n acest fel obinem 3 relaii noi: Relaia Client NrClient NumeClient 76 Ion Buflea 56 Alina Gospodina Relaia nchiriere NrClient NrProprietate nceputnchir Sfritnchir 76 4 01.iul.94 31.aug.96 76 16 01.sep.96 01.sep.98 56 4 01.sep.92 10.iun.94 56 36 10.oct.94 01.dec.95 56 16 01.ian.96 10.aug.96 Relaia ProprietateProprietar NrProprietate AdresaProprietate Chiria NrProprietar NumeProprietar 4 Rozelor 25 Braov 350 40 Tina Turner 16 Stejri 19 Braov 450 93 Vali Vijelie 36 Erorilor 21 Braov 375 93 Vali Vijelie Client (NrClient, NumeClient) nchiriere (NrClient, NrProprietate, nceputnchir, Sfritnchir) ProprietateProprietar(NrProprietate, AdresaProprietate, Chiria, NrProprietar, NumeProprietar) 4.6 A treia form normal (3NF) Cu toate c relaiile 2NF conin mai puin redundan dect cele 1NF, ele tot mai sunt vulnerabile la anomaliile de reactualizare. De exemplu dac dorim reactualizarea numelui unui proprietar, trebuie ca n relaia ProprietateProprietar s modificm toate rndurile n care apare acel nume. Aceast anomalie de reactualizare este cauzat de dependena tranzitiv. Astfel de dependene trebuie eliminate prin trecerea la 3NF. Pentru a descrie aceast trecere, s explicm nti noiunea de dependen tranzitiv. Dependena tranzitiv: dac A, B, C sunt atribute ale relaiei R i exist dependenele A B i B C, se spune c C este dependent tranzitiv de A prin intermediul lui B (cu condiia ca A s nu fie dependent funcional de B sau C). De exemplu, s considerm urmtoarele dependene funcionale:

NrPersonal NrFilial

NrFilial AdresFilial

Atunci dependena funcional NrPersonal AdresFilial are loc prin intermediul atributului NrFilial. Iar condiia cerut, ca NrPersonal s nu fie dependent funcional de NrFilial i AdresFilial este adevrat. A treia form normal (3NF): o relaie este n a treia form normal dac ndeplinete condiiile pentru prima i a doua form normal i n plus, nici un atribut (care nu este cheie primar) nu este dependent tranzitiv de cheia primar. Normalizarea relaiilor de la 2NF la 3NF presupune eliminarea dependenelor tranzitive. Asta se face prin eliminarea din relaie a atributelor dependente tranzitiv, i plasarea lor ntr-o nou relaie, mpreun cu o copie a determinantului acestora. Exemplu: S vedem care sunt dependenele funcionale din relaiile Client, nchiriere i ProprietateProprietar. Relaia Client 2df NrClient NumeClient Relaia nchiriere 1df NrClient , NrProprietate nceputnchir, Sfritnchir 5df1 NrClient , nceputnchir NrProprietate, Sfritnchir 6df1 NrProprietate, nceputnchir NrClient, Sfritnchir Relaia ProprietateProprietar 3df NrProprietate AdresaProprietate, Chiria, NrProprietar, NumeProprietar (dependen parial) 4df NrProprietar NumeProprietar (dependen tranzitiv) Toate atributele relaiilor Client i nchiriere, care nu sunt chei primare, sunt dependente funcional numai de cheile primare. Aceste relaii nu au dependene tranzitorii, deci se afl deja n 3NF. n relaia ProprietateProprietar, toate atributele care nu sunt chei primare, sunt dependente funcional numai de cheia primar, cu excepia atributului NumeProprietar, care este dependent i de NrProprietar (vezi 4df). Acesta este un exemplu de dependen tranzitiv. Pentru a transforma relaia ProprietateProprietar n 3NF, trebuie eliminat aceast dependen tranzitiv prin crearea a 2 relaii noi, Proprietate i Proprietar, de forma: Proprietate Proprietar (NrProprietate, AdresaProprietate, Chiria, NrProprietar) (NrProprietar, NumeProprietar)

Relaia Proprietate NrProprietate AdresaProprietate Chiria NrProprietar 4 Rozelor 25 Braov 350 40 16 Stejri 19 Braov 450 93 36 Erorilor 21 Braov 375 93 Relaia Proprietar NrProprietar NumeProprietar

40 93

Tina Turner Vali Vijelie

Observai c relaia iniial Clientnchiriere a fost transformat prin procesul de normalizare n 4 relaii aflate n forma 3NF. Acestea au forma: Client nchiriere Proprietate Proprietar (NrClient, NumeClient) (NrClient, NrProprietate, nceputnchir, Sfritnchir) (NrProprietate, AdresaProprietate, Chiria, NrProprietar) (NrProprietar, NumeProprietar)

4.7 Forma normal Boyce-Codd (BCNF) Relaiile din baza de date trebuie proiectate astfel nct s nu aib nici dependene pariale, nici dependene tranzitive, deoarece acestea duc la apariia anomaliilor de reactualizare. Formele 2NF i 3NF elimin dependenele pariale i tranzitive de cheia primar, dar nu trateaz situaiile n care rmn astfel de dependene fa de cheile candidat ale unei relaii. Forma normal Boyce-Codd se bazeaz pe dependenele funcionale care iau n consideraie toate cheile candidat dintr-o relaie. Pentru o relaie cu o singur cheie candidat, formele 3NF i BCNF sunt echivalente. Forma normal Boyce-Codd: o relaie se afl n BCNF dac i numai dac fiecare determinant este o cheie candidat. Pentru a testa dac o relaie este n BCNF, se identific toi determinanii i se verific dac sunt chei candidat. Amintim c un determinant este un atribut sau un grup de atribute, de care alte atribute sunt total dependente funcional. Diferena ntre formele 3NF i BCNF const n faptul c, pentru o dependen funcional A B, forma 3NF permite aceast dependen n cadrul unei relaii dac B este atribut cheie primar i A nu este cheie candidat. Prin urmare BCNF este o variant mai strict a 3NF, astfel c orice relaie aflat n BCNF este i n forma 3NF. Reciproca nu e neaprat adevrat. Relaiile Client, nchiriere, Proprietate, Proprietar se afl deja n forma BCNF ntruct fiecare din ele are un singur determinant care este cheie canidat. Aa c pentru prezentarea formei BCNF, vom imagina alt exemplu. Exemplu: RezultateSesiune (NumeProf, Disciplina, NumeStud, Nota)

Cu ipotezele c fiecare profesor pred numai o disciplin, acord numai o not fiecrui student, exist urmtoarele dependene: Disciplina, NumeStud Nota Disciplina, NumeStud NumeProf Aceast relaie se poate descompune n: ProfDisc ProfStudNota (NumeProf, Disciplina) (NumeProf, NumeStud, Nota)

4.8 A patra form normal (4NF) Cu toate c BCNF elimin toate anomaliile datorate dependenelor funcionale, mai exist un tip de dependen, numit dependen multivaloric, ce poate cauza probleme de redundan a datelor. Posibila existen a dependenelor multivalorice n cadrul unei relaii se datoreaz primei forme normale 1NF care nu permite unui atribut dintr-un rnd s aib o mulime de valori. De exemplu, dac ntr-o relaie exist dou atribute multivalorice, trebuie s repetm fiecare valoare a unuia din atribute mpreun cu fiecare valoare a celuilalt, dar efectul este apariia redundanei datelor. Dependena multivaloric: se spune c ntre atributele A, B, C ale unei relaii exist o dependen multivaloric, dac pentru fiecare valoare a lui A exist o mulime de valori ale lui B i o mulime de valori ale lui C, dar mulimile valorilor lui B i C sunt independente unele de altele. Notaia simbolic: A >> B Nu se iau n consideraie cazurile n care B este o submulime a lui A AB=R pentru c acestea nu specific o constrngere asupra relaiei. S considerm Relaia Aproviz: Aproviz (NrMagazie, Furnizor, Produs, Pre)

n aceast relaie dependena multivaloric este: NrMagazie >> Furnizor NrMagazie >> Produs Cu toate c relaia este n BCNF (deoarece exist o singur cheie candidat), ea este prost structurat datorit redundanei datelor, cauzat de prezena dependenei multivalorice. A patra form normal (4NF): o relaie care se afl n BCNF i nu conine dependene multivalorice. Este o form mai strict dect BCNF pentru c mpiedic relaiile s conin dependene multivalorice, prevenind astfel redundana datelor. Normalizarea de la BDNF la 4NF presupune eliminarea dependenelor multivalorice prin plasarea atributului (atributelor) ntr-o nou relaie mpreun cu o copie a determinantului.

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