Sunteți pe pagina 1din 7

SCHEMA BAZEI DE DATE VNZRI

Pentru baza de date VNZRI, reprezentarea graIic a schemei simpliIicate este cea din Iigura
A.1.

Figura A.1.(i 2.5). Schema simplificat a ba:ei de date JINZRI

Tabela 1UDETE contine inIormatii generale despre judetele n care sunt clienti.
Fiecare linie a tabelei descrie un judet. Atributele sunt:
Jud indicativul auto al judetului (alctuit din dou litere, majuscule);
Judet denumirea judetului;
Regiune regiunea istoric (provincia) din care Iace parte judetul.
Cheia primar este atributul Jud. Atributul Judet este cheie alternativ. Pot Ii instituite o serie
de restrictii-utilizator:
2 Baze de date
Jud este alctuit numai din majuscule (eventual, un spatiu, pentru Bucuresti);
Fiecare cuvnt din Judet ncepe cu majuscul; restul literelor sunt mici;
Regiune ncepe cu majuscul; restul literelor sunt mici;
Regiune poate avea numai una din valorile: Banat, Dobrogea, Muntenia, Oltenia,
Transilvania, Moldova.

Tabela CODURI_POSTALE contine cte o linie pentru Iiecare codpostal dintr-un
oras sau comun.
CodPost;
Loc denumirea comunei/orasului;
Jud indicativul auto al judetului.

Cheia primar este atributul CodPost. Atributul Jud este cheie strin, tabela printe Iiind
JUDETE (prin atributul Jud). Pot Ii instituite o serie de restrictii-utilizator:
Jud este alctuit numai din majuscule (eventual, un spatiu, pentru Bucuresti)
Fiecare cuvnt din Localitate ncepe cu majuscul; restul literelor sunt mici

Tabela CLIENTI grupeaz date generale ale clientilor Iirmei pentru care s-a constituit
baze de date (o linie un client). Atribute:
CodCl codul clientului;
DenCl denumirea clientului (persoan juridic);
CodFiscal codul Iiscal;
Adresa adresa sediului Iirmei client;
CodPost codul postal al comunei sau orasului;
Telefon teleIonul (principal) al clientului.
Cheia primar este atributul CodCl. Atributul CodPost este cheie strin, tabela printe Iiind
LOCALITATI (prin atributul CodPost). DenCl si Adresa ncep cu majuscule. Dup cum punctam
anterior, valorile nule indic o lips de inIormatie. Pentru primul client nu se cunoaste teleIonul, celui
de-al doilea adresa etc.

