Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3...

51
Dependențe funcționale. Formele normale ale unei relații. Curs 3

Transcript of Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3...

Page 1: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependențe funcționale. Formele normale ale unei relații.

Curs 3

Page 2: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Exemplu: relaţia MovieList

• Constrângeri:• Fiecare film are un regizor

• Fiecare cinematograf are un număr de telefon

• Fiecare cinematograf începe proiecţia unui singur film al un moment dat

• Ce am putea alege ca si cheie primară?

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 3: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

MovieList -> Anomalie de inserare

• Se poate insera următorul film?

INSERT INTO MovieList (Title,Director)

VALUES ('I.T.', 'Moore')

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 4: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

MovieList -> Anomalie de ștergere

• Apare vreo problemă la următoarea operație de ștergere?

DELETE FROM MovieList

WHERE Director = 'Jackson'

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 5: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

MovieList -> Anomalie de actualizare

• Apare vreo problemă la următoarea operație de actualizare?UPDATE MovieList

SET Phone = 441133

WHERE Title = 'The Hobbit' and Cinema = 'Cinema City'

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 6: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Anomalii

• Din cauza proiectării defectuase apar următoarele probleme:

• Anomalie de inserare – nu putem adăuga o înregistrare nouă, daca nu se cunosc toate câmpurile din cheia primară• Cauză: Amestecarea a două entități diferite în aceeași relație

• Anomalie de ștergere – dacă ștergem filmele regizorului Peter Jackson pierdem informațiile despre cinema Cinema City• Cauză: Amestecarea a două entități diferite în aceeași relație

• Anomalie de actualizare – schimbarea numărului de telefon pentru un cinema poate duce la inconsistențe• Cauză: Redundanță în relație

Page 7: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Scopul proiectării bazei de date

• Evitarea redundanței și a anomaliilor:• Pot insera date la fiecare entitate în parte

• Pot șterge date pentru o entitate (fără a afecta alte entități)

• Modificările care țin cont de cheile primare si străine nu pot duce la inconsistențe

Page 8: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Rafinarea unei structuri defectuoase

• Cum determinăm dacă o structură este “bună” sau ”defectuoasă”?

• Cum transformăm o structură defectuoasă într-una bună?

• Teoria dependenţelor funcţionale furnizează o abordare sistematică a celor două întrebări

Page 9: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Rafinarea unei structuri defectuoase prindescompunerea în mai multe structuri “bune”

Title Director

The Hobbit Jackson

The Lord of the Rings3 Jackson

Adventures of Tintin Spielberg

War Horse Spielberg

Cinema Phone

Cinema City 441111

Odeon 442222

Cinema Time Title

Cinema City 11:30 The Hobbit

Cinema City 14:30 The Lord of the Rings3

Odeon 11:00 Adventures of Tintin

Odeon 14:00 The Lord of the Rings3

Odeon 16:30 War Horse

MoviesCinema

Screens

Page 10: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependenţe funcţionale

A → B

A, B sunt submulţimi de atribute ale R

“A determină funcţional B”

sau

“B depinde functional de A”

Page 11: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Definiţie dependenţe funcţionale

• Dependenţa funcţională A → B este satisfăcută de R dacă şi numaidacă pentru orice instanţă a lui R, oricare două tupluri t1 şi t2 pentrucare valorile lui sunt identice vor avea de asemenea valori identicepentru B

• Fie A și B două submulțimi de atribute pentru relația R, 𝑡1, 𝑡2 tupluri din instanța r(R) și πA (𝑡1) proiecția înregistrării 𝑡1 pe mulțimea de atribute A.

A → B⇔ (∀𝑡1, 𝑡2 ∈ 𝑟 𝑅 : πA (𝑡1) = πA (𝑡2) ⇒ πB (𝑡1) = πB(𝑡2))

Page 12: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Definiţie dependenţe funcţionale

• Dependenţa funcţională A → B este satisfăcută de R dacă şi numai dacăpentru orice instanţă a lui R, oricare două tupluri t1 şi t2 pentru care valorilelui sunt identice vor avea de asemenea valori identice pentru B

• O dependenţă funcţională A → B este trivială dacă B ⊆ A

• O dependenţă funcţională A → B este totală/completă dacă eliminarea oricărui atribut din A are ca rezultat anularea dependenței• Adică nu există nici o submulțime C ⊆ A, astfel încât să aibă loc C → B

• O dependenţă funcţională A → B este parțială dacă există un atribut care poate fi eliminat din A şi totuşi dependenţa să se menţină.

Page 13: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependenţe funcţionale

