Sunteți pe pagina 1din 24

Baze de Date în Economie

Cursul 7
Normalizarea bazelor de date relaţionale

Conf. dr. Dan-Andrei Sitar-Tăut


E-mail: dan.sitar@econ.ubbcluj.ro
Departamentul de Informatică Economică, et. 4, Birou 432
3
Cuprins
1. Consideraţii generale
2. Definiţii preliminare
3. Prima formă normală
4. Teorema de descompunere
5. A doua formă normală
6. Forma a 3-a normală (3NF) şi variantele (3 ½
NF)
7. Tipuri de conservare
8. Tematică laborator
1. Consideraţii generale
4
 Întreprindere = un univers real.
Model - modelele de date, modelul conceptual → schema
conceptuală, model logic global → modele arborescente,
în reţea / relaţionale.
Schema de date = imaginea la nivel relaţional a schemei
conceptuale + restricţiile de integritate - a întreprinderii.
BD = schema de date + datele (intensia + extensia)
Problema centrală a proiectării BD: Stabilirea ansamblului
relaţiilor care descriu corect schema conceptuală -
întreprinderea.
După stabilirea schemei conceptuale – (proiectarea bazelor
de date) → stabilirea schemei logice globale - structura
bazei de date → diferite tabele & transformarea tabelelor
în relaţii corecte.
Exemplu. Tabela cu orarul sălilor de curs din FSEGA (Orar.docx):
Probleme:
1.5Atomicitate?
2. Dependenţe de tip N:1 (funcţionale):
Sala → Capacitate
(022, 033...) →150 de locuri.
Anomalii:
 redundanţă logică – (027, 100) / (022,150);
 anomalii de stocare
 anomalii de inserare – se termină o nouă sală de curs; nu poate
fi introdusă în tabela orarului până nu se dă o valoare pentru
cheia primară Sala# - nu poate fi vidă în nici o relaţie (null);
 anomalii de ştergere – sala 022 trebuie scoasă din orar -
reparaţii; ştergerea liniilor → pierde legătura (Sala, Capacitate) -
legătură semantică.
 anomalii de modificare – s-a extins capacitatea sălii 022 la 180
de locuri → să se urmărească toate tuplele (022,150) - dacă se
scapă una dintre ele – anomalie de inconsistenţă - aceeaşi sală
apare cu două capacităţi diferite.
 probleme de reconexiune:
 Spargem tabela în 2 (Sala1:, Sala2:)
 Recompun prin echijoin → un tabel ≠ tabelul iniţial
→ Mecanismul - la dispoziţie proiectantul / administratorul BD
pentru rezolvarea acestor probleme - NORMALIZARE
6 Normalizarea = proces prin care se urmăreşte:
 transformarea tabelelor în relaţii;
 înlăturarea redundanţelor;
 înlăturarea dependenţelor interne între atributele unei relaţii,
transformându-le în dependenţe între tabele obţinute prin
descompunere (intrarelaţii → interrelaţii);
 înlăturarea diferitelor anomalii (de inserare, modificare /
ştergere) existente iniţial / apărute în urma descompunerii
tabelelor;
 asigurarea descompunerilor fără pierderi - recompunând
tabelele obţinute prin descompunere să se ajungă la tabela
iniţiala.
Normalizarea = procesul iterativ prin care BD:
 se aduce la o formă standard (relaţie)
 dispare fenomenul de redundanţă
 nu există anomalii
Forme normale - parcurse piramidal de la 1NF până la 5NF. (Date - forma a 6-a
normală).
7 1NF este obligatorie pentru a aduce o tabelă la forma unei relaţii.
 Proiectare - 3NF.
Teoria normalizării - vast, materialele referitoare la teoria / proiectarea bazelor
de date relaţionale:
 teoretic [Ullmann80, Abitaboul01]
 pragmatic [Date2004, Connolly&co2001, Niţchi&co2006].
