Sistem cu baza de date pentru gestiunea unui magazin cu produse IT
- proiect -
Sistem cu baza de date pentru gestiunea unui magazin
cu produse IT
Pasul 1: Proiectarea logica a bazei de date relationale:
Pasul 1.1. Identificarea tipurilor de entitati
În urma studierii documentelor implicate în gestiunea din cadrul firmei se disting urmatoarele entitati:
Furnizori
Factura fiscala
Produse
Bon fiscal
Chitanta fiscala
Clienti
În documentarea tipurilor de entitati includem o descriere amanuntita a fiecarei entitati:
Nume tip de entitate |
Descriere |
Factura fiscala (intrare,iesire) |
Document contabil care însoteste marfa primita/vânduta în/din firma de la/catre alte firme . |
Furnizori |
Totalitatea furnizorilor de la care firma se aprovizioneaza cu produse. |
Produse |
Totalitatea produselor comercializate în firma. |
Bon fiscal |
Descriere detaliata a produselor cumparate de un client (persoana fizica) la un moment dat. |
Chitanta fiscala (intrare, iesire) |
Document contabil care atesta ca o factura, o cota parte din factura sau mai multe ale unui furnizor au fost achitate. |
Clienti |
Totalitatea firmelor care achizitioneaza produse de la firma mea. |
Pasul 1.2. Identificarea tipurilor de relatii.
Tipurile de relatii care intervin între tipurile de entitati prezente în sistem sunt expuse în continuare:
Tip de entitate |
Tip de relatie |
Tip de entitate |
Furnizori |
emit 14214q164o |
Facturi fiscale |
Produse |
se primesc cu |
Facturi fiscale |
Produse |
se cumpara cu |
Bonuri fiscale |
Produse |
se cumpara cu |
Facturi fiscale |
Facturi fiscale(intrare,iesire) |
se achita cu |
Chitante fiscale (intrare,iesire) |
Clienti |
primesc |
Facturi fiscale |
Determinarea cardinalitatii si a participarii tipurilor de relatii:
Tip de entitate |
Tip de relatie |
Tip de entitate |
Cardinalitate |
Furnizori |
emit 14214q164o |
Facturi fiscale |
1:N |
Produse |
se primesc cu |
Facturi fiscale |
M:N |
Produse |
se cumpara cu |
Bonuri fiscale |
M:N |
Produse |
se cumpara cu |
Facturii fiscale |
M:N |
Facturi fiscale |
se achita cu |
Chitante fiscale |
M:N |
Clienti |
primesc |
Facturi fiscale |
1:N |
Pasul 1.3. Identificarea si atribuirea de atribute la tipurile de entitati si tipurile de relatii si determinarea domeniilor de definitie a atributelor.
Tip entitate |
Atribut |
Domeniu |
Furnizori |
IdFurnizor |
AutoNumber |
Cod Furnizor |
Number |
|
Denumire |
Text(50) |
|
Cod fiscal |
Text(7) |
|
Nr RC Firma |
Text(13) |
|
Adresa |
Text (50) |
|
Telefon |
Text(10) |
|
Cod IBAN |
Text(24) |
|
Banca |
Text(50) |
|
Facturi fiscale |
IdFactura |
Autonumber |
Serie Factura |
Text(5) |
|
Nr Factura |
Number |
|
Furnizor/Clienti |
Number |
|
Data |
Data/Timp |
|
TVA* |
Number |
|
Achitat |
Da/Nu |
|
Nr Aviz* |
Number |
|
Casier** |
Text(50) |
|
Produse |
CodProdus |
Autonumber |
Denumire |
Text(50) |
|
Unitate masura |
Text(6) |
|
Cantitate initiala |
Number |
|
Chitante fiscale |
IdChitanta |
Autonumber |
NrChitanta |
Number |
|
Data |
Data/Timp |
|
Emitent/Client |
Number |
|
Bon fiscal |
NrBon |
Autonumber |
Data emit 14214q164o erii |
Data/Timp |
|
Casier |
Text(50) |
|
Clienti |
IdClient |
AutoNumber |
Cod Client |
Number |
|
Denumire |
Text(50) |
|
Cod fiscal |
Text(7) |
|
Nr RC Firma |
Text(13) |
|
Adresa |
Text (50) |
|
Telefon |
Text(10) |
|
Cod IBAN |
Text(24) |
|
Banca |
Text(50) |
* doar pentru intrari
** doar pentru iesiri
Pentru întelegerea domeniilor atributelor din tabelul anterior, sunt explicati termenii folositi:
Text(x) - tip de data sir de caractere alfanumeric, dimensiunea fiind de 'x' caractere
Data/timp - tip de data reprezentând data calendaristica
Number- tip de data reprezentând un numar
Autonumber-tip de data reprezentând un numar cu incrementare automata.
Pasul 1.4. Determinarea atributelor care compun cheile candidate si primare.
Urmatorul tablel prezinta cheile ce intervin în cadrul sistemului:
Tip de entitate |
Chei candidat |
Cheie primara |
Furnizori |
IdFurnizor |
Cod_furnizor |
Cod Furnizor |
||
Cod fiscal |
||
Nr RC Firma |
||
Facturi fiscale |
IdFactura |
IdFactura |
Serie Factura+ Nr Factura |
||
Produse |
CodProdus |
CodProdus |
Chitanta fiscala |
IdChitanta |
IdChitanta |
Bon fiscal |
NrBon |
NrBon |
Clienti |
IdClient |
CodClient |
Cod Client |
||
Cod fiscal |
||
Nr RC Firma |
Pasul 1.5. Desenarea diagramei entity-relationship:
Pasul 2. Crearea si validarea modelului logic local
Pasul 2.1. Proiectarea modelului conceptual local pe un model logic local.
În acest pas eliminam acele structuri din baza de date, care sunt dificil de implementat în sistemul de gestiune al bazelor de date. Pentru a rezolva aceasta problema, se vor urma urmatorii pasi:
Eliminarea relatiilor de tipul N:M.
Avem urmatoarele relatii M:N
a)"O factura fiscala se poate achita cu mai multe chitante fiscale"
"Mai multe facturi fiscale se pot achita cu o chitanta fiscala"
b)"Un produs se gaseste pe mai multe bonuri fiscale"
"Pe un bon fiscal se gasesc mai multe produse "
c) "O factura fiscala contine mai multe produse"
"Un produs se gaseste pe mai multe facturi facturi"
|
|
devine
devine
devine
Eliminarea relatiilor complexe.
Modelul nostru nu contine astfel de relatii.
Eliminarea relatiilor recursive.
Modelul nostru nu contine astfel de relatii
Eliminarea relatiilor cu atribute.
Modelul nostru nu contine astfel de relatii
Reexaminarea relatiilor de tipul 1:1.
Modelul nostru nu contine astfel de relatii.
Eliminarea relatiilor redundante.
Modelul nostru nu contine astfel de relatii.
Desenarea diagramei E-R
Trebuie sa reactualizam si lista atributelor pentru tipurile de entitati: DetaliuChitanta, IntrariProduse si IesiriProduse.
Tip entitate |
Atribut |
Domeniu |
DetaliuChitante |
IdIntrareChitanta |
AutoNumber |
IdChitanta |
Number |
|
NrFactura |
Number |
|
Valoare |
Number |
|
IntrariProduse |
IdIntrare |
Autonumber |
IdFactura |
Number |
|
Denumire |
Number |
|
Cantitate |
Number |
|
Pret unitar |
Number |
|
Adaos |
Number |
|
IesiriProduse |
IdIesire |
AutoNumber |
NrDocument |
Number |
|
Denumire |
Number |
|
Cantitate |
Number |
Pasul 2.1. Crearea relatiilor pentru modelul logic local.
Entitati tari:
Furnizori(IdFurnizor, CodFurnizor, Denumire, Cod fiscal, Nr RC Firma, Adresa, Telefon, Cod IBAN, Banca )
Cheie primara: IdFurnizor
Produse(CodProdus, Denumire, U/M, Cantitate initiala)
Cheie primara: CodProdus
Bon fiscal(NrBon, Data emit 14214q164o erii, Casier)
Cheie primara: NrBon
Clienti(IdClient, CodClient, Denumire, Cod fiscal, Nr RC Firma, Adresa, Telefon, Cod IBAN, Banca )
Cheie primara: IdClient
Entitati slabe:
Factura fiscala intrare (IdFactura, Serie Factura, Nr Factura, Furnizor, Data, TVA, Achitat, Nr aviz)
Cheie primara: IdFactura
Cheie straina: Furnizor
Factura fiscala iesire (IdFactura, Serie Factura, Nr Factura, Client, Data, Achitat, Casier)
Cheie primara: IdFactura
Cheie straina: Client
Chitanta fiscala intrare(IdChitanta, NrChitanta, Data, Emitent)
Cheie primara: IdChitanta
Cheie straina: Emitent
DetaliuChitante intrare (IdIntrareChitanta, IdChitanta, NrFactura, Valoare)
Cheie primara: IdIntrareChitanta
Cheie straina: NrFactura, IdChitanta
Chitanta fiscala iesire(IdChitanta, NrChitanta, Data, Client)
Cheie primara: IdChitanta
Cheie straina: Client
DetaliuChitante iesire (IdIntrareChitanta, IdChitanta, NrFactura, Valoare)
Cheie primara: IdIntrareChitanta
Cheie straina: NrFactura, IdChitanta
IntrariProduse (IdIntrare, IdFactura, Denumire, Cantitate, Pret unitar, Adaos)
Cheie primara: IdIntrare
Cheie straina: IdFactura, Denumire
IesiriProduse (IdIesire, NrDocument, Denumire, Cantitate)
Cheie primara: IdIesire
Cheie straina: NrDocument, Denumire
Pasul 2.2. Validarea modelului, utilizând normalizarea.
În aceasta etapa de normalizare se urmareste eliminarea grupurilor repetitive din fiecare tabela.
Analizând fiecare tabela se observa ca nu exista grupuri repetitive, deci baza de date este în forma normala 1.
O relatie este în 2NF daca este în 1NF si orice atribut neprimitiv este complet dependent de orice cheie. Forma normala 2 se verifica doar la relatiile care au o cheie compusa pe pozitia de cheie primara. Daca pt o relatie, cheia primara se compune dintr-un singur atribut atunci ea este în forma normala 2.
Tabelele bazei de date din sistemul nostru au chei primare care se compun dintr-un singur atribut, in concluzie toate relatiile sunt deja in forma normala 2.
Forma normala 3
O relatie este in 3NF daca este în 2NF si nu exista nici un atribut care sa nu apartina cheii primare si care sa fie tranzitiv dependent de cheia primara.
Examinând relatiile în forma normala de mai sus, observam ca nu exista dependente tranzitive. Deci relatiile sunt în forma normala 3.
Pasul 2.3. Validarea modelului din nou, utilizând tranzactiile.
Tranzactiile cerute de utilizator sunt:
T1. Crearea si modificare înregistrarilor despre un anumit furnizor
Datele unui furnizor sunt memorate în tabela FURNIZORI. Cheia primara pentru acest tabel este IdFurnizor. În momentul în care se încearca introducerea unui nou furnizor în baza de date, se verifica automat daca acesta exista, caz în care sunt afisate datele acestuia si este permisa modificarea anumitor date precum: Adresa, Nume, Telefon, Cod IBAN, Banca. stergerea unui furnizor din baza de date nu este permisa, acest lucru datorându-se faptului ca datele sale sunt necesare atât în cazul facturilor fiscale emise de acesta cât si al chitantelor fiscale care îi apartin .
T2. Listarea detaliilor despre un furnizor
Tranzactia poate fi rezolvata facând o cautare dupa denumirea furnizorului.
T3. Crearea si modificarea înregistrarilor despre o anumita factura
Se verifica daca numarul facturii fiscale exista deja în baza de date, caz în care nu admitem inserarea. Altfel putem insera detaliile despre factura.
T4. Listarea facturilor neachitate ale unui furnizor/client
Dupa ce în prealabil calculam valoarea facturii, verificam daca valoarea achitata este mai mica, caz în care vom lista factura respectiva.
Se va introduce ca parametru luna dorita, iar rezultatul va fi reprezentat de facturile primite în luna respectiva.
T6. Crearea si modificarea inregistrarilor despre un anumit produs
Se verifica daca codul produsului, exista deja in baza de date, caz în care nu admitem inserarea. Altfel putem insera detaliile despre noul produs.
T7. Listarea stocului de produse
Se va lista stocul de produse existent în firma.
T8 . Crearea si modificarea inregistrarilor despre o anumita chitanta fiscala
Se verifica daca numarul chitantei exista deja in baza de date, caz in care nu admitem inserarea. Altfel putem insera detaliile despre noua chitanta .
T9 . Crearea si modificarea inregistrarilor despre o anumita factura fiscala
Se verifica daca numarul facturii exista deja in baza de date, caz in care nu admitem inserarea. Altfel putem insera detaliile despre noua factura .
T10. Listarea chitantelor
Se vor lista chitantele emise de firma.
T11. Crearea si modificarea inregistrarilor despre un bon fiscal
Se verifica daca numarul bonului exista deja in baza de date, caz in care nu admitem inserarea. Altfel putem insera detaliile despre noul bon.
T12. Listarea bonurilor fiscale
Rezultatul va fi afisarea tuturor bonurilor fiscale emise de firma.
Pasul 2.4. Desenarea diagramei E-R
În cazul nostrum aceasta diagrama nu se modifica
Pasul 2.5. Definirea regulilor de integritate a bazei de date.
Necesitatea datelor:
Aceste reguli deja le-am identificat, când am documentat atributele în pasul 1.3.
Reguli asupra domeniului atributelor.
Domeniile de definitie au fost deja identificate când am documentat domeniile atributelor în pasul 1.3.
Integritatea entitatilor.
Aceste reguli au fost deja identificate, când am documentat cheile primare în pasul 1.4.
Furnizori(IdFurnizor, CodFurnizor, Denumire, Cod fiscal, Nr RC Firma, Adresa, Telefon, Cod IBAN, Banca )
Cheie primara: IdFurnizor
Produse(CodProdus, Denumire, U/M, Cantitate initiala)
Cheie primara: CodProdus
Bon fiscal(NrBon, Data emit 14214q164o erii, Casier)
Cheie primara: NrBon
Clienti(IdClient, CodClient, Denumire, Cod fiscal, Nr RC Firma, Adresa, Telefon, Cod IBAN, Banca )
Cheie primara: IdClient
Factura fiscala intrare (IdFactura, Serie Factura, Nr Factura, Furnizor, Data, TVA, Achitat, Nr aviz)
Cheie primara: IdFactura
Cheie straina: Furnizor, nenula, cascada referindu-se la Furnizori(.)
Factura fiscala iesire (IdFactura, Serie Factura, Nr Factura, Client, Data, Achitat, Casier)
Cheie primara: IdFactura
Cheie straina: Client, nenula, cascada referindu-se la Clienti(.)
Chitanta fiscala intrare(IdChitanta, NrChitanta, Data, Emitent)
Cheie primara: IdChitanta
Cheie straina: Emitent, nenula, cascada referindu-se la Furnizori(.)
DetaliuChitante intrare (IdIntrareChitanta, IdChitanta, NrFactura, Valoare)
Cheie primara: IdIntrareChitanta
Cheie straina:
NrFactura, nenula, cascada referindu-se la Facturi fiscale intrare(.)
IdChitanta, nenula, cascada referindu-se la Chitante fiscale intrare(.)
Chitanta fiscala iesire(IdChitanta, NrChitanta, Data, Client)
Cheie primara: IdChitanta
Cheie straina: Client, nenula, cascada referindu-se la Clienti(.)
DetaliuChitante iesire (IdIntrareChitanta, IdChitanta, NrFactura, Valoare)
Cheie primara: IdIntrareChitanta
Cheie straina:
NrFactura, nenula, cascada referindu-se la Facturi fiscale iesire(.)
IdChitanta, nenula, cascada referindu-se la Chitante fiscale iesire(.)
IntrariProduse (IdIntrare, IdFactura, Denumire, Cantitate, Pret unitar, Adaos)
Cheie primara: IdIntrare
Cheie straina:
IdFactura, nenula, cascada referindu-se la Facturi fiscale intrare(.)
Denumire, nenula, cascada referindu-se la Produse(.)
IesiriProduse (IdIesire, NrDocument, Denumire, Cantitate)
Cheie primara: IdIesire
Cheie straina:
NrDocument, nenula, cascada referindu-se la Facturi fiscale iesire(.) în uniune cu Bon fiscal(.)
Denumire, nenula, cascada referindu-se la Produse(.)
Diagrama E-R finala:
|