• Ce dependențe funcționale puteți identifica?

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 14: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependenţe funcţionale

• Ce dependențe funcționale puteți identifica?• Title → Director• Cinema → Phone• Cinema, Time → Title (doar daca un cinema are o singură sală)

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

Page 15: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependenţe funcţionale

• Atenție. Dependențele funcționale depinde de semantica schemei bazei de date, nu de instanța bazei de date!

Title Director Composer

Schindler’s List Spielberg Williams

Saving Private Ryan Spielberg Williams

North by Northwest Hitchcock Herrmann

Angela’s Ashes Parker Williams

Vertigo Hitchcock Herrmann

• Au loc următoarele dependențe funcționale?• Composer → Director ? • Director → Composer ?

Page 16: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Dependenţe funcţionale

Title Director Composer

Schindler’s List Spielberg Williams

Saving Private Ryan Spielberg Williams

North by Northwest Hitchcock Herrmann

Angela’s Ashes Parker Williams

Vertigo Hitchcock Herrmann

• Au loc următoarele dependențe funcționale?• Composer → Director ? – NU pentru ca e încălcată de instanță

• Director → Composer ? – instanța dată satisface dependența, dar asta NU înseamnă că dependența are loc în relația Movie!

Page 17: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Exemplu

Distribuitor ( Nume, AdresaDistribuitor, Produs, Pret)

• Cine ar putea fi cheia primară?

• Ce dependențe funcționale identificați?

Page 18: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Exemplu

Distribuitor ( NumeDistribuitor, AdresaDistribuitor, NumeProdus, PretProdus)

• Cine ar putea fi cheia primară? – (NumeDistribuitor, NumeProdus)

• Ce dependențe funcționale identificați?• NumeDistribuitor → AdresaDistribuitor

• NumeDistribuitor, NumeProdus → PretProdus

• NumeDistribuitor, NumeProdus → NumeProdus (trivială)

• NumeDistribuitor, NumeProdus → AdresaDistribuitor (parțială)

• NumeDistribuitor → NumeDistribuitor (trivială)

Page 19: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Superchei, chei & atribute prime

• Dacă C este o cheie pentru 𝑅(𝐴1,𝐴2,…,𝐴𝑛), atunci 𝐶 → 𝛽, ∀𝛽⊂{𝐴1,𝐴2,…,𝐴𝑛}. Deoarece o astfel de dependență este valabilă tot timpul, ea nu se va elimina prin descompuneri.

• Un atribut A se numeşte atribut prim dacă A face parte dintr-o cheie a lui R; în caz contrar, A se numeşte atribut neprim.

Page 20: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunerea relaţiilor

• Descompunerea unei relaţii R este o mulţime de (sub)relaţii {R1, R2, ..., Rn} astfel încât:• fiecare Ri ⊆ R și

• R = ∪ Ri

• Dacă r este o instanţă din R, atunci r se descompune în {r1,r2,...,rn},unde fiecare ri= 𝜋Ri(r).

Page 21: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunerea relaţiilor - Exemplu

• MovieList( Title, Director, Cinema, Phone, Time)

se descopume în:

• (Title, Director)

• (Cinema, Phone)

• (Cinema, Time, Title)

Page 22: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Proprietăţile descompunerii relaţiilor

1. Descompunerea trebuie să păstreze informaţiile – Descompunere cu joncțiune fără pierderi (Lossless-Join Decomposition)• Datele din relaţia originală = Datele din relaţiile descompunerii

• Crucial pentru păstrarea consistenţei datelor!

2. Descompunerea trebuie să respecte toate dependențele funcționale (DF)• Dependenţele funcţionale din relaţia originală = reuniunea dependenţelor

funcţionale din relaţiile descompunerii

• Facilitează verificarea violărilor DF

Page 23: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

1. Descompunerea trebuie să păstrezeinformaţiile• Cu alte cuvinte putem reconstrui r prin jonctiunea (join) proiecțiilor

sale {r1,r2, ... ,rn}

• Descompunere cu joncțiune fără pierderi:

r = π𝑅1𝑟 ⋈… ⋈ π𝑅𝑛

𝑟

• Observație: daca {R1, …, Rn} e o descompunere a R, atunci pentru orice instanta r din R, avem

r ⊆ π𝑅1𝑟 ⋈… ⋈ π𝑅𝑛

𝑟

Page 24: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

MovieList( Title, Director, Cinema, Phone, Time)

Title Director

The Hobbit Jackson

The Lord of the Rings3 Jackson

Adventures of Tintin Spielberg

War Horse Spielberg

Cinema Phone

Cinema City 441111

Odeon 442222

