Sunteți pe pagina 1din 54

Dependente functionale si forme

normale. Normalizarea BD
Concepte introductive
Proiectarea schemelor de relatii – proiectarea conceptuala a BD

Descompunerea relatiilor bazat pe tehnici ce utilizeaza analiza


dependentelor functionale

Teoria dependentelor functionale = NORMALIZAREA


descompunere si forme normale
testarea mentinerii dependentelor initiale si a consistentei
datelor

Forme normale ale BD : FN1-3, forma normala BC, FN4-5


Elemente de proiectare conceptuala
Schemele relatiilor – elementele constitutive ale unei BD

Schema = nume, structura relatiei, atributele


(domeniile)

Problema de proiectare :
» alegerea setului de scheme de relatii prin care se
modeleaza optim entitatile

» gruparea optima a atributelor in scheme

» specificarea tipurilor de legaturi intre tipuri de


entitati
Proiectare conceptuala

Criteriu de proiectare a BD relationale : dependenta datelor :


intre atributele relatiilor exista legaturi logice (dependente)
ce influenteaza operatiile curente de exploatare a BD

Tipuri de dependente : functionale ,multivalorice, join

Anumite scheme de relatii introduc redundanta datelor


relativ la anumite atribute, ce pot conduce la anomalii : de
adaugare, stergere, de actualizare

Alegerea unui model conceptual corect pentru o BDR =


determinarea unei descompuneri capabile sa izoleze
dependentele si sa elimine anomaliile
Normalizarea
Proiectarea eronata a unui sistem de BD, poate conduce la :

 Informatie redundanta
 Dificultati in reprezentarea anumitor informatii
 Dificultati in verificarea constrangerilor de integritate

Obiective in proiectarea corecta a BD- gruparea in relatii a


atributelor a.i. sa existe

 Reprezentare corecta a relatiilor dintre atribute

 Minimizarea/evitarea redundantei datelor

 Suport pentru verificarea constrangerilor de integritate


Normalizarea
Descompunerea relatiilor astfel incat acestea sa ajunga intr-o
forma relationala corecta , fara pierdere de informatie si cu
evitarea redundantei

Normalizarea – proces formal de identificare


1. a relatiilor intre scheme,
2. a dependentelor functionale intre atribute ,

prin realizarea de teste/restructurari asupra relatiilor pentru a le


trasforma intr-o forma optima

Teoria normalizarii (Codd 1972) si procesul de proiectare


conceptuala a BD are la baza dependentele
functionale,multivalorice,de cuplare
Anomalii in actualizare
Fie relatia
Furnizor ( nume, adresa , produs , pret)
problema : redondanta pe atributul adresa

anomalii in actualizarea datelor:


 anomalia de adaugare : nu se poate inregistra adresa atat
timp cat nu livreaza un produs
 anomalia de stergere : stergerea tuturor produselor
furnizorului determina pierderea adresei
 anomalia de actualizare : modificarea adresei impune
parcurgerea intregii relatii pentru a identifica si actualiza
aparitiile furnizorului

O structurare in 2 relatii , separa dependentele functionale intre


atribute
FA (nume, adresa)
FP (nume, produs , pret)
Cateva reguli…
Fiecare tupla de relatie trebuie sa reprezinte o entitate sau o
instanta de relatie
 Atributele entitatilor diferite , nu trebuie sa apara in aceeasi
schema de relatie
 Se vor folosi atribute cu rol de chei straine pentru a referi
alte relatii
 Schema creata - trebuie sa fie explicabila relatie cu relatie

Proiectarea corecta schemei conceptuale – nu “sufera” de anomalii.


Relatiile vor fi proiectate cu cat mai putine valori null. Atributele cu
valori null frecvente ,vor fi plasate in relatii separate

Refacerea relatiei initiale (prin cuplare join) se va realiza cu


mentinerea dependentelor si a continutului de informatie, astfel
relatiile sunt proiectate incat sa nu genereze tuple “parazite “
(suplimentare , inexistente in relatia initiala)
Dependente functionale (1)
Definitie: Fie R o schema de relatie , si doua atribute   R si   R,
dependenta functionala (FD)   
(atributul  determina functional atributul  sau  este dependent
functional de  ,unde  este numit determinant) , exista in relatia R
daca si numai daca:

oricarei valori a atributului  ii corespunde o singura valoare


a atributului 

Observatii:
daca    , atunci pentru orice subset  al lui  avem   
daca    si  este atribut simplu atunci  este dependent
functional total de 
daca  este dependent functional total fata de , atunci avem
   pentru orice atribut compus ce contine pe 
