Sunteți pe pagina 1din 20

Analiza bazei de date

1 Analiza bazei de date...................................................................................................2


1.1 Formele normale ale tabelelor.............................................................................2
1.1.1 Prima form normal...................................................................................2
1.1.2 A doua form normal. Dependena parial...............................................2
1.1.3 A treia form normal. Dependena tranzitiv.............................................3
1.1.4 Exemplu de normalizare..............................................................................5
1.2 Analiza tabelelor..................................................................................................7
1.3 Probleme propuse..............................................................................................18

1
1 Analiza bazei de date
1.1 Formele normale ale tabelelor
Una din cerinele ce trebuie s le indeplineasc o baz de date este aceea de amenine
datele corecte. Aceasta const n a avea date precise i actualizate. Pentru a ndeplini
aceast cerin trebuie minimizat redundana datelor. Redundana apare cnd aceeai
informaie este memorat n mai multe locuri n baza de date. Dac datele redundante nu
sunt actualizate n toate locurile baza de date devine incoerent. Tabelele ce conin date
care se repet n unul sau mai multe cmpuri se impart n mai multe tabele ntre care
exist legturi. Acest proces se numete normalizare.

1.1.1 Prima form normal


Prima etap a procesului de normalizare este aceea de a transforma o tabel n care un
element al unei linii poate conine mai multe valori ntr-o relaie reprezentat printr-o
tabel n care orice element al unei linii poate conine o singur valoare.
Exist dou moduri de a transforma o tabel nenormalizat n prima form normal:
de a aplatiza tabela, fiecare valoare dintr-un grup de repetiie este scris ntr-o linie
a tabelei i se copiaz n celelalte coloane atributele nerepetitive, apoi se identific
o cheie primar,
descompunerea tabelei n dou tabele, una cu atributele nerepetitive, alta cu cele
repetitive i se identific o cheie primar pentru fiecare tabel.

1.1.2 A doua form normal. Dependena parial

1.1.2.1 Dependena parial


Fie o relaie r( R) i fie mulimile de atribute X i Y, X , Y R i XY. Vom spune c
un atribut Y este total dependent de atributul X dac nu exist o submulime proprie W a
lui X astfel nct W Y. Dac exist o submulime proprie W a lui X astfel nct W Y
vom spune c atributul Y este parial dependent de X. Un alt mod de a exprima
dependena parial este urmtorul. Fie A1A2Am B1B2Bn , m > n. Mulimea
atributelor B1B2Bn este parial dependent de mulimea atributelor A1A2Am dac
exist o submulime proprie de atribute Ac Ad ... Ak A1 A2 ... An astfel c AcAdAk
B1B2Bn . Dac o asemenea submulime nu exist, atunci atributele B 1B2Bn sunt total
dependente de atributele A1A2Am . A1A2Am este scrierea prescurtat a relaiei
A1 A2 ... Am .

1.1.2.2 A doua form normal


Fie r( R) o relaie (tabel). Atributele ce constituie cheia primar i cheile alternative se
numesc atribute primare.
O relaie r( R) este n a doua form normal (FN2) dac satiface urmtoarele condiii:
r( R) este n prima form normal,
orice atribut din R care nu este un atribut primar este total dependent de orice
cheie, cheia primar i cheile alternative. Aceast proprietate se mai enun i

2
astfel: nu exist niciun atribut din R care nu este atribut primar care s fie parial
dependent de o cheie oarecare.
Notm cu P mulimea atributelor primare. Atributele ce nu sunt primare sunt date de
mulimea R P.
Pentru a arta modul de transformare al unei relaii n a doua form normal, vom
considera relaia din Figura 1. In aceast figur, atributele primare sunt marcate cu *.

Figura 1. Relaie cu atribute total i parial dependente de cheia primar.


Tabela din Figura 1 are atributele A, B, C, i D i cheia primar este AB (este format din
atributele A i B). Atributul C este total dependent de cheia primar, dar atributul D este
parial dependent de cheia primar (este total dependent de atributul A din cheia primar).
Aceast tabel este nlocuit prin dou tabele ca n Figura 2:
prima tabel cuprinde atributele A, B i C i cheia primar este AB,
a doua tabel cuprinde atributele A i D i are ca cheie primar atributul A.
In ambele tabele orice atribut ce nu este primar este total dependent de cheia primar.