Cinema Time

Cinema City 11:30

Cinema City 14:30

Odeon 11:00

Odeon 14:00

Odeon 16:30

M3

M4

M2

Cinema Title

Cinema City The Hobbit

Cinema City The Lord of the Rings3

Odeon Adventures of Tintin

Odeon The Lord of the Rings3

Odeon War Horse

M1

Page 25: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

M1 ⋈ M2 ⋈ M3 ⋈ M4

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Hobbit Jackson Cinema City 441111 14:30

The Lord of the Rings3 Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

The Lord of the Rings3 Jackson Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

The Lord of the Rings3 Jackson Odeon 442222 16:30

Adventures of Tintin Spielberg Odeon 442222 11:00

Adventures of Tintin Spielberg Odeon 442222 14:00

Adventures of Tintin Spielberg Odeon 442222 16:30

...

Page 26: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi

• Întrebarea 1: Cum determinăm dacă {R1, R2} este o descompunere cu joncţiuni fără pierderi a lui R?

• Întrebarea 2: Cum descompunem R în {R1, R2 }astfel încât aceasta e cu joncţiuni fără pierderi?

Page 27: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi

• Întrebarea 1: Cum determinăm dacă {R1, R2} este o descompunere cu joncţiuni fără pierderi a lui R?

• Descompunerea lui R în {R1, R2} este cu joncţiuni fără pierderi dacă şinumai dacă are loc una din dependențele funcționale:• R1 ∩ R2 → R1 sau

• R1 ∩ R2 → R2

Page 28: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi

• Întrebarea 2: Cum descompunem R în {R1, R2 } astfel încât aceasta e cu joncţiuni fără pierderi?

• Corolar: Dacă α → β este satisfăcută pe R şi α ∩ β = ∅, atuncidescompunerea lui R în {R – β, α ∪ β } este o descompunere cu joncţiuni fără pierderi.

Page 29: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi -Exemplu• R(A,B,C) cu dependențele funcționale: F = {A → B}

• Descompunerea {AB, AC} e cu joncțiuni fără pierderi deoarece

• AB ∩ AC= A și A → AB

• Descompunerea {AB, BC} nu e cu joncțiuni fără pierderi deoareceAB ∩ BC = B și nici una din dependenţete B → AB sau B → BC nu sunt respectate de R

Page 30: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi -Exemplu

A B C

a1 b1 c1

a2 b1 c2

A B C

a1 b1 c1

a2 b1 c2

A B

a1 b1

a2 b1

A C

a1 c1

a2 c2

r r1 r2 r1 ⋈ r2

A B C

a1 b1 c1

a2 b1 c2

A B C

a1 b1 c1

a1 b1 c2

a2 b1 c1

a2 b1 c2

A B

a1 b1

a2 b1

B C

b1 c1

b1 c2

r r1 r2 r1 ⋈ r2

Page 31: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere cu joncțiune fără pierderi

• Tranzitivitate:

Dacă {R1, R2} este o descompunere cu joncţiuni fără pierderi a lui R, şi dacă {R1_1, R1_2} e o descompunere cu joncţiuni fără pierderi a luiR1, atunci {R1_1, R1_2, R2} e o descompunere cu joncţiuni fără pierderi a R:

Page 32: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Title Director

The Hobbit Jackson

The Lord of the Rings3 Jackson

Adventures of Tintin Spielberg

War Horse Spielberg

Cinema Phone Time Title

Cinema City 441111 11:30 The Hobbit

Cinema City 441111 14:30 The Lord of the Rings3

Odeon 442222 11:00 Adventures of Tintin

Odeon 442222 14:00 The Lord of the Rings3

Odeon 442222 16:30 War Horse

MoviesScreens

Title Director Cinema Phone Time

The Hobbit Jackson Cinema City 441111 11:30

The Lord of the Rings3 Jackson Cinema City 441111 14:30

Adventures of Tintin Spielberg Odeon 442222 11:00

The Lord of the Rings3 Jackson Odeon 442222 14:00

War Horse Spielberg Odeon 442222 16:30

MovieList

Page 33: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Title Director

The Hobbit Jackson

The Lord of the Rings3 Jackson

Adventures of Tintin Spielberg

War Horse Spielberg

Cinema Phone Time Title

Cinema City 441111 11:30 The Hobbit

Cinema City 441111 14:30 The Lord of the Rings3

Odeon 442222 11:00 Adventures of Tintin

Odeon 442222 14:00 The Lord of the Rings3

Odeon 442222 16:30 War Horse

Movies Screens

Cinema Time Title

Cinema City 11:30 The Hobbit

