Documente Academic
Documente Profesional
Documente Cultură
DE DATE
1
Întrebări:
1. Esența normalizării bazelor de date
2. Normalizarea prin descompunere
3. Forme normale
4. Normalizarea prin sinteză
2
ESENȚA NORMALIZĂRII
BAZELOR DE DATE
3
Necesitatea normalizării
4
Necesitatea normalizării
Anomaliile și erorile de actualizare, care apar în lucrul cu baza de date, se
produc datorita dependențelor care există între datele din cadrul relațiilor
bazei de date.
6
Necesitatea normalizării
3. Anomalie la ștergere. Daca este ștearsa înregistrarea
pentru care A# este 4, atunci se pierde informația ca un avion
CAR are capacitatea 100.
7
Necesitatea normalizării
5. Problema re-conexiunii. Consideram schemele relaționale:
AVION1 = PROJECT(AVION, A#, nume)
AVION2 = PROJECT(AVION, nume, capacitate, localitate)
AVION3 = JOIN(AVION1, AVION2).
#A nume
nume capacitate localitate
1 AIRBUS
AIRBUS 250 PARIS
2 AIRBUS
AIRBUS 250 LONDRA
3 AIRBUS
CAR 100 PARIS
4 CAR
B707 150 LONDRA
5 B707
6 B707
8
Esența normalizării bazelor de date
În procesul modelării unei baze de date relaționale, o etapă
importantă o reprezintă normalizarea relațiilor conceptuale (Codd,
1972), adică obținerea de relații „moleculare“ fără a pierde nimic din
informație pentru a elimina:
• redundanța;
• anomaliile reactualizării informațiilor;
• rezolvarea problemei re-conexiunii
Tehnica normalizării permite obținerea unei scheme
conceptuale rafinate printr-un proces de ameliorare progresiva a
unei scheme conceptuale inițiale a bazei de date relaționale. După
fiecare etapa de ameliorare, relațiile bazei de date ating un anumit grad
de perfecțiune, deci se află intr-o anumită formă normală. Trecerea
unei relații dintr-o formă normală în alta, presupune eliminarea unor
dependențe nedorite de un anumit tip, care sunt transformate in
dependențe admisibile, adică dependențe care nu provoacă anomalii.
9
Esența normalizării bazelor de date
Normalizarea este un procedeu de identificare a setului
optim de relații, bazat pe dependentele functionale dintre
atribute, care are ca scop crearea unui model logic de date valid,
neredundant, care să elimine riscurile de apariție a anomaliilor
de reactualizare a datelor în baza de date.
Procesul de ameliorare a schemei conceptuale trebuie:
• să garanteze conservarea datelor, adică în schema conceptuală
finală trebuie sa figureze toate datele din cadrul schemei
inițiale;
• să garanteze conservarea dependențelor dintre date, adică in
schema finală fiecare dependență trebuie sa aibă
determinantul și determinatul în schema aceleiași relații;
• să reprezinte o descompunere minimală a relațiilor inițiale,
adică nici una din relațiile care compun schema finală nu
trebuie sa fie conținută intr-o altă relație din această schemă.
10
NORMALIZAREA PRIN
DESCOMPUNERE
11
Normalizarea prin descompunere
Exista doua metode pentru a modela baze de date relaționale fără
anomalii sau pierderi de informație.
• Schema descompunerii pleacă de la o schemă relațională
universală ce conține toate atributele BD. Schema se descompune
prin proiecții succesive în subrelatii. Descompunerea se oprește
când continuarea ei ar duce la pierderi de informatie. Algoritmii
de descompunere se bazează, în general, pe descrierea formală a
dependenței dintre atribute.
• Schema sintezei pleacă de la o mulțime de atribute independente
din mulțimea universală a bazei de date. Utilizând proprietăți de
semantică și legături între atribute se pot compune noi relații, astfel
încât, acestea să nu sufere de anumite anomalii. Algoritmii se
bazează, in general, pe teoria grafurilor pentru a reprezenta legătura
intre atribute.
12
Normalizarea prin descompunere
13
Normalizarea prin descompunere
Exista doua tipuri de descompuneri:
• Descompuneri ce conserva dependentele. Aceasta descompunere
presupune desfacerea relației R in proiecțiile R1, R 2, ..., Rk , astfel
încât dependentele lui R sunt echivalente (au închideri pseudo-
tranzitive identice) cu reuniunea dependentelor lui R1, R2, ..., Rk.
• Descompuneri fără pierderi de informatie (L-join). Aceasta
descompunere presupune desfacerea relatiei R intr-o multime de
proiecții R1, R2, ..., Rj, astfel încât pentru orice realizare a lui R este
adevărată relația:
14
Regula Casey-Delobel
15
Regula Casey-Delobel
250
16
FORME NORMALE
17
Forme normale
Există 6 forme normale ale bazei de date relaționale:
· Prima formă normală (sau FN 1).
· A doua formă normală (sau FN 2).
· A treia formă normală (sau FN 3).
· Forma normală Boyce Codd (sau FNBC).
· A patra formă normală (sau FN 4).
· A cincea formă normală (sau FN 5).
Fiecare dintre cele 6 forme normale este mai restrictivă ca predecesoarea sa.
18
Reţeta clasică a normalizării
• se inventariază toate atributele şi se constituie astfel relaţia universală
(mulțimea tuturor atributelor BD);
• se determină cheia primară a relaţiei universale şi se reprezintă toate
dependențele funcţionale (DF) ce decurg de aici;
• se inventariază toate dependențele funcţionale revelate şi ireductibile
dintre atributele relaţiei universale;
• se elimină dependențele parţiale prin ruperea relaţiei universale în relaţii
cu schemă mai simplă;
• din relaţiile obţinute se elimină dependenţele tranzitive, prin spargerea
succesivă a relaţiilor în altele cu schema din ce în ce mai simplă, astfel
încât nici una din tabelele finale nu conţine dependențe parţiale sau
tranzitive;
• se identifică eventualele dependenţe multivaloare şi, dacă există
asemenea dependențe, se operează noi descompuneri ale tabelelor ce vor fi,
astfel, în FN4;
• se încearcă determinarea eventualelor dependenţe de joncţiune şi, pe baza
acestora, relaţiile sunt aduse în FN5;
19
FORMA NORMALĂ 1
20
Forma normală 1 (FN1)
21
Forma normală 1 (FN1)
O bază de date este în forma normală unu (FN1) dacă
toate relațiile (tabelele) sunt în forma normală unu.
Exemplu 1. Tabel cu încălcări a FN1 (mai multe valori semnificative în același câmp)
23
Forma normală 1 (FN1)
Posibilele variante de tabele în forma normală 1 cu chei simple sau compuse:
24
Forma normală 1 (FN1)
Exemplu 2. Aducerea tabelului nenormalizat la FN1 cu cheie simplă
25
Forma normală 1 (FN1)
Exemplu 3. Aducerea tabelului nenormalizat la FN1 cu cheie simplă
26
Forma normală 1 (FN1)
Exemplu 4. Aducerea tabelului nenormalizat la FN1 cu cheie compusă
27
FORMA NORMALĂ 2
28
Forma normală 2 (FN2)
O relație R este în forma normală doi (FN2) dacă și numai dacă:
• Relația R este în FN1;
• Fiecare atribut care nu este cheie (nu participă la cheia primară)
este dependent de întreaga cheie primară.
Dacă unul sau mai multe atribute sunt dependente funcțional numai
de o parte a cheii primare, atunci ele trebuie sa fie separate in tabele
diferite.
29
Forma normală 2 (FN2)
Exemplu 1 . Tabelul în FN1
Tabele în FN2
30
Forma normală 2 (FN2)
Exemplu 2 . În relația Comanda aflată în FN1 cheia primara este o
cheie compusa, formata din #ComandaID și #ReperID. ReperNume
depinde numai de #ReperID, nu și de #ComandaID.
Tabele în FN2
31
Forma normală 2 (FN2)
Exemplu 3. fie avem trei relații Student, Subiect și Scor în FN1
32
Forma normală 2 (FN2)
Exemplu 3. Aducerea relațiilor Student, Subiect și Scor la FN2
34
Regula Casey-Delobel pentru FN2.
Pentru a obține o relație FN2 se poate aplica regula Casey-Delobel.
35
Regula Casey-Delobel pentru FN2.
37
Exemplu de descompunere în forma normală 2
38
Exemplu de descompunere în forma normală 2
• Cheia primară a relaţiei LOCALITĂŢI (#CodPoştal, #Sat)
prezintă problema nulităţii unuia dintre atributele
componente, deoarece se încalcă restricţia de entitate (pentru
liniile care se referă la oraşe valoarea atributului Sat este
NULL).
39
Exemplu de descompunere în forma normală 2
• Cu toate acestea se poate scrie:
(1) (CodPoştal, Sat) —→ OraşComună
(2) (CodPoştal, Sat) —→ Judeţ
• Dar:
(3) CodPoştal —→ OraşComună
(4) CodPoştal —→ Judeţ
deci dependențele (1) şi (2) sunt DF parţiale.
40
Exemplu de descompunere în forma normală 2
• Relaţia LOCALITĂȚI poate fi descompusă în două relații în FN2:
ORAȘE_COMUNE (CodPoștal, OrașComună, Județ)
SATE (CodPoștal, Sat)
• A fost eliminată redundanța. În LOCALITĂŢI, dacă o comună are şase sate,
de şase ori apare şi codul poştal al comunei, şi denumirea comunei şi a
judeţului. Acum însă, denumirea comunei şi judeţului apare o singură dată în
relaţia ORAŞE_COMUNE. De asemenea, pentru fiecare oraş apare o
singură înregistrare în ORAŞE_COMUNE şi, firesc, nici una în SATE.
41
FORMA NORMALĂ 3
42
Forma normală 3 (FN3)
43
Forma normală 3 (FN3)
44
Forma normală 3 (FN3)
Exemplu 1. Tabelul Piese de schimb, in care cheia primara (și cheie unica)
este #Piese_de_schimb este în FN2 și conține dependență tranzitivă
ProducatorNume →ProducatorAdresa
45
Forma normală 3 (FN3)
Exemplu 2. Fie avem relațiile Student, Subiect și Scor în FN2
48
Forma normală 3 (FN3)
Exemplul 3 . În relația EXECUTA_1(cod_obiectiv#, cod_lucrare#,
nr_santier#, descriere, funcție, conducător) continua sa existe redundanța
in date.
Atributul conducător depinde indirect de cheia primară prin intermediul
atributului funcție. Intre atributele relației exista dependențele:
EXECUTA12(funcție, conducător).
49
FORMA NORMALĂ BOYCE-
CODD
50
Forma normală Boyce-Codd (FNBC)
• O schemă de relaţie R se află în FNBC dacă, pentru toate dependenţele
funcţionale ce au loc în R şi sunt de forma X→Y în care X R şi Y R
sunt îndeplinite condiţiile:
• X → Y este trivială.
• X este o cheie candidat a schemei de relaţie R astfel încât X→R.
• Cu alte cuvinte, fiecare atribut trebuie să depindă de cheie, de întreaga
cheie şi de nimic altceva.
51
Forma normală Boyce-Codd (FNBC)
Exemplu 1. Fie avem relația Subiect în FN3. În această relație student_id + subject
formează cheia primară, deoarece folosind student_id și subject, putem găsi toate
valorile tabelului.
# student_id # subject professor
101 Java P.Java
101 C++ P.Cpp
102 Java P.Java2
103 C# P.Chash
104 Java P.Java
Important este că un profesor predă o singură materie, dar o disciplină poate
avea doi profesori diferiți. Prin urmare, există o dependență între subiect și profesor,
unde subiectul depinde de numele profesorului.
Acest tabel satisface prima formă normală, deoarece toate valorile sunt
atomice, numele coloanelor sunt unice și toate valorile stocate într-o anumită coloană
sunt de același domeniu. Acest tabel satisface formă normală doi , deoarece nu există
dependență parțială. Și nu există o dependență tranzitorie, prin urmare, tabelul
satisface și a 3-a formă normală.
52
Forma normală Boyce-Codd (FNBC)
53
Forma normală Boyce-Codd (FNBC)
54
Forma normală Boyce-Codd (BCNF)
• De remarcat este faptul că nu întotdeauna este posibilă descompunerea
în FNBC cu păstrarea dependenţelor.
ADRESA_1(cod_persoana#, adresa);
ADRESA_2(adresa#, telefon).
55
Algoritmul de aducere a unei relații R din FN1 în BCNF
57
Forma normală patru (FN 4)
Forma normală patru se bazează pe conceptul de
dependenţă multivalorică.
O dependenţă multivalorică apare doar în relaţiile ce au cel
puţin trei coloane. Dacă una dintre coloane are rânduri ale
căror valori corespund unei singure valori ale unui rând dintr-
o altă coloană, atunci se spune că a apărut o dependenţă
multivalorică.
59
Forma normală patru (FN 4)
Exemplu 1. Fiecare restaurant livrează un tip de pizza intr-o arie de distribuție. Pentru ca
aici cheia primară este formata din (#Restaurant, #Tip de pizza, #Aria de distributie) și
nu există atribute non-cheie, nu se încalcă nici o forma normală anterioară (1, 2, 3 ori
BCNF). Dar deoarece varietățile de pizza oferite de un restaurant sunt independente de
ariile de distribuție, există redundante in tabel: pentru fiecare restaurant Jerry’s, se
menționează de 3 ori ca se oferă Tip de pizza “Pufos”. De asemenea, dacă dorim să
adăugăm, de ex. tipul “Subțire” pentru Tip de pizza, la Jerry’s, va trebui sa adaugăm 3
înregistrări, cate una pentru fiecare Arie de distributie.
60
Forma normală patru (FN 4)
Exemplu 2. Fie avem relația Înscriere.
s_id course hobby Cele două înregistrări pentru s_id egal cu
1 Science Cricket 1, vor da naștere la alte două înregistrări,
așa cum se arată mai jos, deoarece pentru
1 Maths Hockey un student există două hobby-uri, prin
2 C# Cricket urmare, împreună cu ambele cursuri,
aceste hobby-uri ar trebui să fie
2 Php Hockey
specificate.
61
Forma normală patru (FN 4)
Pentru ca relația de mai sus să satisfacă a patra formă normală, putem descompune
tabelul în 2 tabele (Curs și Hobby).
62
Forma normală patru (FN 4)
Exemplu 3. Fie relația INVESTITIE(cod_contractant#, denumire,
telefon) și presupunem că un investitor poate avea mai multe numere de
telefon și că poate investi in mai multe obiective.
INVESTITIE_1(cod_contractant#, denumire),
INVESTITIE_2(cod_contractant#, telefon).
63
FORMA NORMALĂ 5
64
A cincea formă normală (FN 5)
A cincea formă normală se bazează pe conceptul de dependenţă de cuplare.
Dependenţa de cuplare este o proprietate ce garantează că nu se generează
înregistrări false la reunirea relaţiilor obţinute prin descompunere.
O relaţie se află în forma normală cinci dacă ea nu poate fi descompusă în
alte relaţii fără a pierde informaţie.
Cu alte cuvinte, dacă se adaugă un rând suplimentar unei relaţii care nu se află în
forma normală cinci şi dacă această relaţie se descompune în alte relaţii, prin refacerea
relaţiei iniţiale se obţin înregistrări false.
O dependenţă de cuplare (joncţiune) JD(R1, R2, ... ,Rn) reprezintă o
constrângere aplicată relaţiei R, care arată faptul că fiecare instanţă r(R) trebuie să
aibă pierdere de informaţie prin descompunerea în relaţiile R1, R2, ... , Rn.
O dependenţă multivalorică reprezintă un caz special al unei dependenţe de
cuplare în care n = 2.
Dependenţa de cuplare JD(R1, R2,..., Rn) este o dependenţă de cuplare trivială
dacă unele relaţii Ri = R.
O schemă de relaţie R se află în forma normală cinci referitor la o mulţime F de
dependenţe funcţionale, multivalorice, şi de cuplare dacă pentru fiecare dependenţă
de cuplare netrivială JD(R1, R2, ... , Rn) din F, fiecare Ri este o supercheie a lui R.
65
A cincea formă normală (FN 5)
66
A cincea formă normală (FN 5)
67
A cincea formă normală (FN 5)
În acest exemplu, în special, se presupune că vânzătorul Ivanov are
dreptul de a comercializa bunuri numai de la compania Horns and Hoofs,
vânzătorul Petrov - numai mărfuri de la compania Bezenchuk & Co., dar
vânzătorul Sidorov nu are dreptul de a comercializa cutii de pâine și ferestrău
etc.
Relația propusă mai sus nu poate exclude situațiile în care această
restricție va fi încălcată. Nimic nu împiedică introducerea de date privind
vânzarea de bunuri pe care firma nu le eliberează deloc, nici datele privind
vânzarea de bunuri ale firmei pe care vânzătorul nu le servește, nici datele
despre vânzarea unui astfel de tip de mărfuri pe care vânzătorul nu are dreptul
să le vândă.
Relația nu este în 5NF, deoarece are o dependență de conexiune
netrivială *{{Vânzător, Firmă}, {Firmă, Produs}, {Vânzător, Produs}}, cu
toate acestea, subseturile de atribute {Vânzător, Firmă}, {Firmă, Produs},
{Vânzător , Produs} nu sunt superchei ale relației inițiale.
În acest caz, pentru a reduce relația inițială la 5NF, tabelul trebuie
împărțit în trei: {#Vânzător, #Firmă}, {#Firmă, #Produs}, {#Vânzător,
#Produs}.
68
A cincea formă normală (FN 5)
Товары продавцов Фирмы продавцов Товары фирм
Продавец Товар Продавец Фирма Фирма Товар
Иванов Пылесос Иванов Рога и Копыта Рога и Копыта Пылесос
Иванов Хлебница Петров Безенчук&Ко Рога и Копыта Хлебница
Петров Сучкорез Сидоров Безенчук&Ко Рога и Копыта Лампа
Петров Пылесос Сидоров Рога и Копыта Безенчук&Ко Сучкорез
Петров Хлебница Сидоров Геркулес Безенчук&Ко Пылесос
Петров Зонт Безенчук&Ко Хлебница
Сидоров Телескоп Безенчук&Ко Зонт
Сидоров Пылесос Безенчук&Ко Телескоп
Сидоров Лампа Геркулес Вешалка
Сидоров Вешалка
69
Concluzii
1. FN1 > FN2 elimina redundantele datorate dependentei netotale a
atributelor care nu participa la o cheie, fata de cheile lui R. Se suprima
dependentele functionale care nu sunt totale.
2. FN2 > FN3 elimina redundantele datorate dependentei tranzitive. Se
suprima dependentele functionale tranzitive.
3. FN3 > BCNF elimina redundantele datorate dependentei functionale. Se
suprima dependentele in care partea stanga nu este o supercheie.
4. BCNF > FN4 elimina redundantele datorate multidependentei. Se
suprima toate multidependentele care nu sunt si dependente functionale.
5. FN4 > FN5 elimina redundantele datorate dependentei ciclice . Se suprima
toate join-dependentele care nu sunt implicate de o cheie.
6. BCNF, FN4 si FN5 corespund la regula ca orice determinant este o cheie,
dar de fiecare data dependenta cu care se defineste determinantul este alta
si anume dependenta functionala, multidependenta sau join-dependenta).
7. Descompunerea unei relatii FN2 in FN3 conserva datele si dependentele,
pe cand descompunerea unei relatii FN3 in BCNF si, respectiv, a unei relatii
BCNF in FN4 conserva doar datele.
70
NORMALIZAREA PRIN
SINTEZĂ
71
Schema de sinteza pentru obținerea lui FN3
72
Algoritm SNF3 (aducerea unei relatii in FN3 prin utilizarea unei scheme de sinteza)
73
74
75