Tabela PERSOANE are ca obiectiv stocarea datelor despre persoanele cheie de la
Iirmele client: directori generali, directori Iinanciari, seIi ai compartimentelor comerciale
(aprovizionare si/sau vnzri) etc. Probabil c vi se pare ciudat, dar ceea ce intentionm cu aceast
tabel (si urmtoarea) este s sprijinim fideli:area clientului. Nu cost (mai) nimic dac de SIntul Ion
se trimite cte o Ielicitare tuturor Ionilor si Ioanelor din partea Iirmei noastre. Iar pentru ca lucrurile s
Iie si mai bine puse la punct, ar Ii trebuit s prelum si inIormatii precum: data nasterii, starea civil,
numele si vrsta copiilor, pasiuni n materie de muzic, arte pastice, literatur, sport etc. Schema luat
n considerare s-a oprit la urmtoarele atribute:
CNP codul numeric al persoanei;
Nume;
Prenume;
Adresa;
nv[mnt la distan[ Anul Contabilitate i nformatic de gestiune - 2006/2007 3
Sex;
CodPost;
TelAcas numrul teleIonului de acas;
TelBirou numrul teleIonului (Iix) de la birou;
TelMobil numrul 'mobilului;
Email adresa e-mail.
Desi este un numr compus din 13 pozitii, este recomandabil ca CNP s Iie declarat de tip sir
de caractere. Aceasta deoarece n Iirm exist rezidenti din Republica Moldova care au pozitii de vrI
n Iirme romnesti (sau reprezentante ale unor Iirme din tara natal). Or, codul identiIicator din
pasaport este alctuit dintr-o liter si o serie de ciIre.
Cheia primar este atributul CNP. Fiind vorba de persoane exterioare ntreprinderii, un atribut
precum Marca este mai putin indicat. CNPul este greoi, relativ lung (de aceea am preIerat s scriem,
pur si simplu CNP1, CNP2.), dar stabil si unic.
Atributul CodPost este cheie strin, tabela printe Iiind LOCALITATI (prin atributul
CodPost).
Celei de-a doua persoane nu i se cunoaste domiciliul (adresa). Cu exceptia lui Vasile Ion,
nimeni nu are cont deschis pentru posta electronic.
Alte restrictii utilizator:
Fiecare cuvnt din Nume si Prenume ncepe cu majuscul; restul literelor sunt mici;
Adresa ncepe cu majuscul;
Atributul Sex poate lua numai dou valori: B de la Brbtesc si F de la Femeiesc.

Tabela PERSCLIENTI indic Iunctia detinut de Iiecare persoan la unul (sau mai
multi, desi aceste cazuri sunt rare) clienti. O linie din aceast tabel reIlect o Iunctie detinut de o
persoan la un client. O persoan poate avea mai multe Iunctii, chiar la aceeasi Iirm (cumul de
Iunctii). Cele trei atribute sunt:
CNP persoana care detine Iunctia;
CodCl Iirma la care persoana detine Iunctia;
Functie Iunctia detinut.
Cheia primar este compus din toate cele trei atribute: CNP+CodCl+Functie, aceasta
deoarece am convenit c o aceeasi persoan poate cumula dou sau mai multe Iunctii la aceiasi Iirm.
CNP si CodCl sunt chei strine, tabelele printe Iiind PERSOANE, respectiv CLIENTI. Atributul
Functie ncepe cu majuscul, restul literelor Iiind mici.

Tabela PRODUSE reprezint nomenclatorul de produse si servicii pe care le
comercializeaz Iirma (produsele sunt obtinutele prin manuIacturare sau revnzare). Atribute:
CodPr codul produsului;
DenPr denumirea;
UM unitatea de msur a produsului;
Grupa grupa de mrIuri (sortimente) n care se ncadreaz; acest atribut este important
pentru analiza vnzrilor;
4 Baze de date
ProcTVA procentul TVA care se aplic la pretul de vnzare (pret care este Ir TVA); pare
de prisos n conditiile actuale, cnd toate produsele au un singur procent, 19, dar nimeni nu poate
garanta cum vor gndi promotiile viitoare de guvernanti 'relaxarea Iiscal;
Cheia primar este atributul CodPr. Alte restrictii utilizator:
DenPr si Grupa ncep cu majuscul; restul literelor sunt mici;
unitatea de msur (UM) se scrie numai cu litere mici.
Tabela pare una 'inoIensiv, dar de modul su de organizare depinde rezolvarea unor pro-
bleme deosebit de sensibile. Este Ioarte important de stabilit regimul n care se va lucra cu produsele
care se comercializeaz sub mai multe Iorme. Dup cum se observ, atributul DenPr nu a Iost declarat
cheie alternativ. De ce ? S lum un exemplu absolut la ntmplare: o Iirm de comert en-gross vinde
(legal), printre altele, produsul Jodc Scandic si la cutii de 1 litru si la cutii de 250 ml.
Desi este acelasi produs (din prea-numeroasele mele ncercri, gustul este acelasi (sau, cel
putin, asa mi amintesc), indiIerent de tipul cutiei), pentru o evident corect a vnzrilor, este necesar
ca n tabela PRODUSE s existe dou linii aIectate vodcii Scandic, Iie ca n Iigura 1.19, Iie ca n
Iigura 1.20.

Figura 1.19. Specificarea, n DenPr, a tipului cutiei

Figura 1.20. Diferen[ierea (n afar de cod) numai prin UM

Este diIicil de spus care variant este mai bun. Eu, unul, as nclina pentru cea de-a
doua, caz n care atributul DenPr nu este cheie candidat.

Tabela FACTURI contine cte o linie pentru Iiecare Iactur emis, Iactur ce reIlect
o vnzare (ctre un client). Atribute:
NrFact numrul Iacturii;
DataFact data ntocmirii Iacturii;
CodCl codul clientului cruia i s-au vndur produsele/serviciile consemnate n Iactur;
Obs observatii; e Iolosit relativ rar, pentru a introduce aventuale detalii sau probleme care
au aprut n legtur cu o Iactur.
Cheia primar este atributul NrFact. Explicatia este una simpl: gestionarea Iacturilor emise
este, conIorm legii, strict. Nu pot exista dou Iacturi (care reIlect dou vnzri) cu un acelasi numr.
Sau, de Iapt, pot exista, dar aceasta nseamn o ilegalitate destul de grav (se mai poart nc prin
economia subteran). CodCl este cheie strin (tabela printe este CLIENTI). Ca restrictie utilizator
suplimentar, nu pot Ii introduse Iacturi ntocmite nainte de 1 august 2005 (DataFact ~
DATE`2005-08-01`).

nv[mnt la distan[ Anul Contabilitate i nformatic de gestiune - 2006/2007 5
Tabela LINIIFACT detaliaz tabela precedent. Un tuplu se reIer la un
produs/serviciu vndut si consemnat ntr-o Iactur emis. Pentru Iiecare Iactur vor Ii attea linii cte
produse/servicii au Iost consemnate la vnzarea respectiv. Atribute:
NrFact numrul Iacturii;
Linie numrul liniei din Iactura respectiv;
CodPr codul produsului/serviciului vndut;
Cantitate cantitatea vndut;
PretUnit pretul unitar (Ir TVA) la care s-a Icut vnzarea.
Cheia primar este combinatia NrFact+Linie. NrFact si CodPr sunt chei strine. Pentru a
determina valoarea de ncasat a unei Iacturi (inclusiv TVA), la valoarea Ir TVA pentru Iiecare linie
(obtinut prin produsul Cantitate * PretUnit) trebuie adugat TVA colectat, obtinut prin aplicarea
procentului de TVA al produsului/serviciului (atributul ProcTVA din PRODUSE) la valoarea Ir
TVA.

Tabela INCASARI reprezint un nomenclator al ncasrilor. Printr-o ncasare, un
client si stinge una sau mai multe obligatii de plat, adic achit una sau mai multe Iacturi.
Documentul primar pe baza cruia se consemneaz ncasarea poate Ii ordinul de plat, cecul, chitanta
etc. Atributele tabelei sunt:
Codnc codul ncasrii este un numr intern, util pentru a diIerentia o ncasare de celelalte;
Datanc data ncasrii - data la care banii au intrat n contul sau casieria Iirmei;
CodDoc codul documentului justiIicativ al ncasrii: OP ordin de plat, CHIT chitant,
CEC Iil cec;
NrDoc numrul documentului justiIicativ
DataDoc data la care a Iost ntocmit documentul justiIicativ; din momentul ntocmirii
documentului de plat pn la data la care banii ajung eIectiv n cont/casierie trec cteva zile sau
sptmni (datorit circuitului documentelor ntre Iirme si bnci).
Cheia primar este atributul Codnc. Ca restrictii utilizator pot Ii instituite:
data ncasrii nu o poate precede pe cea a ntocmirii documentului (DataDoc Datanc);
data documentului de ncasare nu poate Ii anterioar datei de nceput a aplicatiei: 1 august
2005 (DataDoc ~ DATE`2005-08-01`);
codul documentului se scrie numai cu majuscule.


Tabela INCASFACT detaliaz tabela precedent si indic ce Iacturi (transe din
Iacturi) sunt achitate prin Iiecare ncasare. Un client poate plti mai multe Iacturi odat (printr-o
singur plat). Pe de alt parte, orice Iactur poate Ii pltit n una sau mai multe transe, n Iunctie de
banii de care dispune clientul la momentul ntocmirii documentului de plat. Atributele tabelei sunt:
Codnc codul ncasrii;
NrFact Iactura pentru care se ncaseaz valoarea integral sau numai o trans;
Transa transa din Iactur (sau ntreaga valoare) care se ncaseaz prin documentul primar ce
st la baza ncasrii.
6 Baze de date
Cheia primar este combinatia Codnc+NrFact, deoarece la o ncasare se pot achita mai
multe Iacturi, iar, pe de alt parte, o Iactur poate Ii pltit n mai multe transe. Codnc si NrFact sunt
chei strine.


Comentarii suplimentare privind restric(iile referen(iale
Instituirea unei restrictii reIerentiale ntr-o baz de date interzice aparitia de valori
nenule n tabele copil care nu se regsesc n tabelele printe (linii orIane). De aceea, la inserarea unei
linii ntr-o tabel copil sau modiIicarea unei chei strine, SGBD-ul trebuie veriIice dac noile valorile
se regsesc n linii printe.
Inserarea unei linii ntr-o tabel printe, ca si stergerea de linii dintr-o tabel copil nu
prezint nici un pericol 'reIerential.
La stergerea unei linii dintr-o tabel printe trebuie precizat cum se va prezerva
restrictia reIerential: Iie prin stergerea n cascad a tuturor nregistrrilor copil (ON DELETE
CASCADE), Iie, pur si simplu, prin interzicerea stergerii (ON DELETE RESTRICT).
n Iine, la modiIicarea unei chei primare/alternative pentru care exist, n alte tabele,
nregistrri-copil, trebuie precizat actiunea ntreprins de SGBD: modiIicarea n cascad a tuturor
liniilor copil (ON UPDATE CASCADE) sau interzicerea modiIicrii dac exist cel putin o
nregistrare copil (ON UPDATE RESTRICT).

Pentru exempliIicare, s lum cazul tabelei FACTURI si trei situatii legate de
actualizarea acesteia.
Inserarea unei linii. Deoarece FACTURI este legat (ca tabel copil) prin restrictie
reIerential de tabela CLIENTI (printe), trebuie veriIicat dac valoarea CodCl exist n CLIENTI.
Dac nu, inserarea trebuie prohibit.
Modificarea unei linii. Aici sunt dou situatii, corespunztoare posturilor de printe si copil a
tabelei modiIicate. AstIel:
dac se modiIic valoarea atributului CodCl, trebuie veriIicat dac aceasta se regseste n
CLIENTI si, dac nu, operatiunea trebuie anulat;
dac se modiIic valoarea lui NrFact, atunci trebuie testat dac exist nregistrri copil n
tabelele LINIIFACT si INCASFACT. Dac da,
Iie se interzice modiIicarea (ON UPDATE RESTRICT),
Iie se modiIic n cascad toate liniile copil - valorile NrFact din LINIIFACT si INCASFACT
(ON UPDATE CASCADE).
Fireste, nu e obligatoriu ca actiunea s Iie identic pentru ambele tabele copil. Cu alte cuvinte,
se poate recurge, pentru LINIIFACT la ON UPDATE CASCADE, iar pentru INCASFACT la ON
UPDATE RESTRICT.
Stergerea unei linii. atunci trebuie testat dac exist nregistrri copil n tabelele LINIIFACT
si INCASFACT. Dac da,
Iie se interzice stergerea (ON DELETE RESTRICT),
Iie se sterg n cascad toate liniile copil din LINIIFACT si INCASFACT (ON DELETE
CASCADE).
nv[mnt la distan[ Anul Contabilitate i nformatic de gestiune - 2006/2007 7

Exist diIerente semniIicative ntre SGBD-uri n privinta deIinirii actiunilor ce trebuie
ntreprinse pentru respectarea integrittilor reIerentiale. Unele produse, Iireste, dintre cele mai bine
cotate, permit, la declararea restrictiilor reIerentiale (este de obicei, simultan cu crearea tabelelor),
instituirea oricrei reguli din cele patru: ON UPDATE CASCADE, ON UPDATE RESTRICT, ON
DELETE CASCADE, ON DELETE RESTRICT.
Altele, precum Oracle, permit declarea actiunilor numai pentru stergere, ON DELETE
CASCADE si ON DELETE RESTRICT. Pentru modiIicarea n cascad sunt necesare declansatoare
speciale construite n limbajul de dezvoltare PL/SQL.

S-ar putea să vă placă și