Skip to document

Proiect Baze de Date

Ghid Proiect Baze de Date, Proiect Final
Course

Baze de date (Data Base) (1)

26 Documents
Students shared 26 documents in this course
Academic year: 2018/2019
Uploaded by:
Anonymous Student
This document has been uploaded by a student, just like you, who decided to remain anonymous.
Universitatea din Craiova

Comments

Please sign in or register to post comments.
  • Student
    it's helpful

Preview text

Proiect Baze de Date Tema :Gestiunea Facturilor Am ales ca proiect gestiunea facturilor am proiectat baza de date si am realizat 5 tabele bine incadrate si respectand cerintele unei baze bine definite Baza aleasa de mine se compune din cinci tabele :client, localizare, factura, facturat, produs. Tabela client are ca atribute codul clientului :codClient de tip int care este si cheie primara,numele clientului : nume de tip varchar(50),telefonul clientului telefon de tip int,strada unde locuieste clientul de tip varchar(50) si numarul de tip int ,codul postal reprezentat de atributul codPostal de tip int si tip client un atrbut care caracterizeaza fiecare client si poate avea valori null avand tipul varchar(50); Tabela localizare se compune din 2 atribute unul este codul postal codPostal de tip int care este si cheie primara si celalalt localitatea de tip varchar(50) Tabela factura are urmatoarele atribute : nrFactura care reprezinta o val unica de tip int ,dataFactura reprezinta data la care se inregistreaza aceasta factura si codClient este referit la codul unui client (Un client poate sa aiba mai multe facturi) . Tabela produs are ca atribute codul produsului de tip int cheie primara, numele produsului denProdus de tip varchar(50) si un pret referinta care trebuie sa fie mai mare ca 0 de tip bineinteles int. Pe langa acestea mai avem si tabela facturat care reprezinta produsele care sau facturat pe o factura cantitatea si pretul la care s-a facturat reprezentata de atributele nrFact de tip int care refera numarul facturii din tabela factura, codProdus de tip int care refera codul produs din tabela produs pe langa acestea mai contine doua atribute cantitatea de tip int si pretFact de tip int care trebuie sa fie mai mare ca 0. *un client poate sa aiba mai multe facturi o factura contine unul sau mai multe produse,un produs poate sa fie facturat de mai multe ori si intr-o localitate pot sa fie mai multi clienti. Iata legaturile care exista intre tabele : codPostal din tabela client refera codPostal din tabela localizare 1 codClient din tabela factura refera codClient din tabela client nrFactura din tabela facturat refera nrTabela din tabela factura codProdus din tabela facturat refera codProdus din tabela produs. Diagrama baza de date Gestiune Facturi 2 valorile introduse in tabela facturat : valorile introduse in tabela produs : 4 Acestea sunt valorile introduse in fiecare tabela in parte si pe baza carora vom face interogari. Cerintele pe care dorim sa le indeplinim pe baza interogarilor de la baza de date creata si populata cu valorile din tabelele descrise mai sus.  sa afisam toti clientii din baza de date  sa afisam pt fiecare client numele si telefonul  sa afisam numarul de clienti  pt. fiecare client sa afisa localitatea de unde este  pretul minim pe o factura pt. fiecare client  clientii care au platit mai mult de 3000  clientii si fiecare produs pe care il cumpara  pretul total care se obtine prin vanzare cu proceduri : * suma de plata pt fiecare client * suma de plata pt un client al carui nume este trimis ca parametru * clientii care au cumparat produsul trimis ca parametru * verifica daca un anumit client a achizitionat un anumit produs Pentru a rezolva aceste cerinte am folosit atat proceduri stocate cat si selecturi obijnuite procedurile create si modul lor de executie: 5 where c.codClient=f and f.nrFactura=f1 and f1.codProdus=p and p=numeProdus end /*verifica daca clientul ... a cumparat produsul ...*/ create procedure ClientProdus( numeClient varchar2(30),produsClient varchar2(20)) as begin if exists (select nume,denprodus from client c,factura f,facturat f1,produs p where c=numeClient and c.codClient=f and f.nrFactura=f1 and f1.codProdus=p and p=produsClient ) print'exista clientul cu produsul acesta cumparat :' else print'nu exista client cu prod acesta cump.' End; /*schimba codul postal pt un anumit client trimis ca parametru :*/ create or replace procedure schimbaLocalitate(codPersoana int) as begin update client set codPostal=110 from client where codClient=codPersoana; end; Modul de executie al acestor proceduri este urmatorul : /*apelam procedurile :*/ /*suma de plata pt fiecare client :*/ 7 execute sumaPlataClient /*suma de plata pt un client : dam numele : */ execute clientFactura ('Dinescu D') /*clienti care au cumparat produsul :trimis ca parametru :*/ execute faraProdus 'grau' /*verifica daca un anumit client a achizitionat un anumit produs :*/ execute ClientProdus 'Dan G','grau' execute schimbaLocalitate 2 La acestea am adaugat mai precis modificat modul de inserare al valoriilor in tabele astfel acestea se realizeaza cu ajutorul crearii unor procedurii stocate . Prin apelarea acestora pentru anumite valorii se populeaza tabelele Iata modul de creare a proceduriilor stocate de inserare pentru tabelele : ---localizare ---client create or replace procedure inserareLocalizare(codPostal int,localitate varchar2) as begin insert into localizare values(codPostal localitate) end; create procedure inserareClient(cod int,nume varchar2(15),telefon int,strada varchar2(20),nr int,codPostal int,tipClient varchar2(15)) as begin insert into client values(cod,nume,telefon,strada,nr,codPostal,tipClient) end; Apelul se realizeaza astfel : execute inserareLocalizare (101,'Slatina'); execute inserareClient (1,'Dan G',123456,'calea Buc',134,101,'zilier'); In proiect am mai folosit vederi,triggere si cursoare. Modul de folosire al acestora nu a fost foarte greu ele participand si realizand o serie de evenimente asupra bazei de date. 8 Utilizarea triggerelor a fost benefica pt. afisarea unor mesaje de reusita in cazul in carea operatiile de stergere,modificare sau inserare au decurs bine in functiie de restrictiile bazei de date. Am creat triggere pt. tabela client (for update,for insert,for delet) /*cream trigger de inserare pt tabela client */ create trigger insertClient on Client for insert as print 'client inserat cu succes' go insert into client values(11,'Popescu',190456,'Bariera Valcii',45,105,'vechi') Cu ajutorul triggerelor am creat tabele temporare deleted and inserted in care se retine valoarea pretului inserat,sters sau amindoua. --cream trigger care afiseaza cantitatea introdusa , stearsa sau modificata create trigger PretFacturatTrigger on facturat for update,delete,insert as declare row int total_inserat money total_sters money set row=rowcount if (row=0) begin print 'fara modificare' return end if not exists(select * from deleted) --operatia este inserted begin select total_inserat=sum(cantitateFact*pretFacturat) from inserted print 'valoare totala inserata este '+convert(varchar2(20),total_inserat) return end 10 if not exists (select * from inserted) --operatia este de stergere : begin select total_sters=sum(cantitateFact*pretFacturat) from deleted print 'valoare totala stearsa'+convert(varchar(20),total_sters) return end --daca am ajuns aici operatia este de modificare : select total_inserat=sum(cantitateFact*pretFacturat) from inserted print 'val fact ramasa'+convert(varchar(20),total_inserat) select total_sters=sum(cantitateFact*pretFacturat) from deleted print 'val. pe fact stersa'+convert(varchar(20),@total_sters) insert into facturat values(1001,800,3,1450) update facturat set pretFacturat=3589 where nrFact=1001 11

