05 FormeNormale Descompunere vs Sinteza. Doua Cazuri Practice (3)

  • Upload
    andreea

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

BAZE DE DATE

FORMELE NORMALE 1, 2 I 3

Normalizarea prin descompunere i sintez. Dou cazuri practiceUniversitatea Al.I. Cuza Iai Facultatea de Economie i Administrarea AfacerilorDepartamentul de Contabilitate, Informatic economic i Statistic Marin Fotache 1Tutoriale video05a Normalizare. Introducere, specificatii, cazuri practicehttp://1drv.ms/1nFHDj205b_Prima_forma_normalahttp://1drv.ms/1nFHT1w05c_A_doua_forma_normalahttp://1drv.ms/1te6ruJ05d_A_treia_forma_normalahttp://1drv.ms/1nFSRUO05e_A_patra_forma_normalahttp://1drv.ms/1te6BlZ05f_Normalizarea_prin_sintezahttp://1drv.ms/1te6J4P2Scopul normalizriiPornind de o problem real (practic), ncercm s construim o schem rezonabil a bazei de date (dedicate acestei probleme) O schem rezonabil este o schem care preia n BD (i, ulterior, prelucreaz i furnizeaz celor interesai) informaiile relevante, utile, necesare organizaieiCine decide dac o schem rezonabil ?Echipa de proiectareUtilizatorii aplicaie/BD, att la proiectare, ct i la nceputul i pe parcursul folosirii BDProfesorii (n cazul cursului de fa)3Exemple de probleme (reale)Gestiunea unei farmaciiSalarizarea la o companie sau organizaieGestiunea vnzrilorEvidena stocurilorGestiunea activitii unui cabinet veterinarFacturarea serviciilor pentru o firm de televiziune, telefonie i internet prin cabluInformaii despre UEFA Champions League (sau campionate naionale, europene, mondiale)4De la ce pornim n normalizare ?De la specificaiile problemeiSpecificaiile sunt reguli i restricii dup care se organizeaz i deruleaz activitile, procesele, evenimentele, operaiunile (pentru problema dat)Specificaiile depind de:LegislaiePractica managerial, financiar-contabil, operaional din companie etc.Domeniul de activitate i mrimea companieiCerinele clientului (companiei)

5Munca de analist/proiectantMai nti, analistul/proiectantul studiaz specificul problemei (colabornd cu clienii, experii (profesionitii din domeniul problemei), viitorii utilizatori ai aplicaiei i ali analiti), apoi construiete un model (mai mult sau mai puin riguros) al cerinelor problemeiModelul final se va prezenta sub forma unor diagrame de date i procese (pe care le vei studia la Analiza/Proiectarea SI, sau SIFC1+2)6Cum va decurge normalizareaPornim de la specificaiile problemei (simplificndu-le, mai ales n primele cazuri practice)Inventariem toate informaiile necesare (informaii care vor deveni atribute ale BD)Stabilim dependenele dintre atribute (funcionale, de incluziune, ...)Obinem BD ntr-o form normal ct mai avansat (ideal ar fi 5NF, dar ne vom mulumi de multe ori i cu 3NF)Folosind normalizarea prin descompunere aducem BD succesiv n 1NF, 2NF ...Folosind normalizarea prin sintez aducem BD direct n 3NF / 4 NF7Caz practic 1 Biblioteca FEAAScop: Stocarea de informaii privind crile aflate n rafturile bibliotecii FEAA (Corp B UAIC, Etaj 1)

Specificaii minimale:Fiecare carte publicat (n Romnia i strintate) este identificat n mod unic la nivel mondial prin ISBNCrile sunt publicate de edituriO editur i are sediul principal ntr-o localitateBiblioteca FEAA poate avea unul sau mai multe exemplare ale unei cri (ale unui titlu)Biblioteca FEAA (continuare)Specificaii minimale (continuare):Biblioteca FEAA gestioneaz fiecare exemplar atribuindu-i o CotNu exist dou exemplare ale unei cri (sau ale dou) cu aceeai cot (valoarea cotei unui exemplar este unic )Biblioteca FEAA nu mprumut cri la domiciliu (sau birou/laborator) i nici nu gestioneaz cititoriiPentru fiecare carte se preiau toi autoriiPentru a nlesni cutarea, bibliotecarii FEAA asociaz fiecrei cri cuvinte cheie (care semnalizeaz ce subiecte trateaz cartea respectiv)Caz practic 2 FACTURARE (1)Scop: Stocarea de informaii privind facturile emise de o companie, facturile ce reflect vnzri de produse.

