Sunteți pe pagina 1din 9

Realizarea acestui proiect presupune analiza unei situatii economice reale, finalizandu-se cu organizarea datelor obtinute intr-o baza

de date si implementarea unor operatii asupra acestei baze de date utilizand limbajul Oracle . Baza de date este un ansamblu de tabele normalizate, grupate in jurul unui subiect. Tabelele sunt ansambluri formate din mai multe coloane(attribute) si randuri(tupluri/inregistrari) si care nu contin date la nivel agregat si inregistrarile sunt distincte unele fata de altele, iar coloanele nu se repeta. Fiecare linie se identifica printr-o valoare distincta, numita cheie primara. Pentru a accesa datele mai rapid se foloseste indexarea. Pentru a finaliza acest proiect am utilizat toate conceptele legate de baze de date (enumerate mai sus) si am atins toate cerintele recomandate. Sqldeveloper este un limbaj neprocedural si opereaza asupra datelor normalizate. Realizarea unei baze de date implica parcurgerea unor etape: -analiza domeniului economic pentru care se doreste proiectarea bazei de date -proiectarea propriu-zisa a bazei de date -implementarea(dezvoltarea operatiilor cu baze de date, incarcarea, actualizarea, exploatarea bazei de date) Se dorete a se tine evidenta produselor vandute dintr-un magazin. Pentru aceasta am creat o baza de date numita Evidenta Magazin care conine patru tabele. In tabelul utilizator se tine evidenta clientilor din tara, inregistrandu-se atributele codc (cheie primara), parola, nume, adr, tlf,cont,modplata. Tabela produse contine date produsele aflate in magazin. Se inregistreaza atributul codp (ca cheie primara),denp, pret, um, stoc. In tabela comenzi se tine evidenta datelor comenzilor facute : nrcom(cheie primara), codp, codp, si a cantitatii comandate. In facutra avem informatii referitoare la factura comenzilor facute. Contine atrigutele: codf(cheie primara), nrcom, dataliv.

UTILIZATOR CODC PAROLA NUME ADR TLF CONT MODPLATA

PRODUSE CODP DENP PRET UM STOC

COMENZI NRCOM CODP CODC CANT

FACTURA CODF NRCOM DATALIV

Creare tabele: create table utilizator ( codc varchar2(30), parola varchar2(50), nume varchar2(30), adr varchar2(30), tlf number(20), cont varchar2(15), modplata varchar2(50), constraint pk_codc primary key(codc) ); create table produse ( codp varchar2(30), denp varchar2(50), pret number(10), um varchar2(10), stoc number(5), constraint pk_codp primary key(codp) ); create table comenzi ( nrcom varchar2(30), codp varchar2(30), codc varchar2(30), cant number(5), constraint pk_nrcom primary key(nrcom), constraint fk_codp foreign key(codp) references produse(codp), constraint fk_codc foreign key(codc) references utilizator(codc) ); create table factura (

codf varchar2(30), datalivrare date, nrcom varchar2(30), constraint pk_codf primary key(codf), constraint fk_nrcom foreign key(nrcom) references comenzi(nrcom) );

Actualizari tabele: Sa se redenumeasca tablea UTILIZATOR in CLIENT rename utilizator to client; Sa se adauge restrictia de integritate produse_ck pentru ca fiecare produs sa existe in stoc alter table produse add constraint poduse_ck check(stoc>0); Sa se adauge coloana LOC in tabela CLIENT care sa contina localiatea clientului alter table client add loc varchar2(30); Sa se retina pretul produselor pe 15 caractere alter table produse modify pret number(15) ; Sa se stearga coloana MODPLATA din tabela CLIENT alter table client drop column modplata; Sa se adauge in tabele urmatoarele informatii: insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10b','qwer','Ionescu Silvia','Chibzuintei nr 31',0723456980,'3000120BCR','Adjud'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values