Nu este obligatorie şi nici nu se merge de regulă până la ultimul nivel de
normalizare (Fabian Pascal).
2. Definiţii preliminare
8

Algoritmul de descompunere → de la o
relaţie dată într-o formă normală se
ajunge la o relaţie în forma imediat
superioară.
Dependenţă de tip n:1 - o dependenţă
funcţională (DF). Exemplu:
Sala → Capacitate.
DF se numesc şi dependenţe
univoce.
Observaţie. A şi B două grupuri de atribute dintr-o tabelă – DF
9între A şi B ↔ t1(A) = t2(A) → t1(B) = t2(B), ti(A), ti(B), i=1,2
subtupluri din A respectiv B.
A - domeniul de definiţie / determinantul, B - valorilor / cel
determinat.
 R o relaţie, A şi B - mulţimi de atribute → între A şi B -
dependenţă funcţională totală, DFT: A→B ↔ 2 condiţii:
 DF: A→B
 Nu există nici o submulţime proprie A’ a lui A ca DF: A’→B.
O DF care nu este totală este o dependenţă funcţională
parţială.
Dependenţă funcţională tranzitivă: A→B, B→C  A→C
Observaţie. Dependenţele multivoce (DM) - unui element din A
corespund un ansamblu de elemente din B. Exemplu, (Sală,
An_de_Studiu), / (Sală, Cadru_ Didactic). Dependenţa
tranzitivă din cadrul DF se poate extinde şi pentru DM.
E = mulţime de dependenţe (DF / DM); E+ = mulţimea tuturor
dependenţelor tranzitive obţinute din E - numeşte închiderea
10lui E.
E şi E’ – 2 mulţimi de dependenţe şi E’ conţine dependenţele din
E + unele dependenţe obţinute din E aplicând proprietăţile
dependenţelor → E’ - acoperire a lui E ↔ E şi E’ au aceeaşi
închidere.
Proprietăţi DF - cele mai cunoscute sunt axiomele lui Armstrong
- 1974. Fie R o relaţie şi A,B,C trei mulţimi de atribute ale ei.
Pentru dependenţele funcţionale au loc următoarele axiome:
A1. Reflexivitatea A→A, mai general, dacă A’  A  A→A’.
A2. Creşterea determinantului:
 dacă DF: A→B
 A  C  DF: C→B.
DF: C→B - dependenţă funcţională parţială.
A3. Tranzitivitatea:
 A→B
 B→C  A→C.
DF: A→C - închiderea tranzitivă a primelor două
Caracterizarea mulţimilor de axiome - 2 noţiuni:
11 o mulţime de axiome - completă ↔ pornind de la o mulţime de
dependenţe E → pe baza axiomelor → toate dependenţele E+.
 o mulţime de axiome închisă ↔ pornind de la E nu se pot
deduce, cu ajutorul axiomelor, dependenţe care nu fac parte din
E+.
 T.Ullman (1980): Mulţimea axiomelor lui Armstrong este completă şi
închisă.
E’ - acoperire minimală ↔ acoperire a lui E & nici o parte a lui E’ nu
este acoperire.
Observaţie.
 acoperirea minimală - rol important în descompunerea relaţiilor;
 o mulţime de aplicaţii - mai multe acoperiri minimale.
Descompunere reversibilă = fără pierderi = recompunând relaţiile
obţinute prin descompunere → relaţia iniţială.
Relaţie ireductibilă = nu poate fi descompusă în mod reversibil.
Observaţie. Relaţie ireductibilă - o singură entitate semantică →
relaţiile ireductibile = module logice pe baza cărora se modelează
întreprinderea.
Descompunere atomică a lui R - descompunere reversibilă a lui R în
relaţii ireductibile.
3. Prima formă normală

12
Fie tabelul PERSONAL
Nu este o relaţie în 1NF:
 Domiciliu = (Judeţ, Localitate, Stradă, Număr) - nu este atribut atomic,
 Copil este repetitiv; câte câmpuri să se rezerve?