Figura 2. Transformarea relaiei din Figura 1 n a doua form normal.


Procedura de transformare a unei tabele n a doua form normal este urmtoarea. Fie C
mulimea atributelor complet dependente de cheie i D mulimea atributelor parial
dependente de cheie. Cheia mpreun cu atributele din mulimea C vor constitui o nou
tabel. Din atributele mulimii D mpreun cu atribute in cheie se vor construi ca mai sus
noi tabele n care atributele sunt n dependen complet faa de noile chei.

1.1.3 A treia form normal. Dependena tranzitiv

1.1.3.1 Dependena tranzitiv


Fie A, B i C mulimea atributelor tabelei r( R). Presupunem c sunt satisfcute simultan
urmtoarele dependene funcionale: A B, B C i A C. De asemenea
presupunem c nu exist dependenele B A i C A, ca mai jos. Este obigatoriu de a
nu avea dependenele B A i C A pentru ca atributele B i C s nu fie atribute
primare.

3
Figura 3. Dependena tranzitiv.
In acest caz spunem c atributul C este tranzitiv dependent de atributul A. Dependena
tranzitiv este reprezentat grafic n Figura 3. Dependena funcional A C rezult din
relaiile de dependen funcional A B i B C.
Dac aceste dependenele funcionale nu exist, atunci spunem c atributul C nu este
tranzitiv dependent de atributul A.

1.1.3.2 A treia form normal


Fie r( R) o relaie. Ea este n a treia form normal (FN3) dac urmtoarele condiii sunt
satisfcute:
r( R) este n a doua form normal,
niciun atribut neprimar nu este tranzitiv dependent de cheie.
Condiia a doua nu trebuie confundat cu condiiile din figura precedent. In figura
precedent avem condiiile ca un atribut ce nu este primar s fie tranzitiv dependent de
cheia primar A. Definiia celei dea treia forme normale cere ca aceste condiii s nu fie
ndeplinite dac A este cheie primar i C este un atribut care nu este primar.
O alt definiie a celei dea treia forme normale este urmtoarea:
r( R) este n a doua form normal,
nici un atribut care nu este primar nu determin funcional nici un atribut care nu
este primar.
Cele dou definiii (echivalente) ale celei dea treia forme normale cer elininarea
dependenelor tranzitive. Fie relaia de dependen tranzitiv din Figura 4. In aceast
figur, atributele primare sunt marcate cu *.

Figura 4. Relaie de dependen tranzitiv.


Ea se transform n dou tabele ca n Figura 5.

4
Figura 5. Transformarea relaiei din Figura 4 n a treia form normal.

1.1.4 Exemplu de normalizare


Vom considera tabela de date PROIECTE a crei proiectare este cea din Figura 6. tabela
de date este cea din Figura 7.

Figura 6. Definiia tabelei de date PROIECTE.

Figura 7. Tabela de date PROIECTE.


Cheia primar este format din atributele (ID_PRJ, ID_ANG). Toi angajaii unui
departament au acelai salariu.
Atributele NUME_ANG, DPT_ANG i SAL_ORA sunt parial dependente de cheie.
Atributul ORE este complet dependent de cheie. In consecin, aceast relaie va fi
nlocuit cu dou relaii ANGAJATI i ORE_EXECUTATE cu schemele de mai jos:
ORE_EXECUTATE(ID_PRJ, ID_ANG, ORE), cu cheia (ID_PRJ, ID_ANG),
ANGAJATI(ID_ANG, NUME_ANG, DPT_ANG i SAL_ORA), cu cheia
ID_ANG.

ORE_EXECUTATE

ID_PRJ ID_ANG ORE

5
ANGAJATI

ID_ANG NUME_ANG DPT_ANG SAL_ORA

Tabelele sunt cele de mai jos.

ORE_EXECUTATE

ID_PRJ ID_ANG ORE


