Normalizarea bazei de date

• Normalizarea bazei de date
• • • • • Prima forma normala (1NF – First Normal Form) A doua forma normala (2NF – Second Normal Form) A treia forma normala (3NF – Third Normal Form) Forma normala Boyce-Codd (BCNF – Boyce-Codd Normal Form) A patra forma normala (4NF – Fourth Normal Form)

1

prima forma normala cere si ca fiecare inregistrare sa fie definita astfel incat sa fie identificata in mod unic prin intermediul unei chei primare. Salubritate. Zelda. SuperMario WOW. De exemplu. Sims Zelda. Zelda Servicii publice Politie. o interogare pentru a selecta acele persoane care prefera Zelda si Sims ar trebui sa parcurga fiecare sir “Jocuri preferate”. Salubritate Politie Interogarile pentru a selecta inregistrari pe baza componentei campurilor continand in acelasi timp mai multe valori semnificative sunt foarte dificile.Normalizarea bazei de date Prima forma normala (1NF – First Normal Form) Prima forma normala este o forma normala utilizata in normalizarea bazelor de date. Prima forma normala exclude posibilitatea existentei grupurilor repetitive cerand ca fiecare camp intr-o baza de date sa cuprinda numai o valoare atomica. sa identifice subsirurile “Zelda” si “Sims” si sa selecteze numai acele inregistrari in care apar ambele subsiruri. Sims. Canalizare Politie. Canalizare. De asemenea. 2 Oras Bucuresti Brasov Scornicesti . (1) Mai multe valori semnificative in acelasi camp Exemple: Persoana Ion Maria Daniel Jocuri preferate Doom2. Incalcari ale primei forme normale.

SuperMario WOW. Zelda Persoana Ion Ion Ion Maria Maria Maria Daniel Daniel Jocuri preferate Doom2 Zelda Sims Zelda Sims SuperMario WOW Zelda ID 1 2 3 4 5 6 7 8 Persoana Ion Ion Ion Maria Maria Maria Daniel Daniel Jocuri preferate Doom2 Zelda Sims Zelda Sims SuperMario WOW Zelda (2) Mai multe coloane reprezentand acelasi tip de date/fapte/obiecte Exemple: Persoana Ion Maria Daniel Jocuri preferate(1) Doom2 Zelda WOW Servicii publice Politie Canalizare Politie Jocuri preferate(2) Jocuri preferate(3) Zelda Sims Sims SuperMario Zelda Servicii publice(2) Salubritate Politie Servicii publice(3) Canalizare Salubritate Oras Bucuresti Brasov Scornicesti Interogarile pentru a selecta inregistrari pe baza componentei campurilor repetitive sunt foarte dificile. Zelda.Normalizarea bazei de date Persoana Ion Maria Daniel Jocuri preferate Doom2. o interogare pentru a selecta acele orase care ofera acelasi tip de Serviciu public. Sims. sa spunem “Politie” (acesta putand sa apara in oricare din coloanele “Servicii publice”) va genera cautari in 9 perechi separate de coloane. 3 . De exemplu. Sims Zelda.

Normalizarea bazei de date Oras Bucuresti Brasov Scornicesti Servicii publice Politie Canalizare Politie Servicii publice(2) Salubritate Politie Servicii publice(3) Canalizare Salubritate Oras Bucuresti Brasov Scornicesti Bucuresti Brasov Bucuresti Brasov Servicii publice Politie Politie Politie Salubritate Canalizare Canalizare Salubritate ID 1 2 3 4 5 6 7 Oras Bucuresti Brasov Scornicesti Bucuresti Brasov Bucuresti Brasov Servicii publice Politie Politie Politie Salubritate Canalizare Canalizare Salubritate Pentru a asigura unicitatea unei inregistrari. se va utiliza cheia primara. se asigura unicitatea fiecarei inregistrari. prin introducerea unei coloane aditionale de tip intreg. auto-incrementat. In exemplul de mai sus. 4 .

Daca unul sau mai multe elemente sunt dependente functional numai de o parte a cheii primare. tabelul trebuie modificat in felul urmator: CodComanda ReperID C1 C2 C1 C4 ReperID Cantitate 2 2 21 22 ReperNume 2 Memorie 21 Mouse 22 Tastatura CodComanda ReperID C1 C2 C1 C4 2 2 21 22 ReperNume Memorie Memorie Mouse Tastatura Cantitate 1 2 31 22 1 2 31 22 5 . nu si de ComandaID. Daca tabela are o cheie primara formata din numai un atribut. formata din ComandaID si ReperID.Normalizarea bazei de date A doua forma normala (2NF – Second Normal Form) A doua forma normala cere ca toate elementele unei tabele sa fie dependente functional de totalitatea cheii primare. Exemplu: fie o tabela “Comanda”: CodComanda ReperID C1 C2 C1 C4 2 2 21 22 ReperNume Memorie Memorie Mouse Tastatura Cantitate 1 2 31 22 Cheia primara este o cheie compusa. atunci ea este automat in 2NF (a 2-a forma normala). atunci ele trebuie sa fie separate in tabele diferite. Pentru a fi in 2NF. ReperNume depinde numai de ReperID.