Was this document helpful?

Proiect Baze de Date

Course: Baze de date (Data Base) (1)

26 Documents
Students shared 26 documents in this course
Was this document helpful?
Proiect Baze de Date
Tema :Gestiunea Facturilor
Am ales ca proiect gestiunea facturilor am proiectat baza de date si am realizat 5
tabele bine incadrate si respectand cerintele unei baze bine definite
Baza aleasa de mine se compune din cinci tabele :client, localizare, factura, facturat,
produs.
Tabela client are ca atribute codul clientului :codClient de tip int care este si cheie
primara,numele clientului : nume de tip varchar(50),telefonul clientului telefon de tip
int,strada unde locuieste clientul de tip varchar(50) si numarul de tip int ,codul postal
reprezentat de atributul codPostal de tip int si tip client un atrbut care caracterizeaza
fiecare client si poate avea valori null avand tipul varchar(50);
Tabela localizare se compune din 2 atribute unul este codul postal codPostal de tip int
care este si cheie primara si celalalt localitatea de tip varchar(50)
Tabela factura are urmatoarele atribute : nrFactura care reprezinta o val unica de tip
int ,dataFactura reprezinta data la care se inregistreaza aceasta factura si codClient este
referit la codul unui client (Un client poate sa aiba mai multe facturi) .
Tabela produs are ca atribute codul produsului de tip int cheie primara, numele
produsului denProdus de tip varchar(50) si un pret referinta care trebuie sa fie mai mare
ca 0 de tip bineinteles int. Pe langa acestea mai avem si tabela facturat care reprezinta
produsele care sau facturat pe o factura cantitatea si pretul la care s-a facturat reprezentata
de atributele nrFact de tip int care refera numarul facturii din tabela factura, codProdus de
tip int care refera codul produs din tabela produs pe langa acestea mai contine doua
atribute cantitatea de tip int si pretFact de tip int care trebuie sa fie mai mare ca 0.
*un client poate sa aiba mai multe facturi o factura contine unul sau mai multe
produse,un produs poate sa fie facturat de mai multe ori si intr-o localitate pot sa fie mai
multi clienti.
Iata legaturile care exista intre tabele :
codPostal din tabela client refera codPostal din tabela localizare
1