O relaţie este în prima formă normală (1NF) – fiecare atribut (câmp) este
atomic şi tabela nu conţine grupuri repetitive.  
Trecerea unui tabel la 1NF:
 atributele care nu sunt atomice se transformă în atribute atomice prin
proiectare (descompunere) şi eventual redenumire;
 pentru câmpurile repetitive – introduc atâtea tuple câte apariţii are
câmpul respectiv, fiecare tuplu conţinând o apariţie a câmpului.
Reprezentarea grafică:
Eliminarea grupurilor
Tabel repetitive & atomizare Relaţie 1NF
nenormalizat
Aplicând procesul la PERSONAL → PERSONAL1
→Tabelul – cantitate mare de informaţie redundantă datorită grupului
13repetitiv. Pentru a înlătura se descompune (prin proiecţie) în două
PERS1 & COPII
MARCA# - cheie străină – asigură legătura cu tabelul PERS1 – restul
date proprii copiilor. MARCA# este cheie primară? → cheie primară
„Nume şi Prenume” + „Data-Naşterii”.
→ două tabele în prima formă normală, recompunerea tabelelor (prin
echijoin) → relaţia iniţială, deci descompunerea este fără pierderi,
adică: PERSONAL = PERS1 [MARCA# = MARCA#] COPII
4. Teorema de descompunere
Descompunerea se utilizează pentru a evita anomaliile de stocare.
Teorema de descompunere reversibilă (Delobel & Cassey 1973): R o
relaţie definită pe mulţimea atributelor Ω, R(Ω) şi A,B,C o
partiţionare a lui Ω, astfel ca DF:A→B. R(Ω)poate fi descompus
fără pierderi, în relaţiile R(Ω1 )şi R(Ω2 ), cu
Ω1=A U B – reuniunea atributelor din DF
Ω2=A U C – reuniunea atributelor care nu fac parte din DF.
→ Descompunerea – izolarea a două concepte care iniţial erau în
14acelaşi tabel → transformă o dependenţă intra-relaţie într-o
dependenţă inter-relaţie.
Dezavantaj – migrare de atribute – atributele din grupul A (Marca#) se
dublează.
5. A doua formă normală
O relaţie – în a doua formă normală (2NF), dacă 1NF & orice atribut
care nu face parte din cheia primară, DFT de cheia primară → nici un
atribut care nu face parte din cheia primară nu depinde funcţional de o
parte a cheii primare.
Relaţia PERS1 este în 2NF – MARCA# - singur atribut – celelalte
atribute DFT de cheia primară. Tabelul COPII nu este în 2NF,
(Alocaţia DF de Data - Naşterii parte a KP → nu există DFT: KP
(Nume şi Prenume, Data Naşterii)).
→ o serie de anomalii:
 anomalia de inserare – nu se poate introduce Alocaţia, care depinde
de Data-Naşterii până când nu se introduce şi numele copilului, deşi
alocaţia nu depinde de acest parametru;
 anomalia de ştergere – prin ştergerea numelui unui copil (care face
parte din cheia primară) – riscul pierderii legăturii dintre data naşterii
şi alocaţie;
 anomalii de punere la zi – pentru a pune la zi perechea (Data-
Naşterii, Alocaţie) – 2 strategii:
15 dacă se pune la zi – prima apariţie – inconsistenţă;
 pentru a pune la zi toate apariţiile – analizat fiecare articol → o
operaţie foarte costisitoare.
→ aducere la 2NF, prin T descompunerii lui Delobel & Cassey →
COPII se va descompune în COPIL1 şi COPIL2 (PERSONAL)
Se înlătură redundanţele & anomaliile - DF: Data-Naşterii→Alocaţie nu
mai este în COPIL1. Descompunere fără pierderi, adică prin
recompunere celor două tabele se regăseşte tabela iniţială:
COPII = COPIL1 [Data-Naşterii = Data-Naşterii] COPIL2
Schematic:

Teorema de
Relaţia descompunere
Relaţie 2NF
1NF
Se izolează
dependenţa parţială de
cheia primară
6. Forma a 3-a normală (3NF) şi variantele (3 ½ NF)
3NF - mai multe definiţii, dintre care 3 sunt mai importante:
16
O relaţie în 3NF (Codd ‚70 - 3NF) - 2NF & între două atribute
care nu sunt cheie nu există o dependenţă tranzitivă.
Un atribut C depinde tranzitiv de atributul A dacă au loc DF între A
şi C, A şi B, respectiv între B şi C - schema dependenţelor
funcţionale are forma: A B
C
Formulare echivalentă: o relaţie este în 3NF - 2NF & nu există DF
între atributele ce nu sunt cheie.
A doua definiţie: Codd în 1971 = forma BCNF / Boyce-Codd
Normal Form: R este în BCNF dacă pentru orice mulţime de
atribute A pentru care există un atribut din C(A) (C(A) -
mulţimea atributelor din R care nu fac parte din A), care
depinde funcţional de A, are loc proprietatea că orice atribut din
R depinde funcţional de A [Miranda&Busta, Gardarin] R –
BCNF ↔singurele DF elementare sunt cele prin care o cheie
determină 1 atribut.
A treia definiţie a 3NF Sharman: O relaţie este în 3NF dacă
17orice determinant este o cheie (primară / candidat).
Ideea de bază este deci aceea că: fiecare relaţie conţine
un singur concept semantic.
Fie PERS1M. Este în 2NF, nu este în a 3NF, deoarece între
atributele care nu sunt cheie, Data-Angajării şi Ore-
Lucrate, pe de o parte, şi Salar-Brut, pe de altă parte,
există o relaţie funcţională. Izolând această relaţie, din
PERS1M se obţin tabelele PERS11 & PERS12.
Se elimină anomalii legate de prezenţa
DF: (Data Angajării, Ore Lucrate → Salar Brut)
& descompunerea este fără pierderi:
PERS1M = PERS11 [Data Angajării, Ore Lucrate =
Data Angajării, Ore Lucrate] PERS12
Trecerea de la 2NF la 3NF se realizează prin izolarea DF
tranzitive şi aplicând teorema de descompunere.
Schematic are loc fenomenul:
18
Teorema de descompunere
Relaţia 2NF Se izolează dependenţele Relaţie 3NF
tranzitive între atribute care nu
sunt chei

Observaţie. A doua şi a treia definiţie sunt echivalente şi sunt mai restrictive


decât 3NF.

BNCF - mai generală ca forma 3NF: relaţia PERS12 este 3NF. Ipoteză:
realizarea salarului brut → angajatul lucrează un număr de ore → apare o
DF: Salar Brut → Ore Lucrate
→ relaţia nu este în BCNF - schematic relaţiile se poate observa că au loc
dependenţele conform figurii:

Data Angajării (1)


  Salar Brut
Ore Lucrate
PERS121 este format numai din cheie (ALL KEY) deci nu are nici un atribut care să nu
fie cheie şi că descompunerea este fără pierderi, deci:
19 PERS12 = PERS121 [Ore lucrate = Ore lucrate] PERS122
 
Schematic operaţia se poate reprezenta astfel:

Relaţia Teorema de descompunere Relaţie BCNF


3NF Se izolează dependenţele
dintre atributul ne-cheie şi
o parte a cheii primare

• Observaţii.
• BCNF fiind mai generală ca 3NF se consideră că este forma 3 ½.
• Orice bază de date pentru a fi corect proiectată se aduce cel puţin până la a 3NF.

7. Tipuri de conservare

Observaţie. R are o descompunere în relaţiile R1, R2,..., Rn, este fără pierdere, dacă
este reversibilă. Aceasta este o condiţie necesară de descompunere şi se referă la
extensia bazei de date (datele ei) nu şi la intensia (structura) ei.
Teorema
20 lui Ullman. Fie o descompunere al lui R în două relaţii R1şi R2. Dacă
se notează cu D mulţimea tuturor DF din R, descompunerea este fără pierderi,
= reversibilă ↔ dependenţele DF de la R1∩ R2 la R1- R2 / R2- R1 fac parte din
închiderea lui D.
 
Observaţie. Teorema lui Delobel-Cassey satisface condiţiile teoremei lui
Ullman. Într-adevăr, DF aplică A= R1∩ R2, în B= R1- R2. → descompunere
pe baza teoremei lui Ullman conservă datele.
 
Fie R o relaţie, F o mulţime de DF în R şi A un grup de atribute. Se numeşte
proiecţia mulţimii F pe A şi se notează cu F(A), mulţimea dependenţelor din
închiderea lui F, de forma, DF:B→C, cu B,C submulţimi din A.

Fie {R1, R2,..., Rn} o partiţionare a lui R. Această partiţionare conservă


dependenţele, dacă şi numai dacă închiderea lui F, notată cu F+ este egală
cu reuniunea dependenţelor F(Ri) pentru i=1,2,...,n.

Observaţie. Cele două tipuri de conservări sunt independente. Exemple.


1. Fie R(A,B,C) cu F = {A→B, B→C}. Fie descompunerea lui R în R 1(A,B),
R2(B,C). Se poate observa că descompunerea conservă datele, deci este
21 reversibilă, deoarece R1∩ R2 =B; există dependenţă B→C= R2- R1. F nu
conservă însă dependenţele deoarece A→C care face parte din F +, dar nu
face parte din reuniunea lui F(R1) cu F(R2).
2. Fie R(A,B,C,D) şi F = {A→B, C→D}, descompunerea lui R în R 1(A,B),
R2(C,D) conservă dependenţele deoarece F +=F(R1)U F(R2), dar nu conservă
datele deoarece R1∩ R2 =Φ şi deci nu există DF de la acesta la R 1- R2 / R2-
R1.

→Teoremei lui Rissanen: Fie R1, R2 o descompunere a lui R şi F mulţimea


dependenţelor din R. Descompunerea este reversibilă şi conservă
dependenţele din F dacă şi numai dacă:
i. F poate fi dedus din F(R1) şi F(R2) (conservă dependenţele).
ii. Atributele comune ale lui R1 şi R2 formează o cheie cel puţin în una din
relaţiile R1 / R2, adică există o dependenţă de la R1∩ R2 la R1- R2 / R2- R1.

Observaţii. Aceste probleme au fost tratate de foarte mult în literatura de


specialitate. Câteva rezultate:
1. Teorema lui Delobel şi cea a lui Cassey asigură reversibilitatea
descompunerii dar nu şi conservarea dependenţelor.
22
2. S-a demonstrat (Ullman 1980), că orice relaţie are cel puţin o
descompunere reversibilă în 3NF, cu conservarea dependenţelor. El a
dat şi un algoritm de o astfel de descompunere.
3. Tot el generalizând rezultatele lui Zani; Bernstein a demonstrat că orice
relaţie are cel puţin o descompunere reversibilă în relaţii BCNF; aceste
descompuneri nu conservă însă dependenţele, dând algoritmi de
descompunere şi în aceste cazuri.

Forme normale de ordin superior & alte teorii ale normalizării.


23 Tematică laborator
Database Programming with SQL
 Section 5 - Single Row Functions Part II
• 5-1 Conversion Functions
• 5-2 NULL Functions
• 5-3 Conditional Expressions
 Section 6 - JOINs Part I
• 6-1 Cross Joins and Natural Joins
• 6-2 Join Clauses
• 6-3 Inner versus Outer Joins
• 6-4 Self-Joins and Hierarchical Queries
24 Tematică laborator
Database Programming with SQL
 Section 7 - JOINs Part II
• 7-1 Oracle Equijoin and Cartesian Product
• 7-2 Oracle Nonequijoins and Outer Joins

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