Cinema City 14:30 The Lord of the Rings3

Odeon 11:00 Adventures of Tintin

Odeon 14:00 The Lord of the Rings3

Odeon 16:30 War Horse

Screens

Cinema Phone

Cinema City 441111

Odeon 442222

Cinema

Page 34: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Forme Normale

• Dependenţele funcţionale pot fi utilizate pentru identificareaproblemelor de proiectare şi sugerează posibile îmbunătăţiri

• Nicio DF (în afară de faptul ca orice atribut depinde de cheie):nu avemredundanţe

• Descompunerea trebuie folosită cu "măsură":• Este necesară o rafinare? Există motive de descompunere a relaţiei?

• Ce probleme pot rezulta prin descompunere?

Page 35: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Forme Normale

• Dacă o relaţie se află într-o formă normală particulară avem certitudinea căanumite categorii de probleme sunt eliminate/minimizate → ne ajută sădecidem daca descompunerea unei relaţii este necesară sau nu.

• Normalizare:• Fiecare relație corespunde unei singure entități (sau unei relații dintre două entități în

cazul modelării unui M:N)• Pe cât posibil nu apar redundanțe• Nu apar anomalii la operațiile de inserare, modificare, ștergere• Sunt definite și se respectă constrângerile (cheile primare, cheile străine)

• Obs. Soluția pentru normalizare este de obicei descompunerea relației, dar această descompunere trebuie obligatoriu să fie cu joncțiune fără pierderi

Page 36: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Forme Normale

• Formele normale bazate pe DF sunt:

• prima formănormală (1NF),

• a doua formă normală (2NF),

• a treia formă normală (3NF),

• forma normală Boyce-Codd (BCNF).

BCNF ⊆ 3NF ⊆ 2NF ⊆ 1NF

Page 37: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

1NF

• Definiţie. O relaţie se află în Prima Formă Normală (1NF) dacă fiecareatribut al relaţiei poate avea doar valori atomice (deci listele şimulţimile sunt excluse)

(această condiţie este oarecum implicită conform definiţiei modeluluirelaţional)

Page 38: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

1NF - Contraexemplu

ClientD LastName FirstName Product

K1 Nuhr Dieter S II

K2 Pelzig Erwin iPhone 5, iPad, Vaio

K3 Gruber Monika Nexus, Galaxy Tab, Kindle

Clients (ClientD, LastName, FirstName, Product)

Descompunere

Clients (ClientD, LastName, FirstName)ClientsProducts (ClientD, Product)

ClientD LastName FirstName

K1 Nuhr Dieter

K2 Pelzig Erwin

K3 Gruber Monika

ClientD Product

K1 S II

K2 iPhone 5

K2 iPad

K2 Vaio

K3 Nexus

K3 Galaxy Tab

K3 Kindle

Page 39: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

2NF

• Spunem că avem o dependenţă funcţională parţială într-o relaţieatunci când un atribut neprim este dependent funcţional de o parte a cheii primare a relaţiei (dar nu de întreaga cheie).

• Definiţie. O relaţie se află în A Doua Formă Normală(2NF) dacă este1NF şi nu există un atribut neprim care depinde parţial de o cheie candidat.

• Adică orice atribut neprim depinde total/complet de orice cheie candidat a relației.

Page 40: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

2NF – Contraexemplu

Exam (Student,Course, Teacher, Grade)

• Cheia primară: (Student, Course)

• Student, Course → Teacher e dependență parțiala

• Descompunere:• Enrolled (Student,Course, Grade)

• Courses (Course, Teacher)

Page 41: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

3NF

• Definitie. O relaţie R ce satisface dependenţele funcţionale F se află în A Treia Formă Normală (3NF) dacă, pentru toate dependențele funcționale A → B din F+ (nu doar cele date, ci și cele care se pot deduce) are loc una din următoarele:• B ⊆ A (trivială), sau• A este o supercheie pentru R, sau• B este un atribut (sau o mulțime de atribute) prim.

• Definiție. O relaţie R se află în A Treia Formă Normală (3NF) dacă este în 2NF și nici un atribut neprim nu depinde tranzitiv de o cheie candidat.

• Descompunerea cu joncţiune fără pierderi & cu păstrarea dependenţelora relaţiei R într-o mulţime de relaţii 3NF este întotdeauna posibilă.

Page 42: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

3NF - Contraexemplu

• Dissertation(Student, Title, Teacher, Department)

• Teacher → Department nu respectă nici una din condiții:• Teacher – nu e cheie

• Department – nu e atribut prim

• Dependența nu e trivială