Dependente functionale (2)

DF = generalizarea notiunii de cheie , reprezinta


constrangeri aplicate unui set de relatii valide

Dependenta functionala este totala , daca nu exista nici un subset


al atributului  astfel incat    , respectiv este partiala in caz
contrar.

Pornind de la un set de dependente functionale date, se pot


deduce logic o serie de alte dependente functionale
derivate din acestea.
» DF pot fi specificate complex prin asertiuni diverse ce
specifica constrangeri de tipul :
» (t1) = (t2)   (t1) =  (t2) ( proiectii de tuple)

Deducerea sistematica a DF existente intr-o schema


de relatii presupune aplicarea unui set de reguli :
regulile lui Armstrong
Exemple dependente functionale
Dependente functionale triviale sunt dependente satisfacute de
toate instantele relatiei

Ex. Furnizor ( nume, adresa , produs , pret)

Nume -> adresa (DF totala)


(nume, produs) -> pret (DF totala)
(nume, adresa, produs) -> pret (DF partiala, adresa e atribut redondant)
(nume, produs, pret) -> adresa
(nume, produs) -> adresa
nume -> nume, pret-> pret…. (DF triviala , nu contine info suplimentara)

DF totale netriviale sunt :


nume -> adresa fiecare furnizor are o singura adresa

(nume produs) -> pret fiecare furnizor are un pret propriu /produs
Dependente functionale

Dependentele existente in schema de relatie :


reflecta entitatile modelate
refera constrangeri ce se constituie ca informatii suplimentare ce nu pot fi
ingobate direct in schema relatiei, ci se reflecta direct prin valorile
atributelor

Observatii:
1.pentru aceeasi schema de relatie putem avea seturi diferite de
dependente, functie de adoptarea diferitelor ipoteze ce refera semnificatia
atribuita componentelor relatiei.

2. in orice relatie , atributele sunt dependente functional de cheile relatiei –


(cheia identifica unic fiecare tupla a relatiei determinand in mod univoc
valorile tuplei).
Axiomele Armstrong
Fie  ,  ,  submultimi ale multimii de atribute (A1, A2… An)

A1 : reflexivitatea: daca    atunci  -> 


genereaza dependentele triviale

A2: multiplicare : daca  ->  atunci,    ->   

A3: tranzitivitate : daca  ->  si  ->  atunci  -> 


singura regula ce introduce noi dependente

Inchidere tranzitiva : multimea tuturor dependentelor ce se


pot obtine prin aplicarea repetata a setului de reguli
Armstrong asupra unui set initial de dependente functionale
este notata F+

Axiomele lui Armstrong ofera un set complet de reguli ce permit


deducerea tuturor DF si numai a acelor ce sunt logic deductibile
din setul initial de dependente F
Inchiderea tranzitiva
DF sunt utilizate pentru :
1. a testa relatiile , pentru a le verifica “ legalitatea”
2. specificarea constrangerilor asupra setului legal de relatii
Nota : o anumita instanta a unei scheme de relatii poate satisface o anumita DF
chiar daca aceasta nu este valida pentru toate instantele legale de relatii ale
schemei
Axiomele Armstrong – set complet si sigur de reguli de inferenta , ce
permit deducerea tuturor dependentelor functionale => Orice relatie ce
satisface setul dependentelor initiale va satisface si setul dependentelor
din inchiderea tranzitiva ( F+)

Exprimarea formala a inchiderii tranzitive bazat pe axiomele lui Armstrong


F+ = F
repeat
for each DF f in F+
aplica reguli de reflexivitate si multiplicare asupra setului F
adauga rezultatul DF la F+
for each pereche f1 si f2 in F+
if f1 si f2 pot fi combinate prin tranzitivitate
then adauga rezultatul DF la F+
until F+ nu mai comporta modificari
Alte axiome
Exista si reguli aditionale :
Uniunea : daca    , si    , atunci    
Decompozitia : daca     , atunci    si   
Pseudotranzitivitatea : daca    si     atunci    

Exemplu : R = (A, B, C, G, H, I)
F = { A  B, A  C ,CG  H ,CG  I, B  H}

