Documente Academic
Documente Profesional
Documente Cultură
Cuza Iași
Facultatea de Economie și Administrarea Afacerilor
Catedra de Informatică Economică
FORMELE
NORMALE
1, 2 ŞI 3
Normalizarea prin descompunere şi sinteză.
Două cazuri practice
Scopul normalizării
Pornind de o problemă reală (practică), încercăm 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 interesaţi)
informaţiile relevante, utile, necesare organizaţiei
Cine decide dacă o schemă rezonabilă ?
◦ Echipa de proiectare
◦ Utilizatorii aplicaţie/BD, atât la proiectare, cât şi la începutul
şi pe parcursul folosirii BD
◦ Profesorii (în cazul cursului de faţă)
Exemple de probleme (reale)
Gestiunea unei farmacii
Salarizarea la o companie sau organizaţie
Gestiunea vânzărilor
Evidenţa stocurilor
Gestiunea activităţii unui cabinet veterinar
Facturarea serviciilor pentru o firmă de
televiziune, telefonie şi internet prin cablu
Informaţiidespre UEFA Champions League (sau,
coborând mult nivelul discuţiei, Liga lui Mitică)
De la ce pornim în normalizare ?
De la specificaţiile problemei
Specificaţiile sunt reguli şi restricţii după care se
organizează şi derulează activităţile, procesele,
evenimentele, operaţiunile (pentru problema dată)
Specificaţiile depind de:
◦ Legislaţie
◦ Practica managerială, financiar-contabilă, operaţională
din companie etc.
◦ Domeniul de activitate şi mărimea companiei
◦ Cerinţele clientului (companiei)
Munca de analist/proiectant
Mai întâi, analistul/proiectantul studiază
specificul problemei (colaborând cu clienţii,
experţii (profesioniştii din domeniul problemei),
viitorii utilizatori ai aplicaţiei şi alţi analişti),
apoi construieşte un model (mai mult sau mai
puţin riguros) al cerinţelor problemei
Modelul final se va prezenta sub forma unor
diagrame de date şi procese (pe care le veţi
studia la Analiza/Proiectarea SI, sau SIFC1+2)
Cum va decurge normalizarea
Pornim de la specificaţiile problemei (simplificându-le,
mai ales în primele cazuri practice)
Inventariem toate informaţiile necesare (informaţii care
vor deveni atribute ale BD)
Stabilim dependenţele dintre atribute (funcţionale, de
incluziune, ...)
Obţinem BD într-o formă normală cât mai avansată
(ideal ar fi 5NF, dar ne vom mulţumi de multe ori şi cu
3NF)
Folosind normalizarea prin descompunere aducem BD
succesiv în 1NF, 2NF ...
Folosind normalizarea prin sinteză aducem BD direct în
Caz practic 1 – Biblioteca FEAA
Scop:
Stocarea de informaţii privind cărţile aflate în rafturile
bibliotecii FEAA (Corp B UAIC, Etaj 1)
Specificaţii minimale:
• Fiecare carte publicată (în România şi străinătate) este
identificată în mod unic la nivel mondial prin ISBN
• Cărţile sunt publicate de edituri
• O editură îşi are sediul principal într-o localitate
• Biblioteca FEAA poate avea unul sau mai multe
exemplare ale unei cărţi (ale unui “titlu”)
Biblioteca FEAA (continuare)
Specificaţii minimale (continuare):
• Biblioteca FEAA gestionează fiecare exemplar
atribuindu-i o Cotă
• Nu există două exemplare ale unei cărţi (sau ale două) cu
aceeaşi cotă (valoarea cotei unui exemplar este unică )
• Biblioteca FEAA nu împrumută cărţi la domiciliu (sau
birou/laborator) şi nici nu gestionează cititorii
• Pentru fiecare carte se preiau toţi autorii
• Pentru a înlesni căutarea, bibliotecarii FEAA asociază
fiecărei cărţi cuvinte cheie (care semnalizează ce
subiecte tratează cartea respectivă)
Caz practic 2 – FACTURARE (1)
Scop:
Stocarea de informaţii privind facturile emise de o companie,
facturile ce reflectă vânzări de produse.
Specificaţii minimale:
• Compania îşi numerotează strict facturile emise, fără a mai
refolosi vreodată numerele deja alocate;
• O factură este adresată unui singur client; în timp, unui client
îi pot fi adresate oricâte facturi;
• Clienţii 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 ;
FACTURARE (2)
Specificaţii minimale (continuare):
• Pe o factură se consemnează vânzarea a unu, două sau
mai multe produse;
• Informaţiile care ne interesează despre produse sunt:
Codul (intern), Denumirea, Unitatea de măsură şi
Procentul TVA; procentul de TVA se aplică la fiecare
vânzare a produsului (19%, 9%, 0% sau, mai nou 24%).
• Pe o factură, un produs apare o singură dată;
• BD trebuie să furnizeze informaţii precum: TVA colectată
pentru o factură, valoarea fără şi cu TVA a facturii etc.
I. Normalizare
prin
descompunere
Prima formă normalizată (1)
Codd: O relaţie este în prima formă normală
dacă… nici unul dintre domeniile sale nu
conţine elemente care sunt, la rândul lor, seturi
(ansambluri)
O relaţie aflată în 1FN ca acea relaţie în care
fiecare atribut prezintă numai valori atomice,
adică toate atributele sunt ne-decompozabile;
R.Riordan: o relaţie este în 1FN dacă domeniile
pe care sunt definite atributele relaţiei sunt
scalare
Prima formă normalizată (2)
parțială
(Cotă, Autor, CuvântCheie) Titlu
parțială
(Cotă, Autor, CuvântCheie) Editura
parțială
(Cotă, Autor, CuvântCheie) LocSediuE
parțială d
(Cotă, Autor, CuvântCheie) AnApariţie
Cum aducem o tabelă în a doua forma
normală ?
O spargem !
Se constituie câte o tabelă distinctă pentru fiecare sub-
ansamblu (un atribut, două atribute, ...) din cheia primară
a tabelei aflate în1NF, subansamblu care are măcar o
destinaţie funcţională (o destinaţie poate fi oricare
atribut al tabelei care nu este membru al cheii primare) –
subansamblul va fi cheia primară a noii tabele
Din tabela iniţială (aflată în 1 NF), de obicei, rămân doar
atributele care nu sunt destinaţii funcţionale ale surselor
de la punctul anterior
Există situaţii când din tabela iniţială nu mai rămâne
nimic !
BIBLIOTECA2 adusă în 2FN
În 1NF: BIBLOTECA2 {ISBN, Titlu, Cotă, Autor,
Editura, LocSediuEd, AnApariţie,
PeCuvântCheie}
baza destinaţiilor funcţionale ale atributului
(subansamblului din cheie) Cotă obţinem tabela:
BIBLIOTECA2_1 {Cotă, ISBN, Titlu,
Editura, LocSediuEd, AnApariţie}
Din BIBLIOTECA2 rămâne tabela:
BIBLOTECA2_2 { Cotă, Autor, CuvântCheie}
Concluzie: în 2FN tabela BIBLIOTECA2 se sparge
în tabelele BIBLIOTECA2_1 şi BIBLIOTECA2_2
BIBLIOTECA3 este deja în 2NF !
NumePersContact, TelPersContact,
Sursa
DF
EMailPersContact, CodProd, DenProd,
P
(NrFact, CodProd) TelPersContact
P
(NrFact, CodProd) EMailPersContact
P
(NrFact, CodProd) DenProd
R1{
R2{ }
FACTURARE - Schema în 2NF
CodCl
T
NrFact EMailPersContact
CodPersContact
T
CodFiscalCl NumePersContact
CodPersContact
T
CodFiscalCl TelPersContact
CodPersContact
T
Trecerea BD FACTURARE
din 2NF în 3NF (1)
T
T T T
R1 { NrFact, DataFact , CodFiscalCl , NumeCl, AdresaCl, LocalitCl , CodPersContact
T T
T
, NumePersContact , TelPersContact, EMailPersContact }
R1’ {
Trecerea BD FACTURARE
din 2NF în 3NF (2)
R12’ {
NrFact CodProd
ProcTVAProd
DataFact
CodFiscalCl UM
Cantit PretUnit
NumeCl DenProd
AdresaCl CodPersContact
LocalitCl
TelPersContact
NumePersContact EMailPersContact
Cum se obţine din graf schema BD direct
în 4 NF
Pentru DF: fiecare sursă de DF (simplă sau
compusă) va genera o tabelă separată, în care
sursa va fi cheie primară, iar toate destinaţiile
sale vor fi atribute ne-cheie
Pentru DI: dependenţele de incluziune nu
generează tabele sau atribute, ci numai restricţii
referenţiale
Pentru DMV: se va crea câte o tabelă pentru
fiecare DMV, tabelă în care cheia primară va fi
alcătuită atât din sursă cât şi din destinaţie
Decuparea tabelelor din graful BD
FACTURARE
NrFact CodProd
ProcTVAProd
DataFact
CodFiscalCl
R3{ , , , }
PretUnit UM
Cantit
NumeCl DenProd
2{ , , , }
AdresaCl CodPersContact
1{ ,
LocalitCl , }
TelPersContact
1’{ , , ,
, EMailPersContact }
NumePersContact
12’{ , , ,
}
FACTURARE - Schema obţinută pe
baza grafului (1)
PERS_CON {CodPersContact, NumePersContact,
TelPersContact, EMailPersContact}
CLIENTI {CodFiscalCl, NumeCl, AdresaCl, LocalitCl,
CodPersContact}
FACTURI {NrFact, DataFact, CodFiscalCl}
Cotă
EDITURI {Editura, LocSediuEd}
NormalisationStreaming
http://www.youtube.com/watch?v=RJdBLASKZwg
Normalisation Demonstration
http://www.youtube.com/watch?v=fg7r3DgS3rA&feature=related
Lecture - 8 Functional Dependencies and Normal Form
http://www.youtube.com/watch?v=YD8dhOmuVnY&feature=related