A doua formă normală

Download Report

Transcript A doua formă normală

A doua formă normală (FN2)
O relaţie care este în FN1 dar nu este în FN2 poate suferi anomalii la modificare,
ca în următorul exemplu:
Exemplu:
Fie baza de date a unui institut de cercetări care are mai multe filiale şi în care salariaţii sunt plătiţi în
funcţie de numărul de ore lucrate în cadrul unui proiect de cercetare.dintre entităţile care apar într-o astfel
de bază de date enumerăm:
Filiale={CodFil, NumeFil, LocFil}
Angajati={CNP, CodFil, NumeAng, Adresa, SalariuPeOra}
Proiecte={CodPr, TitluPr, CodFil, DataPredarii}
AngajatiProiecte={CNP, NumeAng, CodPr, TitluPr, NrOre, DataPredarii} cu instantele de mai jos:
Observaţie!
FN2 se referă numai la relaţii a căror cheie primară este formată din mai multe
atribute, deoarece se bazează pe conceptul de dependenţă funcţională
completă.
Definiţie:
Dependenţa funcţională completă
Fie a1 şi a2 două atribute ale entităţii E; spunem ca a2 este complet dependent
funcţional de a1 dacă şi numai dacă a2 este dependent funcţional de a1 dar nu
este dependent funcţional de nici o submulţime proprie a lui a1.
Definiţie: A doua formă normală
O relaţie este în FN2 dacă şi numai dacă:
1. Este deja în FN1
2. Oricare dintre atributele sale care nu fac parte din cheia primară este complet
dependent funcţional de cheia primară
Aducerea unei relaţii la FN2
Fie e o entitate aflată în FN1; aducerea ei la FN2 necesită:
1. Identificarea tuturor dependenţelor funcţionale dintre atributele entităţii
2. Descompunerea entităţii E în entităţi noi astfel:
 Fiecare dependenţă funcţională completă defineşte o nouă entitate
 Din fiecare dependenţă funcţională parţială se elimină acea parte a cheii
primare care este răspunzătoare de incompletitudinea dependenţei şi apoi
se defineşte noua relaţie
3. Stabilirea relaţiilor dintre noile entităţi (în scopul recuperării informaţiilor de
legătură, pierdute eventual prin înlocuirea entităţii iniţiale cu entităţile
normalizate)
A treia formă normală (FN3)
O relaţie care este în FN2 dar nu este în FN3 poate suferi anomalii la modificare, ca
în exemplul următor:
Fie baza de date a institutului de cercetări descrisă mai devereme. Presupunem că
am introdus şi entitatea AngajatiFiliale={CNP, NumeAng, Adresa, Oras, CodFil,
NumeFil, LocFil} cu instanţele de mai jos
Observaţie! FN3 se bazează pe conceptul de dependenţe funcţionale tranzitive.
Definiţie: Dependenţe funcţionale tranzitive
Fie a1, a2 şi a3 trei atribute ale unei entităţi E cu proprietatea că:
a1  a2 si a2  a3
a1 nu depinde functional nici de a2 nici de a3
Atunci: a1  a3 (a3 depinde functional de a1 via a2)
Exemplu
Cnp
Nume
Pren
Adresa
CodCl
Locatie
NrBanci
NrTable
1900530123
Savu
Ion
B
IXC
Cam09
15
2
1900924456
Rosu
R
CJ
XA
Cam15
21
3
2900225789
Banu
M
B
XA
Cam15
21
3
2900807246
Rona
C
AR
IXC
Cam09
15
2
1901010357
Mares
D
DJ
XIB
Cam23
18
3
Avem urmatoarele dependente functionale: CNP  CodCl si CodCl  Loc atunci
avem si CNP  Loc via atributul CodCl deoarece atributul CNP nu depinde
functional nici de CodCl nici de Loc.
Definiţie: A treia formă normală
O relaţie este în FN3 dacă şi numai dacă:
1. Este deja în FN2
2. Niciunul dintre atributele sale care nu fac parte din cheia primară nu este, prin
tranzitivitate, dependent funcţional de cheia primară.
Aducerea unei relaţii la FN3 necesită:
1. Identificarea tuturor dependenţelor tranzitive dintre a tributele entităţii E
2. Descompunerea entităţii E în entităţi noi, astfel:

Atributul a1 împreună cu toate atributele care depind funcţional de el
(inclusiv a2) formează o nouă relaţie

Atributul a2 împreună cu atributul a3 şi cu alte atribute care depind
funcţional de a1 prin tranzitivitate formează o nouă relaţie
3. Definirea atributului a2 drept cheie primară a celei de-a doua entităţi nou
create
4. Stabilirea relaţiilor dintre noile entităţi
Procesul normalizării prin etapele FN1, FN2, FN3
Condiţie de verificat
Soluţie(normalizare)
FN1
Toate atributele entităţii trebuie sa ia o singură
valoare
Fiecare atribut care ia mai multe valori pentru aceeaşi instanţă
se transformă într-o nouă entitate.
Se stabilesc relaţiile necesare între noile entităţi şi entitatea
iniţială modificată.
FN2
Entitatea este în FN1.
Cheia sa primară constă din mai multe atribute.
Toate atributele care nu fac parte din cheia
primară sunt complet dependente funcţional de
cheia primară.
Fiecare parte a cheii primare, împreună cu atributele care
depind funcţional complet de ea formează o nouă entitate.
Se stabilesc relaţiile necesare între noile entităţi care au
înlocuit-o pe cea iniţială.
FN3
Entitatea este în FN2.
Niciun atribut care nu face parte dintr-o cheie
candidat nu este funcţional dependent de un alt
atribut care nu face nici el parte dintr-o cheie
candidat
Se păstrează în entitatea iniţială numai cheia primară şi
atributele care depind funcţional de ea direct (inclusiv atributul
incriminat)
Se crează câte o nouă entitate din fiecare atribut care nu face
parte din cheia primară, împreună cu toate atributele (care nu
fac nici ele parte din cheia primară a entităţii iniţiale) care sunt
dpendente funcţional de acesta.
Se stabilesc relaţiile necesare între noile entităţi şi entitatea
iniţială modificată.
Sursa: Informatică – Manual pentru clasa a XII-a, Editura Corint, Mioara
Gheorghe, Monica Tătărâm, Corina Achinca, Ioana Pestriţu, 2007