DF din F+ :
A  H (tranzitivitate A  B si B  H)
AG  I ( augmentare AG  CG tranzitivitate CG  I
CG  HI uniune CG  H si CG  I

opusul inchiderii tranzitive - setul minimal de DF ,echivalent lui F ce


nu contine redundante
Acoperire canonica
Setul dependentelor functionale poate avea dependente
functionale redundante , inferabile din altele

Ex.: A  C e redundant in: {A  B, B  C}


Parti ale unei dependente functionale pot fi redundante
{A  B, B  C, A  CD} poate fi simplificat la
{A  B, B  C, A  D}
{A  B, B  C, AC  D} devine
{A  B, B  C, A  D}

Acoperirea canonica F – SETUL MINIMAL de


dependente functionale echivalente lui F, fara
dependente redundante sau parti redundante in
dependente
Exemplu
R = (A, B, C)
F = {A  BC
BC
AB
AB  C}
Combina A  BC si A  B in A  BC (uniune)
Setul devine {A  BC, B  C, AB  C}
A este „extern‟ in AB  C
verifica daca rezultatul stergerii lui A din AB  C este implicat de alte
dependente Da : exista B  C
Setul devine {A  BC, B  C}

C este „extern‟ in relatia A  BC


Verifica daca A  C e implicata logic de A  B si exista alte dependente.
Da: bazat pe tranzitivitate A  B and B  C.

Acoperirea canonica: AB


BC
Recap
Axiome Armstrong :
if   , then    (reflexivitate)
if   , then      (multiplicare)
if    and   , then    (tranzitivitate)
Alte reguli:
If    and   , then     (uniune)
If    , then    and    (decompozitie)
If    and    , then     (pseudotranzitivitate)

Inchidere tranzitiva : multimea tuturor dependentelor ce se pot obtine prin


aplicarea repetata a setului de reguli Armstrong asupra unui set initial de
dependente functionale este notata F+
Fie un set de atribute , se defineste inchiderea setului  aferent relatiilor
functionale F (notat +) , setul atributelor determinate functional de  din F
Acoperirea canonica F – SETUL MINIMAL de dependente functionale
echivalente lui F, fara dependente redundante sau parti redundante in
dependente
Descompunerea schemelor de relatii
Descompunerea relatiilor – solutia de eliminare a dependentelor
functionale din scheme , deci si a anomaliilor de manipulare a
datelor
Descompunerea unei scheme de relatie R ( A1, A2,…An) presupune ca
toate atributele schemei initiale (R) vor aparea in descompunerile (R1,
R2):
R = R1  R2 unde relatiile Ri vor fi proiectii nedisjuncte
ale relatiei corespunzatoare schemei initale

Scop : separarea semantica a continutului de


informatie din relatia initiala , astfel incat
schemele rezultate sa reprezinte un singur tip
de entitate , sau o legatura intre doua entitati

1. dintre aceste descompuneri , doar o parte au proprietatea ca din


relatiile corespunzatoare schemelor descompunerii se poate
reconstitui relatia initiala.
2. reconsituirea relatiei : refera atat continutul de informatie si
regasirea dependentelor functionale din relatia initiala
Descompunerea schemelor de relatii

Descompunerea are proprietatea de cuplare fara pierdere de


informatie daca pentru toate relatiile posibile r ale schemei R, este
adevarata relatia :
r = R1 (r) ⋈ R2 (r)
unde r este rezultatul cuplarii proiectiilor sale dupa schemele
de relatie R1, R2

DEF : (Teorema lui Ullman) Descompunerea relatiei R in R1 si R2 este fara


pierdere de informatie , daca si numai daca cel putin una din
dependentele urmatoare face parte din F+:
R1  R2  R1  (R1 - R2)
R1  R2  R2 (R1 - R2)

Daca intersectia proiectiilor descompunerii este , sau contine o cheie


a uneia din componentele R1 , sau R2 , descompunerea este fara
pierdere de informatie
Conservarea informatiei
Fie relatia R( contract, manager, angajat)
cu dependentele functionale din relatia initiala :
contract-> manager
angajat -> manager
Ipoteze:
un manager poate conduce mai multe contracte,
un angajat poate lucra la mai multe contracte, din cele conduse de managerul sau
fie descompunerea :
R1( contract, manager)
R2 (manager, angajat)
Cuplarea relatiilor dupa atributul manager => angajatii figureaza in toate
contractele conduse de managerii lor, deci si in unele in care nu
lucreaza (tuple suplimentare) , deci descompunerea e cu pierdere de
informatie :
R1  R2=manager
R1 - R2= contract
R2 - R1= angajat
insa dependentele manager-> contract, manager - >angajat nu sunt
verificate
Daca se introduce restrictia ca un manager sa conduca un singur contract:
manager -> contract , descompunerea propusa este fara pierdere de informatie
Conservarea dependentelor
Refera proprietatea unei descompuneri de a asigura deducerea
tuturor dependentelor din relatia initiala , pe baza depedentelor
existente in descompunere

DEF : Daca inchiderea tranzitiva a dependentelor functionale din schemele


de relatie ale descompunerii, include toate dependentele din schema
initiala descompunerea conserva dependentele

Ex.
Telefoane ( judet, oras, prefix)
Exista dependentele : (judet ,oras)- >prefix, prefix->judet

Descompunerea genereaza relatiile OP (oras, prefix), JP( judet, prefix) ce


respecta cuplarea fara pierdere de informatie , deci conserva continutul de
informatie

Dependetele din OP SI JP nu permit deducerea dependentei :


(judet ,oras) ->prefix… => probleme la cuplarea intre relatiile OP si JP

Observatie : proprietatile de conservare a info si dependentelor


sunt INDEPENDENTE, exista scheme de descompunere ce
asigura cate una , sau ambele conservari
Descompunere folosind DF
descompunerea unei scheme de relatii R ce poseda un set de
dependente functionale DF in relatiile R1, R2… Rn are drept
obiective:

descompunerea fara pierderea de informatie

lipsa redundantei

mentinerea dependentelor functionale : fie Fi un set de DF din


F+ ce include atributele din Ri
mentinerea dependentelor prin descompunere :
(F1  F2  …  Fn)+ = F+

» in caz contrar, verificarea actualizarilor pentru a


identifica violarea DF necesita operatii join
costisitoare
Exemplu

R = (A, B, C)
dependentele functionale DF = {A  B, B  C)
Poate fi descompus in mai multe moduri

Var1. R1 = (A, B), R2 = (B, C)


Descompunere fara pierdere de info :
R1  R2 = {B} si B  BC
Mentinerea dependentelor

Var2. R1 = (A, B), R2 = (A, C)


Descompunere fara pierdere de info :
R1  R2 = {A} si A  AB
Fara mentinerea dependentelor
(nu verifica B  C , fara a calcula in prealabil R1 ⋈ R2)
Atribute , chei
Supercheie - a unei scheme de relatii R refera setul de
atribute S ca subset al schemei R ,astfel incat
exista proprietatea pentru orice doua tuple t1 si t2 , in
orice relatie permisa r din R este indeplinita conditia
t1[S]=t2[S]

Cheie candidata – orice cheie din relatia R ( exista mai multe


posibile chei), una din cheile candidate devine cheie
primara
Cheie compusa – din mai multe atribute
Dependente partiale = relatia detine o cheie compusa

atribut prim - membru al unei chei candidate (posibil


compusa)
atribut nonprim - nu e membru al unei chei candidate
Scheme si restrictii
SCHEMA unei relaţii este formată din:
Numele relaţiei
Atributele relaţiei
Restricţiile de integritate

RESTRICŢIILE DE INTEGRITATE depind de semantica valorilor


domeniilor
Integritatea entităţii prin care valorile cheii primare trebuie să
fie diferite de zero si in domeniu
Integritatea referirii potrivit căreia valorile unei chei externe
trebuie să se refere la tuplele relaţiei
Forme normale
Anomaliile pot fi evitate daca se inlocuiesc schemele de relatie cu scheme
echivalente pentru care depedentele satisfac anumite restrictii

SCHEMELE DE RELATII ECHIVALENTE – Forme normale


Formele normale – criterii de proiectare corecta a schemelor de relatii ce
asigura :evitarea anomaliilor, reducerea redundantei si cresterea gradului
de independenta reciproca a datelor

Nivelurile de normalizare definite in termenii tipurilor de dependente,


impun conditii din ce in ce mai restrictive asupra relatiilor : astfel
o relatie aflata pe un anumit nivel de normalizare satisface
TOATE RESTRICTIILE CERUTE DE NIVELURILE INFERIOARE

Observatie :NORMALIZAREA
 poate afecta NEGATIV eficienta cu care sunt rezolvate interogarile
(bazele de date necesita cuplare)
 este utila pentru operatii frecvente de actualizare, stegere, adaugare
si mai putin in sisteme ce presupun INTEROGARI complexe
Prima forma normala
Un domeniu de atribute este ATOMIC , daca elementele sale sunt
unitati indivizibile (ex nonatomice – atribute set, compozite…)

DEF : O schema de BD relationala se afla in prima


forma normala FN1, daca si numai daca , toate
atributele sale iau numai valori atomice

valorile nonatomice :
complica stocarea datelor
incurajeaza redundanta datelor
interpretari greoaie a valorilor nonatomice in programele de
aplicatie
Atomicitatea
nu este o proprietate INTRINSECA a elementelor domeniului
refera modul in care elementele domeniului sunt utilizate
A doua forma normala
FN2 - rezolva probleme determinate de DF intre atribute prime si neprime
pentru relatii cu chei compuse
Trecerea unei relatii din FN1 -> FN2 impune eliminarea dependentelor
functionale partiale ,ale atributelor neprime fata de oricare cheie a relatiei

DEF: O relatie R este in a doua forma normala FN2 , daca este


in FN1 si orice atribut neprim este total dependent fata de
oricare cheie a relatiei
Orice atribut ce nu e cheie primara ( neprim) este
dependent total de cheia primara

Nota : Pentru orice relatie in FN1 se poate gasi o descompunere in relatii


aflate in FN2 echivalenta cu relatia initiala , astfel incat :
1. din relatiile descompunerii se poate reconsititui prin cuplare
intreg continutul informational al relatiei initiale,
2. din dependentele functionale ale componentelor se pot
reconstitui dependentele eliminate prin descompunere
=> Descompunerea este un proces reversibil
Exemplu FN2
Profesori_note ( nume_prof, functie, salar, nume_stud,nota)

DF : nume_prof -> functie, functie -> salar, nume_prof -> salar,


(nume_prof ,nume_stud )-> nota

cheia compusa unica a relatiei : (nume_prof , nume_stud)

DF partiala atributelor :
nume_prof - > functie si resepectiv salar , respectiv fata de cheia
(nume_prof,nume_stud)
determina anomalii :
 de adaugare – nu se poate adauga cadru didactic cat timp nu acorda o nota
 de stergere - daca se sterge tupla unei singure note acordate se pierd info profesor
 de actualizare - functia-salariul = redondante

Se pot elimina prin crearea schemelor :


Profesori (nume_prof, functie, salar)
Note (nume_prof, nume_stud, nota)

Respecta : conservarea continutului de info si conservarea dependentelor


functionale
Principiu : orice relatie urmareste un singur tip de entitate
A treia forma normala
DEF : o relatie este in a treia forma normala FN3 , daca este in
FN2 si nici un atribut neprim nu este dependent functional
de un alt atribut neprim

Observatii:
un atribut neprim poate depinde functional doar de cheile din
relatie (deoarece acesta nu poate fi dependent de un atribut prim
daca nu este cheie sau nu contine o cheie)

identifica dependentele tranzitive ( de tipul: A->B, B->C =>


A->C

pentru orice relatie aflata in FN2 , exista o descompunere


echivalenta in FN3, astfel transformarea echivalenta determina
eliminarea anomaliilor cauzate de dependentele tranzitive intre
atribute neprime
Exemplu FN3
Separarea continutului de informatie anterioara cf FN2 nu a fost COMPLETA!
Profesori_note ( nume_prof, functie, salar, nume_stud,nota)

DF : functie->salar determina o serie de anomalii


 Anomalia de adaugare :nu se poate inregistra salariul unei functii daca nu
exista un cadru didactic cu functia ( stergerea ..este inversa!)
 Anomalia de actualizare : redondanta salariu pentru fiecare cadru didactic
la functia respectiva - parcurgere inutila de relatii

anomaliile pot fi eliminate prin descompunerea relatiei Profesori in subrelatii astfel :

NF ( nume_prof, functie)
FS( functie, salar)
+Note (nume_prof, nume_stud, nota)

Elimina toate anomaliile datorate dependentelor functionale dintre atribute


neprime
Permite reconstituirea continutului de info si a setului de dependente functionale
Forma normala BCNF
FN2, FN3 izoleaza dependentele functionale pentru atributele
neprime insa nu si pentru cele prime ( membre ale unei chei)

DEF: o relatie este in forma BCNF , daca pentru orice


dependenta functionala X->A din relatia R, cu A atribut ce nu
face parte din X , atributul X (posibil compus) este cheie in
relatia R , sau include o cheie din relatia R

Definitie formala : o relatie R este in FN-BC raportat la un set de dependente


functionale daca:
 pentru toate DF din F+ de forma  , unde   R si   R
se respecta relatiile:
   este trivial (i.e.,   ), sau
 este supercheie pentru relatia R

Concluzii :
1. In FN-BC singurele dependente functionale permise sunt cele in care o
cheie determina un alt atribut.
2. Nici un atribut neprim nu poate fi dependent functional de un alt
atribut daca nu este cheie.
 O relatie in BC este si in FN3 si in FN2.. FN1
BCNF- concluzii
Pentru o relatie data , nu exista intotdeauna o descompunere in forma BC

Observatie :

desi exista intotdeauna o descompunere in relatii


BC ce poseda proprietatea de cuplare fara pierdere
de informatie ,
=>nu exista intotdeauna o descompunere care sa
conserve dependentele functionale ale relatiei R

Concluzii
decompunerea unei relatii in forma BC se poate realiza in anumite
situatii doar cu pierderea anumitor dependente functionale
uneori forma BC este prea restrictiva pentru a fi aplicata in procesul
de normalizare => se poate folosi FN3 cu conservarea
dependentelor functionale si eliminarea suficient de buna a
anomaliilor
Cateva concluzii ..
Daca diagrama E-R e conceputa atent, cu identificarea corecta a
entitatilor, tabelele generate (schemele) nu necesita normalizare
DF permit - identificarea cheilor candidate minimale

Obiectivele normalizarii :

 eliminarea redundantelor /anomaliilor de actualizare prin


descompunerea relatiilor initiale

 mentinerea posibilitatii de refacere a dependentelor initiale si a


consistentei datelor

 FN3 - mentine dependentele insa si redundanta partiala in date

 FN-BC - asigura eliminarea redundantelor insa nu garanteaza


mentinerea dependentelor
Exemplul 1

Relatia initiala

Client_inchiriere (Client_nr, Proprietate_nr, Cnume, Padresa,


Datainc, Datasf, Inchiriere, Proprietar_nr, Proprietar_nume)

FN2
Client (Client_nr, Cnume)

Inchiriere_proprietate (Client_nr, proprietate_nr, Padresa,


Datainc, Datasf, Inchiriere, Proprietar_nr, Proprietar_nume)
FN2
Client (client_nr, Cnume)

Inchiriere_proprietate (client_nr, proprietate_nr, Pdresa, Datainc,


Datasf, inchiriere, proprietar_nr, Proprietar_nume)

Df1 :(client_nr, proprietate_nr) - >Datainc, Datasf cheie primara


Df2: client_nr ->Cnume dependenta partiala
Df3: proprietate_nr -> Pdresa,inchiriere, proprietar_nr, Proprietar_nume ; dep. partiala
Df4: proprietar_nr -> Proprietar_nume; dependenta tranzitiva
Df5: (client_nr, Datainc) -> proprietate_nr, Pdresa, Datasf, inchiriere, proprietar_nr, Proprietar_nume;
cheie candidata
Df6:( proprietar_nr, Datainc) ->client_nr, Cnume, Datasf; cheie candidata

Def : O relatie este in FN2, daca este in FN1 si orice atribut ce nu este
cheie primara este total dependent functional de cheia primara
Client (client_nr, Cnume)
Inchiriere (client_nr, proprietate_nr, Datainc, Datasf)
Proprietar (proprietate_nr, Pdresa, inchiriere, proprietar_nr,Proprietar_nume)
FN3
Client (client_nr, Cnume) este in FN3
Inchiriere (client_nr, proprietate_nr , Datainc, Datasf) este in FN3
Proprietar (proprietate_nr, Pdresa, inchiriere, proprietar_nr, Proprietar_nume)

Dependentele functionale pentru relatii


Relatia client
Df2 : client_nr -> Cnume
Relatia Inchiriere
Df1 : (client_nr, proprietate_nr) -> Datainc, Datasf
Df5’ : (client_nr, Datainc)-> proprietate_nr, Datasf
Df6’: (proprietar_nr, Datainc)->client_nr, Datasf
Relatia Proprietar
Df3: proprietate_nr -> Pdresa,inchiriere, proprietar_nr, Proprietar_nume
Df4: proprietar_nr -> Proprietar_nume; dependenta tranzitiva

DEF FN3 : O relatie aflata in FN2 si FN1 , pentru care nu exista


dependente tranzitive intre atributele ce nu sunt cheie primara si
respectiv cheia primara
Solutie : eliminarea dependentelor tranzitive
FN3
Crearea unei noi relatii ( separarea DF tranzitive) astfel :

Proprietar (proprietate_nr, Pdresa, inchiriere,proprietar_nr,Proprietar_nume)


devine:
Proprietate (Proprietate_nr, Pdresa, inchiriere, proprietar_nr )
Proprietar (Proprietar_nr , Proprietar_nume)

Schemele BD in FN3 sunt:

Client (client_nr, Cnume)


Inchiriere (client_nr, proprietate_nr, Datainc, Datasf)
Proprietate (proprietate_nr, Pdresa, inchiriere, proprietar_nr)
Proprietar (Proprietar_nr , Proprietar_nume)

 mecanismul cheie primara – cheie straina


 descompunere prin operatii de proiectie, fara pierdere de info, refacere prin join
natural
FNBC
Def . FN- BC – orice determinant este o cheie candidata

Relatia Inchiriere contine 3 determinanti :


(client_nr, proprietate_nr), (client_nr, Datainc), (proprietar_nr, Datainc)
identificati de dependentele functionale DF:
DF1 : client_nr, proprietate_nr-> Datainc, Datasf
DF5‟ : client_nr, Datainc-> proprietate_nr, Datasf
DF6‟: proprietar_nr, Datainc->client_nr, Datasf

Determinantii sunt chei candidate, deci relatiile sunt in FNBC

Violarea constrangerilor BC pot surveni in relatiile in care:


 exista mai multe chei candidate compozite
 chei ce partajeaza cel putin un atribut
Exemplul 2
Interviu_client (Client_nr, interviu_d, interviu_t, staff_nr, nr_cam)

chei candidate, compuse cu partajare atribut


(Client_nr, interviu_d)
(staff_nr , interviu_d, interviu_t)
(nr_cam, interviu_d, interviu_t), se alege cheia primara (Client_nr, interviu_d)

dependente functionale
DF1: (Client_nr, interviu_d ) -> interviu_t, staff_nr, nr_cam - cheie primara
DF2: (staff_nr, interviu_t, interviu_d) -> Client_nr - cheie candidata
DF3: (nr_cam , interviu_d, interviu_t) -> staff_nr, Client_nr - cheie candidata
DF4: (staff_nr, interviu_d ) -> nr_cam

DF1, DF2, DF3 chei candidate = nu creaza probleme, DF4 nu are dependente tranzitive
=>

Relatia este in FN3, nu e in BC, determinantul (staff_nr,


interviu_d ) nu e cheie candidata pt relatie
Exemplul 2
Interviu_client (Client_nr, interviu_d, interviu_t, staff_nr, nr_cam)

noile relatii in FN-BC: sunt

Interviu (Client_nr, interviu_d, interviu_t, staff_nr)

Staff_cam( Staff_nr, interviu_d, nr_cam)


Dependente multivalorice

FN-BC – elimina anomaliile datorate DF


Exista si alte tipuri de dependente mai putin restrictive –
dependentele multivalorice (DMV) si de cuplare ce pot crea
probleme similare sub aspectul redundantei datelor

Definitie : Fie schema de relatie R (X,Y,Z), cu X,Y, Z atribute


simple sau compuse ,exista o dependenta multivalorica a
atributului Y fata de X , sau X determina multivaloric Y ,
(notatie X->->Y , respectiv X->->Z) ,

daca pentru fiecare valoare a atributului X exista


un set de valori pentru Y ,si respectiv un set de
valori pentru Z, cu seturile de valori Y si Z
independente.
Dependente multivalorice
Definitie formala : X Y , X  Z, (X multidetermina Y, X
multidetermina Z)

daca si numai daca pentru toate relatiile posibile r (R )


cu Y si Z independente
< x1, y1, z1 >  r si < x1, y2, z2 >  r
atunci
< x1, y1, z2 >  r si < x1, y2, z1 >  r

 orice dependenta functionala este si o dependenta


multivalorica (generalizarea DF)
Dependente multivalorice
DMV pot cauza anomalii de aceeasi natura ca si DF
DMV pot fi :
Triviale – X->-> Y este triviala , daca Y este un subset a lui X ,sau
X  Y=R
Nontriviale – daca nici una din conditiile anterioare nu sunt satisfacute.

Def. FN4 . O relatie este in FN4 , daca se afla in


forma normala BC si nu contine dependente
nontriviale multivalorice

FN4 este mai puternica decat FN-BC,este o generalizare a acesteia


elimina redundanta datelor prin eliminarea dependentelor MV
procesul de normalizare FN4 este similar cu FN BC
– proprietatea de conservare dependentelor este
satisfacuta daca din DF si DMV existente in
descompunere se pot deduce toate dependentele bazat
pe setul de axiome A1 - A8
Dependente de cuplare
Trecerea de la o FN la alta – prin descompuneri bazat pe
generarea altor doua relatii si eliminarea DF si/sau DMV
O relatie aflata in FN4 nu mai poate fi descompusa bazat pe
aceeasi strategie! desi exista situatii in care in FN4 exista
inca redondante ce genereaza anomalii
Probleme determinate de dependentele de cuplare pot fi
eliminate prin descompunerea relatiei initiale in mai mult
de doua relatii a caror cuplare va genera relatia R initiala

Definitie – O relatie R , este n - decompozabila daca poate fi


descompusa fara pierdere de info in mai multe relatii.

Prin eliminarea dependentelor de cuplare se obtin relatii


aflate in FN5, trecerea la FN5 este un proces de
normalizare care se aplica relatiilor n- decompozabile (n>2)
Forme normale
1NF 4NF
 1 FN
 O relaţie R este în 1FN atunci când atributele sale nu pot fi 2NF
descompuse
 2 FN 3NF
 O relaţie R este în 2FN, dacă este în 1FN şi toate dependenţele
între cheia primară a lui R şi celelalte atribute a lui R sunt
elementare (atributele nu depind de o parte din cheie) BCNF
 3 FN
 O relaţie R este în 3FN, dacă este în 2FN şi dacă sunt 5NF
eliminate toate dependenţele funcţionale tranzitive (dacă nu
există nici o dependenţă funcţională între atributele non-
prime)
 Boyce-Codd
 O relaţie R este în forma BC dacă este în 3FN şi dacă fiecare
determinant în diagrama de dependenţe este un candidat
pentru a deveni cheia relaţiei.
 Dacă o relaţie are o un determinant compus, unul dintre
elementele care-l compun nu trebuie să depindă de alt atribut

 4 FN
 O relaţie R este în 4FN, dacă este în forma BC şi dacă nu
există dependenţe funcţionale multivaloare în aceeaşi relaţie
 5 FN
 O relaţie R este în 5FN, dacă este în 4FN şi tratează cazurile în
care există mai multe dependenţe funcţionale multivaloare
care sunt interlegate între ele
Procesul normalizarii
1. forma nenormalizata (UNF) – eliminarea grupurilor de atribute – atribute
atomice ->FN1
2. eliminarea dependentelor partiale (orice atribut ce nu este cheie primara
este total dependent functional de cheia primara) ->FN2
3. eliminarea dependentelor tranzitive intre atributele ce nu sunt cheie
primara si cheia primara ->FN3
4. eliminarea anomaliilor generate de DF(orice determinant este o cheie
candidata) ->FNBC
5. eliminarea dependentelor MV nontriviale ->FN4
6. eliminarea dependentelor join – FN5
7. similaritatea existenta intre FN-BC, FN4, FN5

O relatie R este in FN-BC( FN4, FN5 ) daca si numai daca singurele


dependente functionale ( MV si de cuplare) existente sunt cele
implicate de o cheie a relatiei R
=> orice dependenta ( F, MV, C) determina redondanta si
anomalii atunci cand nu este implicata de o cheie a relatiei
Exemplu

Separare cf DF, orice


atribut ce nu este cheie
primara este total
dependent functional de
cheia primara
Exemplu
nu exista dependente tranzitive
intre atributele ce nu sunt cheie
primara si cheia primara
Exemplu

orice atribut ce nu este


cheie primara este total
dependent functional de
cheia primara
FN3- nu exista dependente
tranzitive intre atributele ce nu
sunt cheie primara si cheia
primara
FN-BC :orice determinant este o cheie candidata
Concluzii
Normalizarea – tehnica pentru producerea unui set de relatii cu proprietati
dorite, controlate, formal utilizata pentru a identifica relatiile bazat pe
cheile lor si a DF intre atribute

Relatia transformata in forme normale superioare , devine in mod progresiv


mai restrictiva in format si mai putin vulnerabila anomaliilor de
actualizare

Teoria normalizarii – cadru de ghidare pentru realizarea unor scheme de


relatii mai bune

Este la latitudinea proiectantului de BD decizia de a aplica o anumita etapa


de normalizare , functie de contextul existent (aplicatiile)
In anumite situatii normalizarea completa e posibil sa devina
dezvantajoasa!
Prin aplicarea corecta a unei metodologii de proiectare descendenta bazat
pe modelul EER , modelele rezultate au tendinta de a fi deja normalizate

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