• Descompunere:• Dissertation (Student, Title, Teacher)

• Teachers (Teacher, Department)

Page 43: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

BCNF

• Definiţie. O relaţieR ce satisface dependenţele funcţionale F se află înForma Normală Boyce-Codd (BCNF) dacă, pentru toate dependențele funcționale A → B din F+ (nu doar cele date, ci și cele care se pot deduce) are loc una din următoarele:• B ⊆ A (trivială), sau• A este o supercheie pentru R

• R este în BCNF dacă singurele dependenţe funcţionale satisfăcute de R suntcele corespunzătoare constrângerilor de cheie.

• Dacă R este în BCNF, evident este şi în3NF.

• Dacă R este în3NF, este posibil să apară anumite redundanţe. Este un compromis, utilizat atunci când BCNF nu se poate atinge.

Page 44: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

BCNF – Contraexemplu

• Schedule(Day, Route, Bus, Driver)

• Cheia primară: (Day, Route, Bus)

• Fiecare șofer are un autobuz asignat: Driver → Bus• Dependența nu respectă condițiile de BCNF

Page 45: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Forme Normale bazate pe DF1NF – toate valorile atributelor sunt atomice

2NF – toate atributele non-cheie depind de întreaga cheie (nu sunt dependenţe parţiale)

3NF – tabele în 2NF şi toate atributele non-prime depind doar de cheie (nu sunt depedenţe tranzitive)

BCNF – Toate dependenţele sunt date de chei

Page 46: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

"Strategia" de normalizare

• BCNF prin descompunere cu joncţiune fără pierderi şi păstrareadependenţelor (prima alegere)

• 3NF prin descompunere cu joncţiune fără pierderi şi păstrareadependenţelor (a doua alegere)

Obs. Uneori dependenţele nu pot fi păstrate pentru a obţine BCNF.

Page 47: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunerea în BCNF

• Fie relaţia R cu dependenţele funcţionale F. Dacă α → β nu respectăBCNF, descompunem R în:

R – β și α ∪ β.

• Aplicarea repetată a acestei idei va conduce la o colecţie de relaţiicare

• Sunt în BCNF;

• Conduc la joncţiune fără pierderi;

• Garantează terminarea.

Page 48: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunerea în BCNF

• R(C, S , J, D, P, Q, V), C – cheie primară• F ={ JP → C, SD → P, J → S}• SD → P nu respectă BCNF ⇒ descompunem în (S,D,P) și (C,S,J,D,Q,V)• J → S nu respectă BCNF ⇒ (C,S,J,D,Q,V) se descompune în

(J, S) și (C, J, D, Q, V)• Descompunerea finală a lui R este (S,D,P) , (J, S) și (C, J, D, Q, V) – cu

joncțiune fără pierderi, dar fără a păstra dependențele

• Obs. În general, mai multe dependenţe pot cauza nerespectarea BCNF. Ordinea în care le “abordăm” poate conduce la decompuneri de relaţiicomplet diferite!

Page 49: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunerea în BCNF

• În general, descompunerea în BCNF nu păstrează dependenţele.

• Exemplu. R(C, S, J, P, D, Q, V) descompus în (S, D, P), (J, S) şi (C, J, D, Q, V) nu păstrează dependenţele iniţiale {JP → C, SD → P, J → S}).

• ! Adăugând (J,P,C) la mulţimea de relaţii obţinem descompunere cu păstrarea dependenţelor.

BCNF & redundanţă

Page 50: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

BCNF vs 3NF

• BCNF: joncţiune fără pierderi (posibil să nu păstreze dependenţele)

• 3NF: joncţiune fără pierderi& păstrare dependenţe

• R(Course, Teacher, Time) cu DF

Course → Teacher;

Teacher, Time → Course

• Chei: {Course, Time} şi {Teacher, Time}

• R este în 3NF dar nu în BCNF

• Descompunere BCNF:• R1(Course, Teacher), • R2(Course, Time)} este (doar) cu joncţiune fără pierderi

Page 51: Dependențefuncționale Formele normale ale unei relațiidianat/BD_postuniv/curs/Curs3.pdfCurs 3 Exemplu: relaţiaMovieList •Constrângeri: •Fiecare film are un regizor •Fiecare

Descompunere

• Excesul poate fi nociv!

• Exemplu:

R = (Teacher,Dept,Phone,Office)

cu DF F = {Teacher → Dept, Phone, Office}

R = (Teacher,Dept,Phone,Office)

R1= (Teacher,Dept) R2= (Teacher,Phone) R3= (Teacher,Office)

• Uneori, din motive de performanţă se practică de-normalizarea