Sunteți pe pagina 1din 3

Curs 11

24.05.13

Normalizare cu forme normale


La prezentarea BD relationale se stabilesc entitatile din realitatea binemodelata. Modul in care se pot
stabili entitatile unei BD nu este unic si de aceea este necesar sa existe criterii de evaluare a calitatii
entitatilor a.i. acestea sa asigure integritatea datelor. Procesul de normalizare a fost propus de E.F. Codd
in 1970 urmarind executia asupra unei tabele a unor serii de teste pt a studia apartenenta la forma
normala. Codd a propus 3 forme normale ce au fost preluate apoi de Boyce, dezvoltand forma normala
de Boyce Codd. Normalizarea datelor poate fi privita ca un proces in timpul caruia schemele de tabela
nesatisfacatoare sunt descompuse prin impartirea atributelor in mai multe tabele cu atribute mia putine si
care poseda proprietatile dorite. Obiectivele procesului de normalizare constau in asigurarea faptului ca
tabela poseda o buna arhitectura oferind posibilitatea de modificare prin eliminarea anormalilor ce pot
aparea.
Forma normala ofera proiectantului baze de date:
Un schelet formal pt analiza relatilor bazat pe chei si pe dependenta functionala dintre
atribute
Ofera o serie de teste ce pot elimina tabelele individuale a.i. baza de date relationala poate fi
normalizata in orice grad
Forma normala de ordin 1:
- aceasta forma normala este considerata ca find parte a definitiei formale a unei tabele
- ea nu permite atribute cu mai multe valori, atribute compuse sau cobinatii ale lor
- aceasta stabileste ca domeniul atributelor trebuie sa contina numai valori atomice iar
valoarea oricarui atribut intr-un tuplu este o valoare unica in domeniul atributului
respectiv
- nu permite un set de valori, un tuplu de valori sau combinatia acestora ca valoarea a unui
atribut pt un tuplu
- cu alte cuvinte, forma normala 1 nu permite tabele in tabele sau tabele ca atribute ale
tuplurilor
- valorile admise de forma normala 1 sunt atomice sau indivizibile pt un domeniu
specificat de valori
De ex.: daca presupunem tabela Discipline cu campurile Cod_disciplina, Denumire, An_studiu,
Nume_profesor si avem inregistrarea M01 baze de date, 1, Radu Lixandroiu, Ion Popescu
Aceasta tabela nu este in format totala 1, deoarece valorile introduse pt atributul profesor nu sunt valori
atomice . pt ca tabela sa fie in format 1 este necesar ca inregistrarea datelor sa se faca cu valori atomice
Astfel vom avea:

Cod_disciplina
M01
MO2

Denumire
BD
BD

An_studiu
1
1

Nume_profesor
Radu Lixandroiu
Ion Popescu

Forma normala de ordin 2:


- impune ca fiecare atribut sa fie dependent de fiecare parte a cheii principale
- o tabela indeplineste forma normala 2 daca ea indeplineste forma normala 1 si contine numai atribute
care dau informatii despre cheia tabela
De ex.: daca tabela Discipline ar contine campurile Cod_disciplina, Denumire, Ani, Profesor,
Nume_student, Nota, Data, Data_notei tabela nu ar fi in forma normala nr 2 pt ca campurile
Nume_student, Nota, Data_notei nu apartin de cheia primara. Pt a aduce tabela in forma normala 2 este
necesara crearea a doua tabele suplimentare Studenti si Note. Cele 3 tabele vor avea structura:
Discipline(Cod_disc, Denumire, Ani, Profesori) Studenti (Cod_matricol, Nume_student, Adresa, E-mail)
si Note( Nota, Data, Cod_student, Cod_materii)
Forma normala 3:
- pt a ajunge la forma normala 3 tabela trebuie sa fie deja in prima si a doua formula normala si inclus
toate campurile non- primare sa depinda numai de campuri primare.
De ex.: pt tabela Studenti daca avem ca atribut in tabel Data_nasterii numai este necesar un camp
suplimentar numit Varsta
Forma normala Boyce- Codd:
- este o forma stricta normala de gradul 3, intelegand prin asta ca orice tabela in forma normala Boyce
Codd este si in forma normala 3 vice versa ne find neaparat adevarata.
- cele doua forme normale sunt asemanatoare, ambele punand conditia ca atributul care determina
functional alte atribute sa fie o cheie a tabelei
- forma normala Boyce-Codd etse mai restrictiva decat forma normala decat forma normala 3, deoarece
in forma normala Boyce-Codd se introduce aceasta conditie tutror atributelor atat prime cat si neprime
pe cand in forma normala 3 conditia se impunde doar atributelor neprime
- ATRIBUTELE PRIME: sunt atributele care apartin unei chei, iar celelalte se numesc atribute neprime
- orice tabela formata din doua atribute este in forma normala Boyce- Codd in forma normala 2 si in
forma normala 3
- aceasta tabela compusa din 2 atribute este in forma normala 2 deoarece fie cheia ete formata din
ambele atribute si atunci nu exista atribute neprime, fie cheia este formata dintr-unul dintre atribute, iar
dependenta functionala a celuilalt atribut fata de cheie este totala
- aceasta tabela din doua atribute este in forma normala 3, deoarece este in forma normala 2 si nu poate
exista nici un atribut neprim care sa determine functional un alt atribut neprim pt ca o tabela cu doua
campuri poate avea cel mult un atribut neprim
Aplicatie:
MFIX
Cod_mfix
M1
M2
C1
H3

Denumire
Masina Logan
Masina Fiat
Cladire
Hale
.

DURATE
Tip_mf

Denumire

Durata

Tip_mf
Auto
Auto
Cladire
Hala

Valoare
12.000
10.000
100.000
50.000

Data_pf
05.20.2009
08.24.3010
04.12.2005
03.21.2006

Auto
Cladire
Hala
Barca

..........
.........
..........
..........

60
240
120
48

1.)Care este valoarea lunara a amortizarii prin calcularea metodei liniare?


SELECT Den_valoare/ Duarata FROM MF_durate WHERE M_fix .Tip_mf= Durata.Tip_mf
2.)Care este valoarea totala a amortizarii folosind metod liniara?
SELECT SUM (Valoare/Durata) FROM M_fix.Durate.........
3.) Car sunt mijloacele fixe ce au fost puse in functiune anul acesta ?
SELECT YEAR( Data._pf)=YEAR( Dates)
4.) Cate mijloace fixe avem din fiecare tip?
SELECT COUNT * Tip_mf FROM M_fix GROUP BY Tip_mf
5.) Care este denumirea mijloacelor fixe care se amortizeaza in mai mult de 50 de luni?
SELECT M_fix.den FROm M_fix. Durate WHERE Durata>50 M_fix.tip_mf=durata.tip_mf >50
6.) Care este tipul de mijloc fix ce se gaseste in tabela DURATE si nu se gaseste in MFIX?
SELECT Tip_mf FROM Durate WHERE Tip_mf NOT IN( SELECT Tip_mf FROM MFIX)
7.) Care este amortizarea lunara pt fiecare tip de mijloace fixe?
SELECT Tip_mf, SUM (Valoare/Durate)FROM M_fix, Durate WHERE M_fix.tip_mf= durate.tip_mf
GROUP IN Tip_mf
9.) Care sunt mf cu o valoare <de 11.000 sau > 19.000
SELECT Den FROM Mfix WHERE Valoare<11.000 OR Valoare>19.000
10.) Care este media valorii autoturismelor?
SELECT AVG (Valoare) FROM Mfix WHERE Tip_mf= AUTO
Select SUM( Valoare)/ COUNT(*) FROM Mfix WHERE Tip_mf=AUTO

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