Specificaii minimale:Compania i numeroteaz strict facturile emise, fr a mai refolosi vreodat numerele deja alocate;O factur este adresat unui singur client; n timp, unui client i pot fi adresate oricte facturi;Clienii sunt exclusiv persoane juridice (organiza-ii/companii); pentru fiecare client exist o singur persoan de contact, despre care ne intereseaz numele, telefonul i adresa de e-mail ; 10FACTURARE (2)Specificaii minimale (continuare):Pe o factur se consemneaz vnzarea a unu, dou sau mai multe produse;Informaiile care ne intereseaz despre produse sunt: Codul (intern), Denumirea, Unitatea de msur i Procentul TVA; procentul de TVA se aplic la fiecare vnzare a produsului (19%, 9%, 0% sau, mai nou 24%).Pe o factur, un produs apare o singur dat;BD trebuie s furnizeze informaii precum: TVA colectat pentru o factur, valoarea fr i cu TVA a facturii etc.

11I. Normalizare prin descompunerePrima form normalizat (1)Codd: O relaie este n prima form normal dac nici unul dintre domeniile sale nu conine elemente care sunt, la rndul lor, seturi (ansambluri)O relaie aflat n 1FN ca acea relaie n care fiecare atribut prezint numai valori atomice, adic toate atributele sunt ne-decompozabile; R.Riordan: o relaie este n 1FN dac domeniile pe care sunt definite atributele relaiei sunt scalare13Prima form normalizat (2)Connoly i Begg: O relaie n 1FN este o relaie n care intersecia oricrei linii cu oricare coloan conine o valoare i numai unaO relaie n 1FN nu trebuie s conin grupuri repetitive.

Obs: orice relaie n 1FN trebuie s posede cheie primar (atributele din componena cheii primare nu pot avea valori nule)14Biblioteca FEAA (o (mic) poriune)

ISBNTitluEditurAtribute:AnApariieAutoriCote

CuvinteCheieBIBLIOTECA Relaia universal (iniial)Obs:O linie a tabelei BIBLIOTECA se refer la un titlu de carte din care s-au achiziionat unul, dou sau mai multe exemplareCheia primar a tabelei poate fi atributul ISBN Trei dintre atribute Autori, Cote i CuvinteCheie nu sunt atomiceDeocamdat nu atomizm cele trei atribute neatomice (dei ne-am pricepe)LocSediuEdRelaia BIBLIOTECA nu este n prima forma normal !!!Motivul: trei dintre atribute nu sunt atomice (ci seturi sau grupuri repetitive)Trei soluii:Constituirea de grupuri repetitive pe orizontal ex. nlocuirea atributului Autor cu atributele Autor1, Autor2, Autor3...Constituirea de grupuri repetitive pe vertical i modificarea cheii primare din ISBN n (ISBN, Autor, Cot, CuvntCheie)Spargerea relaiei universale (RU) n cte o tabel pentru fiecare atribut neatomic (plus o tabel cu ceea ce rmne din RU)17BIBLIOTECA 1 - Grupuri repetitive pe orizontal

18ISBNTitluEditurAtribute:AnApariieAutor1Cota1

CuvntCheie1BIBLIOTECA1 Grupuri repetitive pe orizontal (continuare)Obs:Cheia primar a tabelei rmne atributul ISBN Pentru crile cu mai puin de patru autori, mai puin de trei exemplare (cote) i mai puin de opt cuvinte cheie o s avem valori NULL Pentru crile cu mai mult de patru autori, mai mult de trei exemplare (cote) i mai mult de opt cuvinte cheie AM NCURCAT-O !!!

LocSediuEdAutor2Autor3Autor4Cota2

Cota3

CuvntCheie2CuvntCheie3CuvntCheie4CuvintCheie5CuvintCheie6CuvintCheie7CuvintCheie8BIBLIOTECA1 - Grupuri repetitive pe orizontal (continuare)Soluia este destul de stupid, ns baza de date este n 1NF !Trebuie s lum n calcul numrul maxim de:AutoriCoteCuvinte Cheiepentru o carte i obinem o structur complet ineficient Soluia poate fi aplicat doar cnd numrul de membri ai setului este cunoscut i fix; de ex:, n loc de atributul (neatomic) Prini putem folosi IdPrinte1_Mama i IdPrinte2_Tata pentru descrierea copiilor ntru BD

BIBLIO-TEC2 - Grupuri repetitive pe vertical (fragment)BIBLIOTECA2 - Grupuri repetitive pe vertical (continuare)ISBNTitluEditurAtribute:AnApariieAutorCota