Normalizarea bazei de date A treia forma normala (3NF – Third Normal Form) Toate atributele non-chei ale unei relatii depind numai de chei candidate ale acelei relatii. in care cheia primara (si cheie unica) este Piese de schimb Piese de schimb 1256 1425 1621 ProducatorNume Dacia Daewo Dacia ProducatorAdresa Pitesti Mangalia Pitesti trebuie reorganizata astfel pentru a fi in a 3-a forma normala: Piese de schimb Piese de schimb 1256 1425 1621 ProducatorNume Dacia Daewo Dacia Producator Nume Dacia Daewo Adresa Pitesti Mangalia 6 . the whole key and nothing but the key". la care unii adauga “asa sa ne ajute Codd” ☺). la care unii adauga: "so help me Codd“ (“relatia depinde de cheie. Toate atributele non-cheie sunt (trebuie sa fie) mutual independente. de intreaga cheie si de nimic altceva decat de cheie”. Exemplu: Tabela Piese de schimb. Bill Kent: the relation is based on the key.

cod_autobuz) (S1. se creeaza un nou tabel. (S2. Tabelele rezultate sunt in FNBC (BCNF). A2) apar de cate doua ori in tabela. cu toate acestea.Normalizarea bazei de date Forma normala Boyce-Codd (BCNF – Boyce-Codd Normal Form) Boyce-Codd e o versiune putin mai restrictiva de forma normala 3. cod_cursa C1 C1 C2 C2 C3 cod_sofer S1 S2 S2 S1 S1 oras_plecare Bucuresti Buzau Satu-Mare Brasov Constanta oras_sosire Buzau Bacau Brasov Ploiesti Timisoara cod_sofer S1 S2 S1 cod_autobuz A1 A2 A3 7 . cod_cursa C1 C1 C2 C2 C3 cod_sofer S1 S2 S2 S1 S1 cod_autobuz A1 A2 A2 A3 A1 oras_plecare Bucuresti Buzau Satu-Mare Brasov Constanta oras_sosire Buzau Bacau Brasov Ploiesti Timisoara Se pot elimina astfel de redundante dupa cum urmeaza: din tabelul initial se elimina coloana “cod_autobuz”. o cheie in intregime si numai de o cheie (asa sa ne ajute Codd ☺). toate atributele depinde de o cheie. A1) . cu doar 2 coloane. exista o redundanta. In cazul unei forme normale 3. deoarece perechile (cod_sofer. constituind impreuna cheia primara a noului tabel. cu atributele “cod_sofer” si “cod_autobuz”. Tabelul de mai jos este in 3NF pentru ca toate atributele depind de o cheie si numai de o cheie.

daca dorim sa adaugam. cate una pentru fiecare Arie de distributie. exista redundante in tabela: pentru fiecare Restaurant Jerry’s. se mentioneaza de 3 ori ca se ofera Tip de pizza “Pufos”. Taberei Militari Crangasi Restaurant Pizza Hut Pizza Hut Springtime Springtime Jerry's Jerry's Restaurant Pizza Hut Pizza Hut Springtime Jerry's Jerry's Jerry's Tip de pizza Clasic Pufos Pufos Clasic Clasic Pufos Aria de distributie Dr. Solutia este descompunerea in doua tabele. Taberei Militari Dr. Taberei Militari Crangasi Dr. Taberei Militari Domenii Dr. de ex. la Jerry’s. Pentru ca aici cheia primara este formata din (Restaurant.Normalizarea bazei de date A patra forma normala (4NF – Fourth Normal Form) In exemplul de mai jos. Taberei Militari Domenii Domenii Dr. 3 ori B-C). Tip de pizza. Taberei Militari Crangasi 8 . Dar deoarece varietatile de pizza oferite de un restaurant sunt independente de ariile de distributie. 2. De asemenea. fiecare restaurant livreaza un tip de pizza intr-o arie de distributie. Aria de distributie) si nu exista atribute non-cheie. nu se incalca nici o forma normala anterioara (1. separand dependentele <Restaurant-Tip de pizza> si <RestaurantAria de distributie> Restaurant Pizza Hut Pizza Hut Pizza Hut Pizza Hut Springtime Springtime Jerry's Jerry's Jerry's Jerry's Jerry's Jerry's Tip de pizza Clasic Clasic Pufos Pufos Pufos Clasic Clasic Clasic Clasic Pufos Pufos Pufos Aria de distributie Dr. va trebui sa adaugam 3 inregistrari. tipul “Subtire” pentru Tip de pizza.

Sign up to vote on this title
UsefulNot useful