('10c','ascvb2','Vasile Diana','Caragiale nr 234',0234784998,'0128294BCR','Codlea'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10d','maim','Dumitriu ALina','Belvedere nr 102',0745020345,'210384BNR','Sacele'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10e','bulb','Daniliuc Maria','Piata Unirii nr 12',0213849490,'213453BNR','Bucuresti'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values('10f','rara','Crisoloveanu Rares','Valea Popii nr 1',0723123345,'0134337BRD','Brasov'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10g','papuc','Anastasie Mirela','Slavici nr 15',0268348303,'1828457BRD','Bucuresti'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10h','dolsc','Drog Simona','Independentei nr 526',074939844,'0294495ING','Codlea'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10i','kljd','Damaschin Georgiana','Dorobanti nr 2',078397304,'284922ING','Pitesti'); insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10j','msjf','Silvia Decut','Republicii nr 2',021338211,'01233BCR','Bucuresti'); insert into produse(codp,denp,pret,um,stoc) values ('01','memorie',250000,'buc',200); insert into produse(codp,denp,pret,um,stoc) values ('02','mouse',300000,'buc',150); insert into produse(codp,denp,pret,um,stoc) values ('03','mouse',420000,'buc',240); insert into produse(codp,denp,pret,um,stoc) values ('04','tastatura',900000,'buc',75); insert into produse(codp,denp,pret,um,stoc) values ('05','memorie',180000,'buc',34); insert into produse(codp,denp,pret,um,stoc) values ('06','cablu',10000,'metru',2000); insert into produse(codp,denp,pret,um,stoc) values ('07','cd',89000,'cutie',100); insert into produse(codp,denp,pret,um,stoc) values ('08','discheta',150000,'cutie',140);

insert into produse(codp,denp,pret,um,stoc) values ('09','discheta',19000,'buc',210); insert into produse(codp,denp,pret,um,stoc) values ('10','memorie',280000,'buc',20); insert into produse(codp,denp,pret,um,stoc) values ('11','stick',340000,'buc',23); insert into produse(codp,denp,pret,um,stoc) values ('12','stick',389000,'buc',20); insert into produse(codp,denp,pret,um,stoc) values ('13','stick',456000,'buc',45); insert into produse(codp,denp,pret,um,stoc) values ('14','notebook',25000000,'buc',2); insert into produse(codp,denp,pret,um,stoc) values ('15','modem',250000,'buc',14); insert into comenzi(nrcom,codp,codc,cant) values ('1001','02','10h',1); insert into comenzi(nrcom,codp,codc,cant) values ('1002','04','10d',3); insert into comenzi(nrcom,codp,codc,cant) values ('1003','13','10a',1); insert into comenzi(nrcom,codp,codc,cant) values ('1004','14','10b',1); insert into comenzi(nrcom,codp,codc,cant) values ('1005','13','10e',4); insert into comenzi(nrcom,codp,codc,cant) values ('1006','15','10f',1); insert into comenzi(nrcom,codp,codc,cant) values ('1007','08','10j',20); insert into comenzi(nrcom,codp,codc,cant) values ('1008','09','10d',15); insert into comenzi(nrcom,codp,codc,cant) values ('1009','08','10b',2); insert into comenzi(nrcom,codp,codc,cant) values ('1010','15','10g',4); insert into comenzi(nrcom,codp,codc,cant) values ('1011','07','10a',12); insert into comenzi(nrcom,codp,codc,cant) values ('1012','06','10a',6); insert into comenzi(nrcom,codp,codc,cant) values ('1013','01','10f',1); insert into comenzi(nrcom,codp,codc,cant) values ('1014','02','10i',3); insert into comenzi(nrcom,codp,codc,cant) values ('1015','03','10j',2); insert into factura(codf,datalivrare,nrcom) values ('20','10-nov-2007','1001'); insert into factura(codf,datalivrare,nrcom) values ('21','20-dec-2007','1011'); insert into factura(codf,datalivrare,nrcom) values ('22','10-aug-2007','1012'); insert into factura(codf,datalivrare,nrcom) values ('23','30-apr-2007','1013'); insert into factura(codf,datalivrare,nrcom) values ('24','20-feb-2007','1014'); insert into factura(codf,datalivrare,nrcom) values ('25','30-nov-2007','1015'); insert into factura(codf,datalivrare,nrcom) values ('26','27-sep-2007','1010'); insert into factura(codf,datalivrare,nrcom) values ('27','28-feb-2007','1009'); insert into factura(codf,datalivrare,nrcom) values ('28','29-apr-2007','1008');

insert into factura(codf,datalivrare,nrcom) values ('29','15-sep-2007','1007'); insert into factura(codf,datalivrare,nrcom) values ('30','20-aug-2007','1006'); insert into factura(codf,datalivrare,nrcom) values ('31','15-nov-2007','1005'); Sa se inregistraze un nou client insert into client(codc,parola,nume,adr,tlf,cont,loc) values ('10l','adosu','Dinculeasa Radu','Cristian nr 423',0734038505,'098384BRD','Brasov'); Un utilizator isi schimba parola: (utilizatorul a carui cod de inregistrare este 10a isi schimba parola) update client set parola='blaa' where codc='10a'; Sa se actualizeze PRET ca fiind mai mare cu 10% update produse set pret=pret*1.1; Sa se stearga clientii al carui CODC este 10c delete from client where codc=10c; Sa se modifice clientul Vasile Diana cu Constantin Andra update client set nume='Constantin Andra' where nume='Vasile Diana'; Sa se afiseze informatiile despre clientii care locuiesc in Codlea select * fron client where lower(loc)=codlea; Sa se selecteze denumirea numarul comenzii si codul facturii pentru comenzile cu data livrarii cuprinsa in intervalul 01/feb/2007 si 30/apr/2007,datele se ordoneaza dupa codul facturii select codf, nrcom from factura where dataliv between 01-feb-2007' and 30-apr-2007' order by codf; Sa se afiseze utilizatorii/clientii care nu sunt din Brasov select codc,nume,loc from client where upper(loc)<>'BRASOV'; Sa se afieze, concatenat, codul clientului i si numele clientului. Pentru irul astfel creat sa se afieze lungimea sa. select concat (codc, nume), cod_nume

length (concat (codc,nume)) lungime_sir from clienti; Sa se afiseze produsele a caror cantitate vanduta este mai mare de 5 si sa se grupeze dupa codul produselor select codp,max(cant) cantitate_maxima from comenzi having max(cant)>=5 group by codp; Sa se afiseze pretul mediu al produsului numit "mouse" select avg(pret) from produse where upper(denp)='MOUSE'; Sa se afiseze numele si adresa clientilor care sunt din Bucuresti select nume, adr from clienti where loc like'%Bucuresti%'; Sa se afiseze facturile care au valoare cuprinsa intre 200 000 si 500 000 si sa se ordoneze descrescator dupa data de livrare select * from factura where valoare between 200000 and 500000 order by datalivrare desc; Sa se afiseze cantitatea medie cumparata din fiecare produs select p.codp,avg(cant) cantitate_medie from produse p,comenzi c where p.codp=c.codp group by p.codp order by avg(cant); Sa se afiseze valoarea fiecarei facturi/comenzi alter table factura add valoare number(20); update factura f set valoare =(select sum(cant*pret) valoare from produse p,comenzi c where p.codp=c.codp and f.nrcom=c.nrcom group by f.codf);

Sa se afiseze produsele a caror cantitate vanduta este mai mare decat cea mai mica cantitate vanduta a produsului a carui cod este "08" select codp,cant from comenzi where codp<>'08'and cant>some (select distinct cant from comenzi where codp='08') order by cant desc; Sa se selecteze produsele care au stocul egal cu 20 si cele care au stocul cuprins intre 90 si 200 select * from produse where stoc=20 union select * from produse where stoc between 90 and 200; Sa se afiseze codul produselor ,mai putin a celor care au uniatile de masura cutie si metru select codp from produse minus select codp from produse where um in (cutie,metru); Creare view: Create view v as select codc,nume from client; Select * from v; Creare indecsi: create index ind_prod on produse(denp); create index ind_com on comenzi(nrcom); create index ind_utiliz on client(nume); create index ind_fact on factura(codf); Stergerea tabelelor drop table client; drop table produse; drop table comenzi; drop table factura;