100 1290 10
100 1295 8
100 1045 12
200 1192 20
200 1351 15
300 1348 20
300 1284 14
300 1067 12
400 1095 15

ANGAJATI

ID_ANG NUME_ANG DPT_ANG SAL_ORA


1290 Popescu Informatica 60
1295 Ionescu Suport 40
1045 Georgescu Documentare 25
1192 Vasilescu Informatica 60
1351 Filipescu Suport 40
1348 Popa Informatica 60
1284 Nicolae Suport 40
1067 Marinescu Documentare 25
1095 Gheorghe Informatica 60

Fie tabela ANGAJATI. Ea nu este n a treia form normal deoarece exist dependena
funcional DPT_ANG SAL_ORA, salariul orar depinde de departamentul n care
salariatul este angajat i nu de cheie. Celelalte condiii sunt ndeplinite, adic nu exist
dependenele funcionale DPT_ANG ID_ANG i SAL_ORA ID_ANG. Pentru a
transforma tabela se vor reine dependenele funcionale ntre atibutele care nu sunt
primare i cheie. Conform figurilor de mai sus vom crea dou noi relaii (tabele):
ANGAJATI(ID_ANG, NUME_ANG, DPT_ANG),
SALARIU(DPT_ANG, SAL_ORA).
Aceste noi tabele sunt artate mai jos.

6
ANGAJATI

ID_ANG NUME_ANG DPT_ANG


1290 Popescu Informatica
1295 Ionescu Suport
1045 Georgescu Documentare
1192 Vasilescu Informatica
1351 Filipescu Suport
1348 Popa Informatica
1284 Nicolae Suport
1067 Marinescu Documentare
1095 Gheorghe Informatica

In a doua tabel atributul DPT_ANG a devenit cheie primar aa cum este cerut de
figura de mai sus.
SALARIU

DPT_ANG SAL_ORA
Informatica 60
Suport 40
Documentare 25

1.2 Analiza tabelelor


Procesul de normalizare poate fi efectuat cu analizorul de tabele al aplicaiei.
Pentru a descompune tabela n mai multe tabele se utilizeaz aplicaia Table Analyzer
care se lanseaz cu clic pe meniul Tools Analyze Table din Figura 8.

Figura 8. Lansarea aplicaiei Table Analyzer.


Primul pas al aplicaiei Table Analyzer este cel din Figura 9. In caseta din Figura 9 se
prezint un exemplu de tabel cu date redundante.

7
Figura 9. Aplicaia Table Analyzer, pasul I.
Figura 10 prezint pasul al doilea al aplicaiei Table Analyzer. Se prezint modul de
rezolvare a problemei. Aplicaia genereaz noi tabele n care informaia este memorat o
singur dat.

8
Figura 10. Aplicaia Table Analyzer, pasul II.
La pasul urmtor din Figura 11 se selecteaz tabela de analizat.

9
Figura 11. Aplicaia Table Analyzer, pasul III, selectarea tabelei de analizat.
La pasul urmtor din Figura 12 se poate decide dac divizarea cmpurilor n tabele se
face de ctre aplicaie sau manual.

10
Figura 12. Aplicaia Table Analyzer, pasul IV.
In Figura 13 se arat cele dou tabele create de aplicaie. Aplicaia genereaz nume
standard pentru tabelele create: Table1, Table2, etc. Se arat legtura ntre tabele. Cheia
extern din tabela Table1 are numele standard Lookup to Table2. Aplicaia a stabilit cheia
primar doar pentru tabela cu numele Table2. Menionm c putem schimba att numele
tabelelor ct i cheile primare.
Numele tabelelor se pot schimba astfel:
1. se selecteaz tabela generat la care vrem s schimbm numele,
2. clic pe butonul Rename Table, , care afiaz o caset de dialog n care
introducem numele dorit.

11
Figura 13. Tabelele create de Table Analyzer i relaia ntre ele.
In final, tabelele create de aplicaia Table Analyzer i legtura ntre ele sunt cele din
Figura 14.

12
Figura 14. Modificarea numelui tabelelor create de Table Analyzer.
In caseta din Figura 15 sunt artate tabelele cu noile nume. Se pot alege sau modifica
acum cheile primare pentru tabelele create.