CuvntCheieObs:Numrul de atribute este redus, ns numrul de nregistrri crete ameitor (este nevoie de o linie pentru fiecare combinaie exemplar (carte) autor cuvnt cheieO nregistrare descrie un subiect (cuvnt cheie) tratat ntr-un exemplar al unei cri scrise de unul dintre autori (ciudat, nu ?)Cheia primar a tabelei se modific: (Cota, Autor, CuvntCheie) Am scpat de ne-atomicitate, adic avem BD n 1NF, dar costul este destul de mare !!!BIBLIOTECA2 este n 1NF !LocSediuEdBIBLIOTECA3 Spargerea relaiei universale (pt. fiecare atribut neatomic)

BIBLIOTECA3 (continuare)CRI {ISBN, Titlu, Editura, LocSediuEd, AnApariie}COTE {ISBN, Cota} AUTORI_CRI {ISBN, Autor}CRI_CUVINTECHEIE {ISBN, CuvntCheie}

Obs:Este prima variant de spargere a BD n mai multe tabeleToate cele patru tabele sunt n 1NFAceast manier de spargere a nu este ntotdeauna funcionalntre tabelele obinute exist cteva diferene; spre ex., n tabela COTE cheia primar e simpl (atributul Cota), n timp ce n celelalte tabele construite pe baza neatomicitii cheia primar este compus

BD BIBLIOTECA n 1 NF(recapitulare)n prima form normal (1NF) baza de date BIBLIOTECA poate s aib (cel puin) trei configuraii: Tabela BIBLIOTECA1 {ISBN, Titlu, Cota1, Cota2, Cota3, Autor1, Autor2, Autor3, Autor4, Editura, LocSediuEd, AnApariie, CuvntCheie1, CuvntCheie2, CuvntCheie3, CuvntCheie4, CuvntCheie5, CuvntCheie6, CuvntCheie7} (varianta 1)Tabela BIBLIOTECA2 {ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie} (varianta 2)Tabelele CRI, COTE, AUTORI_CRI i CRI_CUVINTECHEIE (varianta 3)Prima variant este descalificat (inoperabil)Variantele 2 i 3 vor fi duse n formele normale (normalizate) 2, 3...FACTURARE Relaia universalNrFactNumeClCodFiscalClAdresaClCodPersContactNumePersContactTelPersContactEMailPersContactLocalitCl

DataFactCodProdDenProdUMProcTVAProdCantitPretUnitValoareFrTVA TVAFactur ValoareTotalFactur Atribute calculate (le eliminm):Obs:Relaia este n 1FNO linie din FACTURARE se refer la un produs vndut n cadrul unei facturi- Cheia primar n FACTURARE : (NrFact, CodProd)26BD FACTURARE n prima forma normal 1NFR {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact, CodProd, DenProd, UM, ProcTVAProd, Cant, PretUnit}27Probleme ale bazelor de date aflate n 1NFTeoretic, o BD este normalizat dac este mcar n prima form normal (1NF)De obicei, ns, o BD aflat n 1NF prezint cteva probleme majore:Grad mare de redundan (repetabilitate) a datelorImposibilitatea adugrii unor categorii de informaii (anomalii la inserare)Pierderea coerenei datelor la anumite modificri de informaii (anomalii la modificare)Pierderea uneor informaii la tergerea unor nregistrri (anomalii la tergere)

Anomalii n BD BIBLIOTECA2 {ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie}Redundane:Pe fiecare nregistrare trebuie specificat i valoarea atributului ISBN, i pe cea a atributului AnApariie, chiar dac un titlu are o singur prim apariiePe fiecare nregistrare trebuie specificat i valoarea atributului Editur, i pe cea a atributului LocSediuEd, chiar dac o editur are un singur sediuPentru corectitudinea interogrilor, toi autorii unei cri trebuie combinai cu toate cuvintele cheie ale crii i toate exemplarele (cotele) crii; dac o carte are 5 exemplare, 7 autori i 10 cuvinte cheie, n tabela BIBLIOTEC2 vor fi inserate 5 * 7 * 10 = 350 de nregistrri

Anomalii n BD BIBLIOTECA2 cont. {ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie}Ex. de anomalii la inserare: I1: o editur nu poate fi adugat n tabel pn nu avem mcar o carte tiprit la aceast editurI2: o carte (titlu) nu nu poate fi adugat n tabel fr mcar (cel puin) un autor, mcar un exemplar i mcar un cuvnt cheie Ex. de anomalii la modificare: M1: Dac modificm ntr-o nregistrare valoarea unuia dintre atributele Titlu, Editur, LocSediuEd, AnApariie i exist i alte nregistrri pentru cartea (titlul) respectiv, cum tim care dintre valorile acestor atribute pe celelalte nregistrri (corespunztoare crii respective) sunt corecte ?

Anomalii n BD BIBLIOTECA2 cont. {ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie}

Ex. de anomalii la modificare (continuare): M2: Dac, am precizat greit cota unei cri i descoperim greeala dup ctva timp, va trebui s o reparam n toate nregistrrile n care cota greit apare combinat cu toate valorile atributelor Autor i CuvntCheie (corespunztoare crii respective)Ex. de anomalii la tergere: S1: Dac tergem singura carte pe care o avem aprut la o editur, odat cu cartea pierdem i informaiile despre editura respectiv

Anomalii n BD BIBLIOTECA3CRI {ISBN, Titlu, Editura, LocSediuEd, AnApariie}COTE {ISBN, Cota} AUTORI_CRI {ISBN, Autor}CRI_CUVINTECHEIE {ISBN, CuvntCheie}

Prin comparaie cu BIBLIOTECA2, gradul de redundan i numrul anomaliilor la inserare, modificare, tergere sunt incomparabil mai miciRmn valabile anomaliileI1S1

Anomalii ale BD FACTURARE n 1NF relaia R (1)Risip de spaiu: la fiecare linie dintr-o factur, trebuie introduse i:Numele, codul, i adresa clientuluiDatele despre persoana de contactData facturiiAnomalii la inserarea de nregistrri n RF: Niciun client nu poate introdus n tabela RF pn nu avem factur pentru acestaNiciun produs nu poate fi adugat n tabela RF pn nu apare pe o factur33Anomalii ale BD FACTURARE n 1NF relaia R (2)La modificarea de nregistrri n RF:Dac dup civa ani (i 200 de facturi) o firm client i schimb persoana de contact (sau adresa sediului), pe cte linii trebuie s operm modificarea?La tergerea de nregistrri din RF:Dac tergem singura factur a unui client, tergem i datele despre acestaAnalog n cazul produselor

34A doua forma normal 2NFO relaie se afl n 2NF dac:Este deja n 1NFNu conine dependene funcionale pariale

O baz de date este n 2NF dac toate relaiile care o alctuiesc se afl n 2FN

Orice relaie care conine DF pariale trebuie descompus (spart) pentru a fi conform cu 2FN35Cum testm dac o BD este sau nu n a doua forma normal ?Tabelele care au cheia primar alctuit dintr-un singur atribut sunt deja n 2FNLum n discuie fiecare tabel a BD din prima form normal n care cheia primar este compusInventariem dependenele funcionale ce decurg automat din cheia primarDac mcar una dintre aceste DF este parial, atunci tabela (i, n consecin, baza de date) nu este n 2FN !!!Dac niciuna dintre tabelei primei forme normale nu conine vreo dependen funcional parial, spunem ca baza este date este n 2FN

DF ale cheii primare n BIBLIOTECA2{ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie}(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)TitluEdituraLocSediuEdAnApariie(Cot, Autor, CuvntCheie)ISBNBIBLIOTECA2 nu este n 2FN !Toate cele patru DF sunt pariale ntruct, singur, atributul Cota implic funcional cele patru destinaiiCotCotCotCotTitluEdituraLocSediuEdAnApariieDeci:(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)(Cot, Autor, CuvntCheie)TitluEdituraLocSediuEdAnApariieparialparialparialparialCot ISBNCum aducem o tabel n a doua forma normal ?O spargem !Se constituie cte o tabel distinct pentru fiecare sub-ansamblu (un atribut, dou atribute, ...) din cheia primar a tabelei aflate n1NF, subansamblu care are mcar o destinaie funcional (o destinaie poate fi oricare atribut al tabelei care nu este membru al cheii primare) subansamblul va fi cheia primar a noii tabeleDin tabela iniial (aflat n 1 NF), de obicei, rmn doar atributele care nu sunt destinaii funcionale ale surselor de la punctul anteriorExist situaii cnd din tabela iniial nu mai rmne nimic !BIBLIOTECA2 adus n 2FNPe baza destinaiilor funcionale ale atributului (subansamblului din cheie) Cot obinem tabela:n 1NF: BIBLOTECA2 {ISBN, Titlu, Cot, Autor, Editura, LocSediuEd, AnApariie, CuvntCheie}BIBLIOTECA2_1 {Cot, ISBN, Titlu, Editura, LocSediuEd, AnApariie}Din BIBLIOTECA2 rmne tabela:BIBLOTECA2_2 { Cot, Autor, CuvntCheie}Concluzie: n 2FN tabela BIBLIOTECA2 se sparge n tabelele BIBLIOTECA2_1 i BIBLIOTECA2_2BIBLIOTECA3 este deja n 2NF !Cheile primare ale tabelelor CRI i COTE sunt simple (alctuite dintr-un singur atribut)Cheile primare ale tabelelor AUTORI_CRI i CRI_CUVINTECHEIE sunt compuse, ns aceste tabele nu mai conin niciun alt atribut (posibil destinaie funcional a vreunui sub-ansamblu al cheii primare)

Concluzie: BD BIBLIOTECA3 are n 2 NF aceai structur ca i n 1 NF !Este BD FACTURARE n 2FN ?n 1 NF, BD FACTURARE are structura relaiei R Trebuie identificate dependenele funcionale ce decurg din calitatea de cheie primar a ansamblului (NrFact, CodPr)Din vreuna dintre DF de mai sus este parial, R nu este n 2 NFDac R nu este n 2 NF va trebui spartCheia primar a lui R este format din dou tabele, deci numrul maxim de tabele ce ar putea fi obinute n 2 NF este trei:R1 {NrFact, .}R2 {CodPr, }R3 {NrFact, CodPr} ceea ce rmne din R

DF n relaia R ce decurg din cheia primar (1)R {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact,

NumePersContact, TelPersContact,

EMailPersContact, CodProd, DenProd,

UM, ProcTVAProd, Cant, PretUnit}Sursa DFDestinaii sunt toate celelalte atribute43DF n relaia R ce decurg din cheia primar (2)(NrFact, CodProd) DataFact(NrFact, CodProd) CodFiscalCl(NrFact, CodProd) NumeCl(NrFact, CodProd) AdresaCl(NrFact, CodProd) LocalitCl(NrFact, CodProd) CodPersContact(NrFact, CodProd) NumePersContact44DF n relaia R ce decurg din cheia primar (3)(NrFact, CodProd) TelPersContact(NrFact, CodProd) EMailPersContact(NrFact, CodProd) DenProd(NrFact, CodProd) UM(NrFact, CodProd) ProcTVAProd(NrFact, CodProd) Cant(NrFact, CodProd) PretUnit45DF pariale n R (1)(NrFact, CodProd) DataFact

(NrFact, CodProd) CodFiscalCl

(NrFact, CodProd) NumeCl

(NrFact, CodProd) AdresaCl

(NrFact, CodProd) LocalitCl

(NrFact, CodProd) CodPersContact

(NrFact, CodProd) NumePersContactPPPPPPP46DF pariale n R (2)(NrFact, CodProd) TelPersContact

(NrFact, CodProd) EMailPersContact

(NrFact, CodProd) DenProd

(NrFact, CodProd) UM

(NrFact, CodProd) ProcTVAProdPPPPP47FACTURARE -Trecerea din 1NF n 2NFR { NrFact}R { NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact}, DenProd, UM, ProcTVAProdR { NrFact, CodProd CodProd, Cant, PreUnitR2{R1{}48FACTURARE - Schema n 2NFR1 {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

R2 {CodProd, DenProd, UM, ProcTVAProd}

R3 {NrFact, CodProd, Cant, PretUnit}49Anomalii ale BD BIBLIOTECA2 n 2 NFRedundane:Pe fiecare nregistrare trebuie specificat i valoarea atributului ISBN, i pe cea a atributului AnApariie, chiar dac un titlu are o singur prim apariiePe fiecare nregistrare trebuie specificat i valoarea atributului Editur, i pe cea a atributului LocSediuEd, chiar dac o editur are un singur sediuDac dintr-un titlu (ISBN) se cumpr 10 exemplare, vor exista 10 cote, dar se vor repeta de 10 ori i titlul, editura...

BIBLIOTECA2_1 {Cot, ISBN, Titlu, Editura, LocSediuEd, AnApariie}BIBLIOTECA2_2 { Cot, Autor, CuvntCheie}Anomalii ale BD BIBLIOTECA2 n 2 NF - continuareEx. de anomalii la inserare: I1: o editur nu poate fi adugat n tabela BIBLIOTECA2_1 pn nu avem mcar o carte tiprit la aceast editurI3: o carte (titlu) nu poate fi adugat n tabela BIBLIOTECA2_1 fr a avea mcar un exemplar (cot)Ex. de anomalii la modificare: M2: Dac, am precizat greit cota unei cri i descoperim greeala dup ctva timp, va trebui s o reparam n toate nregistrrile din tabela BIBLIOTECA2_1 n care cota greit apare combinat cu toate valorile atributelor Autor i CuvntCheieEx. de anomalii la tergere: S1: Dac tergem singura carte pe care o avem aprut la o editur, odat cu cartea pierdem i informaiile despre editura respectivAnomalii ale schemei BD BIBLIOTECA3 n 2 NFCRI {ISBN, Titlu, Editura, LocSediuEd, AnApariie}COTE {ISBN, Cota} AUTORI_CRI {ISBN, Autor}CRI_CUVINTECHEIE {ISBN, CuvntCheie}

Rmn valabile anomaliile descrise anterior (ntruct schema bazei nu se modific n 2 ND)I1S1

Anomalii ale BD FACTURARE n 2NFComparativ cu 1NF au fost eliminate o serie de anomaliiPutem introduce un produs nainte de a aprea pe o facturDac am terge singura linie pe care apare un produs, acesta rmne (n tabela R2) Rmn anomalii de inserare, modificare i tergere pentru clieni (adresa, persoan contact)53A treia forma normal 3NFDefiniii:

O relaie se afl n 3NF dac:Este deja n 2NFNu conine dependene funcionale tranzitive

O baz de date este n 3NF dac toate relaiile care o alctuiesc se afl n 3FN

54Cum testm dac o BD este sau nu n a treia forma normal ?Lum n discuie fiecare tabel a BD aflate n a doua form normalInventariem dependenele funcionale ce decurg automat din cheia primarDac mcar una dintre aceste DF este tranzitiv, atunci tabela (i, n consecin, baza de date) nu este n 3FN !!!Dac niciuna dintre tabelei primei forme normale nu conine vreo dependen funcional tranzitiv, spunem ca baza este date este n 3FN

Cum aducem o tabel n a treia forma normal (3 NF) ?O spargem (de-acum avem experien) !Inventariem toate dependenele funcionale n care sursa este un atribut (sau grup de atribute) din afara cheii primare, iar destinaia este, de asemenea, un atribut din afara cheii Se constituie cte o tabel distinct pentru fiecare surs de tipul celor de mai sus surs ce va fi cheia primar a noii tabeleDin tabela spart (aflat n 2 NF), de obicei, rmn doar atributele care nu sunt destinaii funcionale ale surselor de mai susExist situaii cnd din tabela spart nu mai rmne nimic !Problema 3 NF pt. BD BIBLIOTECA2Exist DF n care nici sursa nici destinaia s nu fie atribute-cheie ? DA !!! BIBLIOTECA2_1 {Cot, ISBN, Titlu, Editura, LocSediuEd, AnApariie}BIBLIOTECA2_2 { Cot, Autor, CuvntCheie}ISBNISBNISBNISBNTitluEdituraLocSediuEdAnApariieCotISBNTitluRezult c n tabela BIBLIOTECA2_1 toate DF ce decurg din cheia primar sunt tranzitivei, deci, BIBLIOTECA2_1 nu este n 3 NF !tranzitivBIBLIOTECA2 n 3FN (1)Pe baza destinaiilor funcionale ale atributului non-cheie ISBN obinem tabela:BIBLIOTECA2_1_1 {ISBN, Titlu, Editura, LocSediuEd, AnApariie}Din BIBLIOTECA2_1 rmne tabela:BIBLIOTECA2_1_2 {Cot, ISBN}Supriz ! i n proaspta tabela BIBLIOTECA2_1_1 una dintre DF ce decurg din cheia primar este tranzitiv (deoarece o editur are un singur sediu)ISBNEdituraLocSediuEdceea ce nseamn c tabela BIBLIOTECA2_1_1 nu este n 3 FN !BIBLIOTECA2 n 3FN (2)Concluzie: n 3FN baza de date BIBLIOTECA2 este alctuit din tabelele: BIBLIOTECA2_1_1_1, BIBLIOTECA2_1_1_2, BIBLIOTECA2_1_2 i BIBLIOTECA2_2BIBLIOTECA2_2 { Cot, Autor, CuvntCheie}Tabela BIBLIOTECA2_2 este deja n 3 NF:Pe baza sursei Editura construim tabelaBIBLIOTECA2_1_1_1 {Editura, LocSediuEd}Eliminm LocSediuEd din tabela BIBLIOTECA2_1_1 i rmnem cu:BIBLIOTECA2_1_1_2 {ISBN, Titlu, Editura, AnApariie}BIBLIOTECA2 n 3FN (3)EXEMPLARE_AUTORI_CC { Cot, Autor, CuvntCheie}n final, putem folosi nume sugestive pentru fiecare tabel, aa c schema final 3FN este:EDITURI {Editura, LocSediuEd}CRI {ISBN, Titlu, Editura, AnApariie}COTE {Cot, ISBN}Problema 3NF pt. BD BIBLIOTECA3iar tabelele COTE, AUTORI_CRI i CRI_CUVINTECHEIE rmn neschimbateCRI {ISBN, Titlu, Editura, LocSediuEd, AnApariie}COTE {ISBN, Cota} AUTORI_CRI {ISBN, Autor}CRI_CUVINTECHEIE {ISBN, CuvntCheie}

n 2 NF schema BD BIBLIOTECA3 era compus din:Pe baza discuiei de la trecerea BIBLIOTECA2 n 3 NF spargem numai tabela CRI n:EDITURI { Editura, LocSediuEd }CRI2 {ISBN, Titlu, Editura, AnApariie}

Este BD FACTURARE n 3FN ?n 2 NF, BD FACTURARE are structura: R1 {NrFact, DataFact, CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContact} R2 {CodProd, DenProd, UM, ProcTVAProd} R3 {NrFact, CodProd, Cant, PretUnit}n toate cele trei tabele trebuie identificate dependenele funcionale ce decurg din calitatea de cheie primar (nu-i chiar aa de greu)Din vreuna dintre DF de mai sus este tranzitiv, tabela respectiv nu este n 3 NFDac oricare din R1, R2, R3 nu este n 3 NF va trebui spart (chiar de mai multe ori, n unele cazuri)DF tranzitive n BD FACTURARE (1) NrFact NumeCl

NrFact AdresaCl

NrFact LocalitCl

NrFact CodPersContact

NrFact NumePersContactCodClTCodClTCodClTCodClTCodClT63DF tranzitive n BD FACTURARE (2)NrFact TelPersContact

NrFact EMailPersContact

CodFiscalCl NumePersContact

CodFiscalCl TelPersContact

CodFiscalCl EMailPersContactCodClT CodClTCodPersContactTCodPersContactTCodPersContactT64Trecerea BD FACTURARE din 2NF n 3NF (1)R1 { NrFact, DataFact, CodFiscalCl, CodPersContactR2 { CodProd, DenProd, UM, ProcTVAProd, Cant, PreUnit}R3 { NrFact},CodProd}TTTTTTTR1 {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, NumePersContact, TelPersContact, EMailPersContact}65Trecerea BD FACTURARE din 2NF n 3NF (2)R1 {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact, NumePersContact, TelPersContact, EMailPersContactR2 { CodProd, DenProd, UM, ProcTVAProd, Cant, PreUnit}R3 { NrFact},CodProd}TTTR1 { NrFact, DataFact, CodFiscalCl}R12 {CodPersContact}66BD FACTURARE n 3FNR12 {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

R1 {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

R1 {NrFact, DataFact, CodFiscalCl}

R2 {CodProd, DenProd, UM, ProcTVAProd}

R3 {NrFact, CodProd, Cant, PretUnit}

67BD FACTURARE n 3FN(forma final)PERS_CON {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

CLIENTI {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

FACTURI {NrFact, DataFact, CodFiscalCl}

PRODUSE {CodProd, DenProd, UM, ProcTVAProd}

PROD_FACT {NrFact, CodProd, Cant, PretUnit}

68Forma normal Boyce-Coddn 2 NF se elimin (prin spargerea tabelei) dependenele n care sursele sunt sub-ansambluri ale cheii primare (csau candidat) iar destinaiile atribute ne-cheien 3 NF se elimin (tot prin spargerea tabelei) dependenele n care sursele sunt atribute ne-cheie iar destinaiile tot atribute ne-cheieForma normal Boyce-Codd (BCNF) vizeaz rezolvarea situaiilor n care sursele DF sunt atribute ne-cheie, ns destinaiile sunt atribute din cheie (vezi prezentarea 007)Deocamdat ne oprim aici cu discutarea BCNFO problem a schemei BIBLIOTECA2 n 3 NFDintre tabele 3 NF ale BD BIBLIOTECA2, una conine un evident grad de redundanEXEMPLARE_AUTORI_CC { Cot, Autor, CuvntCheie}Pentru fiecare exmplar cumprat dintr-o carte, trebuie introduse n tabela EXEMPLARE_AUTORI_CC nregistrri pentru toate combinaiile valorilor Cote-Autori-CuvinteCheie pentru cartea respectiv

A patra form normalDestul de rar ntlnit n practicSe bazeaz pe eliminarea Dependenelor Multi-Valoare (vezi prezentarea 004)

O relaie se afl n 4NF dac:Este deja n 3NF (sau BCNF)Nu conine dependene multivaloare

O baz de date este n 4NF dac toate relaiile care o alctuiesc se afl n 4FN

Tabela care conine o DMVDintre toate tabele discutate/obinute n 3 NF, una singur conine DMV: EXEMPLARE_AUTORI_CC { Cot, Autor, CuvntCheie}

CotAutor | CuvntCheie Pe baza DMV tabela se descompune astfel: EXEMPLARE_AUTORI { Cot, Autor}EXEMPLARE_CC { Cot, CuvntCheie}

Schema BD BIBLIOTEC2 n 4 NFEXEMPLARE_AUTORI { Cot, Autor}EDITURI {Editura, LocSediuEd}CRI {ISBN, Titlu, Editura, AnApariie}COTE {Cot, ISBN}EXEMPLARE_CC { Cot, CuvntCheie}Pentru celelate BD BIBLIOTECA3 i FACTURARE, schema 3NF se pstreaz i n 4 NF

O problem din BIBLIOTECA3 nerezolvat nici n 4 NFDintre tabele 4NF ale BD BIBLIOTECA2, dou conin un evident grad de redundan: EXEMPLARE_AUTORI { Cot, Autor} EXEMPLARE_CC { Cot, CuvntCheie}Intuitiv, ne dm seama c autorii i cuvintele cheie corespund unei cri (titlu, ISBN), i nu fiecrui exemplar (cot) al criiSituaia este una mioritic ntruct, chiar dac am sesizat problema, nu avem ce face (noi am aplicat corect principiile normalizrii prin descompunere)II. Normalizare prin sintezPrecizri privind normalizarea prin sintezSe bazeaz tot de dependenele dintre atributeFuncionaleDe incluziuneMulti-valoareSingura cerin de pornire este ca atributele s fie atomice, fr a ne mai interesa care ar putea fi eventuala cheie primar a relaiei iniiale (universale) ce grupeaz toate atributele BDObine schema BD direct n 3 NF (sau 4 NF)Chiar dac au fost propuse o serie de algoritmi, noi de vom baza exclusiv pe graful dependenelor

76Graful dependenelorReprezint grafic DF, DI i DMVPentru DF:Baza sgeii sursa DFVrful sgeii destinaia DFCnd sursa DF este compus conectorDF pariale i tranzitive se identific vizual n diagram/grafPentru DI folosim un simbol grafic care s sugereze incluziuneaPentru DMV folosim sgei cu vrful dublu

77Graful DF BD FACTURARE NrFactDataFactCodFiscalClNumeClUMCodPersContactNumePersContactCodProdAdresaClLocalitClTelPersContactEMailPersContactDenProdProcTVAProdCantitPretUnit78Cum se obine din graf schema BD direct n 4 NFPentru DF: fiecare surs de DF (simpl sau compus) va genera o tabel separat, n care sursa va fi cheie primar, iar toate destinaiile sale vor fi atribute ne-cheiePentru DI: dependenele de incluziune nu genereaz tabele sau atribute, ci numai restricii referenialePentru DMV: se va crea cte o tabel pentru fiecare DMV, tabel n care cheia primar va fi alctuit att din surs ct i din destinaieDecuparea tabelelor din graful BD FACTURAREDataFactCodFiscalClNumeClUMNumePersContactCodProdAdresaClLocalitClTelPersContactEMailPersContactDenProdProcTVAProdCantitPretUnitCodPersContactR12{},,,CodFiscalClCodPersContactR1{},,,,NrFactR1{,,}CodProdR2{,,,}NrFactR3{,,,}80FACTURARE - Schema obinut pe baza grafului (1)PERS_CON {CodPersContact, NumePersContact, TelPersContact, EMailPersContact}

CLIENTI {CodFiscalCl, NumeCl, AdresaCl, LocalitCl, CodPersContact}

FACTURI {NrFact, DataFact, CodFiscalCl}

PRODUSE {CodProd, DenProd, UM, ProcTVAProd}

PROD_FACT {NrFact, CodProd, Cant, PretUnit}81FACTURARE - Schema obinut pe baza grafului (2)BD FACTURARE i, implicit, graful dependenelor nu conine nici dependene de incluziune (DI), nici dependene multivaloare (DMV)Cele dou scheme ale BD FACTURARE obinute prin descompunere i prin sintez sunt identiceChiar dac desenarea grafului este mai dificil la nceput, sinteza are cteva avantaje importante:Eventualele DF pariale i tranzitive pot fi identificate vizualBD se obine din graf direct n 3 NF (care este, n acest caz i 4 NF)Graful dependenelor pentru BD BIBLIOTECAutorEdituraISBNCotCuvntCheieLocSediuEdTitluAnApariieEDITURI {Editura, LocSediuEd}CRI {ISBN, Titlu, Editura, AnApariie}CRI_CC { ISBN, CuvntCheie}COTE {Cot, ISBN}CRI_AUTORI { ISBN, Autor}Consideraii privind schema BD BIBLIOTECA obinut prin sintezntruct la sintez nu ne-am pus problema cheii primare a relaiei universale (iniiale), ci doar a atomicitii atributelor BD, nu am mai fost nevoii s urmrim, n paralel, cele dou filiere BIBLIOTECA2 i BIBLIOTECA3Schema obinut prin sintez (graf) nu conine problema semnalat n 4 NF a BD BIBLIOTECA2Autorii i cuvintele cheie sunt introduse la nivel de titlu, nu la nivel de exemplar (cot)Descompunere versus sintez - concluziiNormalizarea prin descompunere este mai didactic, dar cea prin sintez mai simplAmbele se bazeaz pe dependene ntre atributeCea prin decompunere presupune trecerea succesiv prin toate formele normale, n ce ce filiera prin sintez obine schema BD direct n 3NF (sau chiar BCNF, 4FN, 5FN)n cazul BD VNZRI, structura obinut este identic, n timp ce n cazul BD BIBLIOTEC (filiera BIBLIOTECA2) nuSchema obinut prin sintez este mai bun !85Tutoriale videoNormalization videohttp://www.youtube.com/watch?v=c-Zfgg5Ayyc&feature=related

NormalisationStreaming http://www.youtube.com/watch?v=RJdBLASKZwg

Normalisation Demonstration http://www.youtube.com/watch?v=fg7r3DgS3rA&feature=related

The Process of Normailisation in a Relational Database http://www.youtube.com/watch?v=nQwgtLQG0hU&feature=related

Lecture - 8 Functional Dependencies and Normal Form http://www.youtube.com/watch?v=YD8dhOmuVnY&feature=related

UHCL 30a Graduate Database Course - Bernsteins Synthesis Algorithm http://www.youtube.com/watch?v=Xslub-nHVss

86