Documente Academic
Documente Profesional
Documente Cultură
cnp#numeleadresa_ clientnr_
telefonofertaadresa_ imobilCnp1N1Str. Victoriei, nr.22/12, Baia
Mare, MaramuresNr1casaA_imobil1Cnp1N1Str. Victoriei, nr. 4/5,
Cluj-Napoca, ClujNr1halaA_imobil2Cnp2N2Str. Viilor, nr.55/4,
Oradea, BihorNr2casaA_imobil3Cnp3N3Str. Grii, nr. 14, Bucuresti
Nr3terenA_imobil4
ofert din Baia Mare amplasat pe strada Victoriei. Dac ar exista 25 de oferte n
aceast localitate pe strada Victoriei, costul modificrii ar fi mare pentru a
modifica toate nregistrrile. Aceast redundan este eliminat dac atributul
adresa este mprit n alte trei atribute: simbol_judet, cod_loc, id_strada.
Valorile acestea vor fi codul judeului, localitii, respectiv a strzii preluate din
relaiile deja existente JUDETE, LOCALITATI, respectiv STRAZI. n acest caz,
modificarea se face doar o singur dat, n tabela STRAZI.
Normalizarea
Codd a definit iniial 3 forme normale, notate prin FN1, FN2 i FN3. ntruct
ntr-o prim formulare, definiia FN3 ridic ceva probleme, Codd i Boyce au
elaborat o nou variant, cunoscut sub numele de Boyce-Codd Normal Form
(BCNF). Astfel BCNF este reprezentat separat n majoritatea lucrrilor. R. Fagin
a tratat cazul FN4 i FN5.
O relaie este ntr-o form normal dac satisface o mulime de
constrngeri specificat n figura 7.2. De exemplu, se spune c o relaie se afl
n a doua form normal FN2 dac i numai dac se afl n FN1.
Relaia
universal
FN1
FN2
FN3
BCFN
FN4 FN5
Prin atribut simplu (atribut atomic) se nelege un atribut care nu mai poate
fi descompus n alte atribute, n caz contrar, atributul este compus (atribut
neatomic).
Exemplu: Urmtoarele exemple de atribute pot fi considerate simple sau
compuse n funcie de circumstane i de obiectivele bazei de date.
Data calendaristic este un atribut n care apar cmpurile: zi, lun, an;
Adresa este un atribut n care apar cmpurile: strada, nr, bloc, scara, etaj,
apartament, localitate, jude;
Data operaiunii bancare este un atribut n care apar cmpurile data, ora;
Buletin/carte identitate este un atribut n care apar cmpurile: seria, nr.
Aceste atribute pot fi atomice sau neatomice. Astfel adresa clienilor
ageniei imobiliare intereseaz la nivel global, pe cnd pentru adresa ofertei sau
a cererii de imobile este vital prelucrarea separat a fiecrui cmp considerat.
Analog, atributul nume reprezent un atribut simplu al acestei baze de
date, deoarece numele clientului intereseaz la nivel global.
Grupuri repetitive de atribute
Un grup repetitiv este un atribut (grup de atribute) dintr-o relaie care
apare cu valori multiple pentru o singur apariie a cheii primare a relaiei
nenormalizate.
Exemplu: Fie relaia nenormalizat (primar) FACTURI. Dorim s stabilim o
structur de tabele care s permit stocarea informaiilor coninute n document
(factur) i obinerea unor situaii sintetice privind evidena sumelor facturate pe
produse, pe clinei, pe anumite perioade de timp.
FACTURI
nr_factura#
data_factura
nume_client
adresa_client
banca_client
nr_cont_client
delegat
cod_produs
denumire_produs
unitate_de_masura
cantiate
pret_unitar
valoare
valoare_tva
toal_valoare_factura
toal_valoare_tva
Fig. 7.3. Relaia FACTURI nenormalizat
n cazul n care o factur conine mai multe produse, relaia de mai sus va avea
grupurile repetitive: cod_produs, denumire_produs, cantitate, pret_unitar,
valoare, valoare_tva.
Aducerea unei relaii universale la FN1
FN1 este tratat n general cu superficialitate, deoarece principala cerin
atomicitatea valorilor este uor de ndeplinit (cel puin la prima vedere).
Dintre toate formele normale, doar FN1 are caracter de obligativitate. Se
spune c o baz de date este normalizat daca toate relaiile se afl mcar n
FN1.
O relaie este n FN1 dac domeniile pe care sunt definite atributele relaiei
sunt constituite numai din valori atomice. Un tuplu nu trebuie s conin atribute
sau grupuri de atribute repetitive.
Aducerea relaiilor n FN1 presupune eliminarea atributelor compuse i a
celor repetitive.
-
LINII_FACTURI
nr_factura#
data_factura
nume_client
adresa_client
banca_client
nr_cont_client
delegat
toal_valoare_factura
toal_valoare_tva
nr_factura#
cod_produs#
denumire_produs
unitate_de_masura
cantiate
pret_unitar
valoare
valoare_tva
LINII_FACTURI
PRODUSE
nr_factura#
data_factura
nume_client
adresa_client
banca_client
nr_cont_client
delegat
toal_valoare_factura
toal_valoare_tva
nr_factura#
cod_produs#
cantiate
pret_unitar
valoare
valoare_tva
cod_produs#
denumire_produs
unitate_de_masura
LINII_FACTURI
PRODUSE
CLIENTI
nr_factura#
data_factura
nume_client
delegat
toal_valoare_factura
toal_valoare_tva
nr_factura#
cod_produs#
cantiate
pret_unitar
cod_produs#
denumire_produs
unitate_de_masura
nume_client#
adresa_client
banca_client
nr_cont_client
cmpuri este lent i mai greoaie dect dup cmpuri numerice. Din acest motiv
se poate introduce un nou atribut cod_client care s fie numeric i care s fie
cheia primar de identificare a pentru fiecare client.
Observaia 2: O alt observaie care poate fi fcut n legtur cu tabelele aflate
n cea de a treia form normal este aceea c total_valoare_factura este un
cmp care ar trebui s conin informaii sintetice obinute prin nsumarea valorii
tuturor ofertelor aflate pe o factur. Este de preferat ca astfel de cmpuri s fie
calculate n rapoarte sau interogri i s nu fie memorate n tabelele bazei de
date.
LINII_FACTURI
PRODUSE
CLIENTI
FACTURI
nr_factura#
data_factura
delegat
nr_factura#
cod_produs#
cantiate
pret_unitar
cod_produs#
denumire_produs
unitate_de_masura
cod_client#
nume_client
adresa_client
banca_client
nr_cont_client