13
Figura 15. Relaia creat de Table Analyzer.
Se alege cheia primar a tabelei PROIECTE_ANGAJATI. Se selecteaz cele dou
cmpuri, ID_PRJ i ID_ANG ce vor constitui cheia primar a tabelei, i clic pe butonul
Primary Key, . Rezultatul este cel din Figura 16. Pentru tabela SALARIU aplicaia a
ales ca i cheie primar cmpul SAL_ORA. Alegerea cmpului DPT_ANG ca cheie
primar era mai semnificativ.

14
Figura 16. Alegerea cheii primare n tabela PROIECTE_ANGAJATI.
In ultima etap, din Figura 17 se creaz o interogare ce corespunde tabelei originale.

15
Figura 17. Crearea unei interogri a tabelelor create.
Tabela rezultat a interogrii este cea din Figura 18.

Figura 18. Tabela rezultat a interogrii.

16
In final prezentm cele dou tabele generate de Access. Tabela cu date
PROIECTE_ANGAJATI este cea din Figura 19. Cheia extern Lookup to SALARIU
creat de aplicaie ne permite s vedem legtura cu tabela SALARIU.

Figura 19. Tabela PROIECTE_ANGAJATI creat de Table Analyzer.

Figura 20. Legtura ntre tabelele create.


Proiectarea tabelei PROIECTE_ANGAJATI este cea din Figura 21.

Figura 21. Proiectarea tabelei PROIECTE_ANGAJATI.


Vom examina acum tabela PROIECTE_ANGAJATI pentru a identifica dependenele
pariale ntre argumente. Cheia primar a acestei tabele este (ID_PRJ, ID_ANG). Cheia
primar determin funcional orice alt combinaie de atribute ale relaiei (tabelei). In
cazul acestei tabele, atributul ID_ANG determin unic atributele NUME_ANG,
DPT_ANG i SAL_ORA. In consecin, atributele NUME_ANG, DPT_ANG i
SAL_ORA sunt parial dependente de cheie.

17
Tabela cu date SALARIU este artat n Figura 22. la un clic pe butonul se expandeaz
nodul corespunztor i se vd toate nregistrrile din tabela PROIECTE_ANGAJATI ce
au ca cheie extern cheia primar corespunztoare din tabela SALARIU, vezi Figura 23.

Figura 22. tabela SALARIU creat de Table Analyzer.

Figura 23. Legtura ntre tabele.


Proiectarea tabelei SALARIU este cea din Figura 24.

Figura 24. Proiectarea tabelei SALARIU.

1.3 Probleme propuse


1. Fie tabela PROIECTE_2 asemntoare cu tabela PROIECTE utilizat anterior.
Proiectarea tabelei este cea din Figura 25, iar tabela cu date cea din Figura 26.

18
Figura 25. Proiectarea tabelei PROIECTE.

Figura 26. Tabela cu date PROIECTE.


Se cere:
se vor crea cele dou tabele SALARIU i PROIECTE_ANGAJATI cu aplicaia Table
Analyzer, ca mai sus,
n tabela SALARIU se va alege ca i cheie primar cmpul DPT_ANG,
n tabela PROIECTE_ANGAJATI se vor alege ca i cheie primar cmpurile ID_PRJ
i ID_ANG.

2. Fie tabela PRODUSE_FURNIZORI de mai jos

PRODUSE_FURNIZORI

PRODUS FURNIZOR_ID FURNIZOR ADRESA


Mondeo FORD Ford Craiova
Focus FORD Ford Craiova
Laguna RENA Renault Paris
Megane RENA Renault Paris
Aveo CHEV Chevrolet Detroit
Corolla TOYO Toyota Tokio

Se cere:
s se proiecteze tabela,
s se analizeze tabela cu aplicaia Table Analyzer.

19
1.4 Intrebri de control
1. Care este definiia primei forme normale a unei tabele?
2. S se enune definiia celei de a doua forme normale a unei tabele i algoritmul de
trecere la a doua form normal,
3. S se enune definiia celei de a treia forme normale a unei tabele i algoritmul de
trecere la a treia form normal.

20

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