Sunteți pe pagina 1din 11

1.

Descrierea bazei de date

Baza de date este format din patru tabele cu legturi ntre ele, pentru a asigura o implementare ct mai accesibil i mai potrivit a gestiunii operelor vndute ntr -o galerie de art.

Cele patru tabele conin date despre expoziii, clieni, opere i artiti, astfel:

EXPOZIIE: codul expoziiei, numele expoziiei, data deschiderii, data nchiderii, adresa acesteia;

ARTITI: CNP artist, nume artist, adres, telefon, e-mail; CLIENI: CNP client, nume client, adres, telefon, e-mail; OPERE: codul operei, expoziia din care face parte, artistul care a realizat -o , clientul care a cumprat-o, preul, data vnzrii.

Legturile ntre tabele se fac prin intermediul tabelei OPERE, o oper avnd ca atribute (cheie strin compus) cnp-ul artistului, cnp-ul autorului i codul expoziiei.

2. Schema Conceptuala

Clienti
Cnp_client Nume Adresa Telefon E-mail

Opere

Cod_opera

Denumire

Pret

Cod_expo

Cnp_artist

Data_vanzarii

Artisti Telefon Nume Adresa Cnp_artist


Email

Expozitii Adresa Nume Data_deschiderii Data_inchiderii Cod_expo

create table clienti(cnp_client number(13) primary key, nume varchar2(40),adresa varchar2(50),telefon number(15),email varchar2(50)); create table expozitii(cod_expo varchar2(20) primary key,nume varchar2(50),data_deschiderii date, data_inchiderii date,adresa varchar2(50)); create table artisti(cnp_artist number(13) primary key, nume varchar2(50), adresa varchar2(50), telefon number(15), email varchar2(50)); create table opere(cod_opera number(15) primary key, denumire varchar2(50), pret number(7), cod_expo references expozitii(cod_expo), cnp_artist references artisti(cnp_artist), data_vanzarii date);

4. Adugarea de nregistri n tabele


Pentru tabela ARTITI: insert into artisti values('2890423295890','Maria Ionescu','Bucuresti, Bd. Magheru, nr. 50', '0213456798', 'maria_ioenscu@artgallery.ro'); insert into artisti values('1780321678955', 'Ciobotea Andrei', 'Bucuresti, Bd. Regina Elisabeta, nr. 17', '0213456889', 'ciobo.a@artgallery.ro'); insert into artisti values('2680312879445','Ionescu Paraschiva','Campina, Str. Alexandru Odobescu, nr. 23', '0244336754',null); insert into artisti values('1560321564665','Ghiteanu Petre','Ploiesti, Bd. Republicii, nr. 150', '0244556721', null); insert into artisti values('1600312543446','Vivian Dan','Braila, Str. Pacii, nr. 11', '0733453221', 'vividan@yahoo.com'); insert into artisti values('2680319445343','Irimia Luminita','Targu Jiu, Bd. Constantin Brancusi, nr. 12', '0733451221', 'irimia-luminita@gmail.com'); insert into artisti values('1690423444534','Miclea Dragos','Filipestii de padure,Str. Centrala, nr. 45', '0766781234', 'miclea_dragos@gmail.com'); insert into artisti values('1561123455456','Gurzun Lucian','Bucuresti, Bd. Crangasi, nr. 120', '0213467556', 'gurzunlucian@artgallery.ro'); insert into artisti values('2750904589032','Papusoiu Mariana','Cluj-Napoca, Bd. Maracinelui, nr. 76', '0766543321', 'marianapapusoiu@yahoo.com'); insert into artisti values('1650323564454','Dan Cristian','Constanta, Str. Popa Tatu, nr. 554', '0732675342', 'dan_cristian@yahoo.com'); Pentru tabela CLIENTI:

insert into clienti values('1890423345654','Puricelu Ciprian','Bucuresti, Bd. Magheru, nr. 540','0216756798',null); insert into clienti values('2890327678955','Banu Loredana','Ploiesti, Bd. Republicii, nr. 172','0244765493','lory89@yahoo.com'); insert into clienti values('2870312879445','Ionescu Ioana','Campina, Str. Alexandru Odobescu, nr. 29','0745221123',iioana@yahoo.com); insert into clienti values('1700321564665','Bucurei Petru','Breaza, Str. Mare, nr. 150',null,null);

insert into clienti values('1680312543446','Marinescu Dan','Braila, Str. Alexandru Ioan Cuza, nr. 134','0733953221','danmarinescu@yahoo.com'); insert into clienti values('2700319445343','Pioara Diana','Targu Mures, Bd. Constantin cel mare, nr. 132','0722451221','aylin65@gmail.com'); insert into clienti values('1790423444534','Bucur Marian','Galati ,Str. Toamnei, nr. 35','0765781234',null); insert into clienti values('1901123455456','Badiceanu Lucian','Campina, Str. B.P. Hasdeu, nr. 10','0722467556','badiluci@gmail.ro'); insert into clienti values('27509045778032','Popescu Mihaela','Crivina, Bd. Maracinilor, nr. 796','0723543321',null); insert into clienti values('1750323564454','Popovici Cristian','Bucuresti, Str. Ion Agarbiceanu , nr. 345','0733675342','cristianpopovici@yahoo.com');

Pentru tabela EXPOZITII:

insert into expozitii values('expo1','Naturi Statice', to_date('29/01/09 ',' dd/mm/yy'),to_date('25/02/09 ',' dd/mm/yy'),'Sun Art Studio, Ioan Florescu 13, Bucuresti '); insert into expozitii values('expo2','Flori', to_date('12/01/07 ',' dd/mm/yy'),to_date('25/02/07 ',' dd/mm/yy'),'Sun Art Studio, Ioan Florescu 13, Bucuresti '); insert into expozitii values('expo3','Portretul modern', to_date('15/02/09 ',' dd/mm/yy'),to_date('15/04/09 ',' dd/mm/yy'),'Sun Art Studio, Ioan Florescu 13, Bucuresti '); insert into expozitii values('expo4','Parodii si caricaturi', to_date('01/01/09 ',' dd/mm/yy'),to_date('01/07/09 ',' dd/mm/yy'),'Sun Art Studio, Ioan Florescu 13, Bucuresti '); insert into expozitii values('expo5','Feminin', to_date('01/03/08 ',' dd/mm/yy'),to_date('01/04/08 ',' dd/mm/yy'),'Muzeul national de arta contemporana, Izvor, Bucuresti '); insert into expozitii values('expo6','Inaripari', to_date('20/09/08 ',' dd/mm/yy'),to_date('25/11/08 ',' dd/mm/yy'), 'Muzeul national de arta contemporana, Izvor, Bucuresti '); insert into expozitii values('expo7','Miresme de primavara', to_date('10/03/09 ',' dd/mm/yy'), to_date('10/05/09 ',' dd/mm/yy'),'Galeria Veroniki Art, Intrarea Murmurului 2, Bucuresti '); insert into expozitii values('expo8','Pastele la romani', to_date('14/03/07 ',' dd/mm/yy'),to_date('15/05/07 ',' dd/mm/yy'),'Sun Art Studio, Ioan Florescu 13, Bucuresti ');

insert into expozitii values('expo9','Relativitati', to_date('17/01/09 ',' dd/mm/yy'),to_date('25/08/09 ',' dd/mm/yy'), 'Muzeul national de arta contemporana, Izvor, Bucuresti '); insert into expozitii values('expo10','Pitoresc in peisajele romanesti', to_date('20/07/08 ',' dd/mm/yy'), to_date('27/10/08 ',' dd/mm/yy'), 'Galeria Veroniki Art, Intrarea Murmurului 2, Bucuresti '); Pentru tabela OPERE:

insert into opere values ('1', 'Trandafiri',450,'expo1', '2890423295890', to_date ('23/02/09', 'dd/mm/yy'), '1790423444534'); insert into opere values ('123', 'Flori de camp',350,'expo1', '2890423295890', to_date ('23/02/09', 'dd/mm/yy'), '1790423444534'); insert into opere values ('2', 'Prietenii','500','expo3','2890423295890',to_date('15-03-2009','dd-mmrrrr'),'2700319445343'); insert into opere values('3', 'Valea Prahovei','1100','expo10',' 1650323564454',to_date('25-08-2009','ddmm-rrrr'),' 1750323564454'); insert into opere values('4', 'Ioana','650','expo3',' 2750904589032',to_date('03-04-2009','dd-mm-rrrr'),' 1750323564454'); insert into opere values('5', 'Timpul','1500','expo9',' 1561123455456',to_date('21-05-2009','dd-mmrrrr'),' 1890423345654'); insert into opere values('6', 'Intrinsec','1050','expo6',' 1690423444534',to_date('30-10-2008','dd-mmrrrr'),' 1890423345654'); insert into opere values('7', 'Presedintele','590','expo4',' 1780321678955',to_date('10-05-2009','dd-mmrrrr'),' 1901123455456'); insert into opere values('8', 'Apolitic','670','expo4',' 1560321564665',to_date('04-06-2009','dd-mmrrrr'),'2700319445343'); insert into opere values('9', 'Iarna pe malul marii','800','expo10',' 1650323564454',to_date('05-092008','dd-mm-rrrr'),' 1680312543446'); insert into opere values('10', 'Pomi infloriti in Bucuresti','350','expo7',' 2680312879445',to_date('30-032009','dd-mm-rrrr'),' 1901123455456'); insert into opere values('11', 'Invierea','700','expo8',' 2680312879445',to_date('12-04-2007','dd-mmrrrr'),' 1680312543446'); insert into opere values('12', 'El si ea','900','expo3',' 1560321564665',to_date('16-03-2009','dd-mmrrrr'),' 2890327678955');

insert into opere values('13', 'Ingerii','760','expo6',' 1650323564454',to_date('14-19-2008','dd-mmrrrr'),' 2750904577832'); insert into opere values('14', 'Ceahlaul','490','expo10',' 1780321678955',to_date('15-09-2008','dd-mmrrrr'),' 2750904577832'); insert into opere values('15', 'Pe malul Dunarii','900','expo10',' 2680319445343',to_date('15-082008','dd-mm-rrrr'),' 1700321564665'); insert into opere values('16', 'Inlantuiri','1200','expo5',' 1780321678955',to_date('25-03-2008','dd-mmrrrr'),'2700319445343');

B. Interactiunea cu serverul Oracle prin intermediul comenzilor sql (LDD si LMD). set serveroutput on DECLARE BEGIN /*-- . S se mreasc preul operelor cu 100 pentru operele care au preul mai mic de 500 RON UPDATE opere SET pret=pret+100 WHERE pret<500; */ /*-- S se reduc preul operelor din expoziia Pitoresc in peisajele romanesti cu 100. UPDATE opere SET pret=pret-100 WHERE cod_expo=(select cod_expo from expozitii where lower(nume)='pitoresc in peisajele romanesti'); */ --Sa se insereze o noua opera insert into opere values ('129', 'Cisterna la vale,350,'expo1', '2830423553426', '1600101769956',
to_date ('06/06/13', 'dd/mm/yy'));

END; /

--LMD insert,update,delete set serveroutput on accept v_cod_opera prompt('Introduceti codul operei pe care vreti sa o mutate la expozitia expo1:'); accept v_vb prompt('Doriti realizarea tranzactiei?[da/nu]'); define v_c_expo:='expo1' DECLARE v_opere opera.denumire%type; vec1_rec opere%rowtype; BEGIN v_opere:=&v_cod_opera; dbms_output.put_line('afisez datele despre opera selectata:'); select * into vec1_rec from opere where denumire=v_opere; dbms_output.put_line('codul operei: '||vec1_rec.cod_opera||' numele: '||vec1_rec.denumire||' pret: '||vec1_rec.pret||' cod expozitie: '||vec1_rec.cod_expo); IF '&v_vb'='da' THEN UPDATE opere set cod_expo=&v_c_expo where cod_opera=v_cod_opera; dbms_output.put_line(Opera transferata la' || v_c_expo); ELSE dbms_output.put_line(Tranfer anulat); END IF; END; / INSERT INTO echipa(cod_e,nume_e,nr_jucatori,camp_castigate,valoare,cod_ l)VALUES(80,'Sevillia',42,18,1325672,4); DELETE FROM echipa where cod_e='80'; END; /

C. Structuri alternative si repetitive. structura alternative IF Sa se mareasca pretul operei cu codul 123 avand urmatoarele conditii: daca pretul operei este sub 500 RON atunci se va mari de 3 ori pretul operei, daca pretul operei este cuprins intre 500 si 800 atunci se va dubla,altfel va creste cu 50%.

set serveroutput on declare v_pret opere.pret%type; begin select pret into v_pret from opere where cod_opera=123; dbms_output.put_line ('Pretul initial este: '||v_pret); if v_pret<500 then v_pret:=3*v_pret; elsif v_pret between 500 and 800 then v_pret:=2*v_pret; else v_pret:=1.5*v_pret; end if; dbms_output.put_line('Pret final este: '||v_pret); end; / -structura repetitiva Sa se creeze o tabela in care vor fi stocate informatii despre 10 opere existente, folosind structura repetitive for .. loop CREATE TABLE info_opere (denumire_opera VARCHAR2(30), cod_opera number(4) not null, pret number(10), cnp_artist number(13); SET SERVEROUTPUT ON DECLARE v_cod info_opere.cod_opera%type; BEGIN v_cod:=&v_cod; FOR i in 1..10 LOOP INSERT INTO info_opere(&denumire_opera,v_cod,&pret,&cnp_artist; v_cod:=v_cod+1; END LOOP; END; / select * from info_opere;

D. Tratarea exceptiilor. Implicite

--tratati exceptia implicita no_data_found set serveroutput on declare v_nume_opera opera.denumire%type; begin select denumire into v_nume_opera from opere where pret='3850'; dbms_output.put_line(v_nume_opera); exception when no_data_found then dbms_output.put_line ('Nu exista aceasta opera!'); end; / ---creati o exceptie care apare in cazul in care se introduc insuficiente date intr-o tabela set serveroutput on declare dateins exception; pragma exception_init(dateins,-02290); begin insert into opere values(888,'Flori de mac',6000,192421912435,1701); exception when dateins then dbms_output.put_line('Date insuficiente'); when others then dbms_output.put_line(Alta eroare aparuta); end; / - explicite --cand nu exista opera cu codul respectiv set serveroutput on declare invalid_opera exception; begin update opere

set denumire='Car cu pepeni' where cod_opera=1876; if sql%notfound then raise invalid_opera; end if; exception when invalid_opera then dbms_output.put_line('Nu exista opera cu acest cod.'); end; /

E. Gestionarea cursorilor: impliciti si expliciti. cursori impliciti

--sa se stearga o inregistrare si sa se contorizeze nr de randuri sterse SET SERVEROUTPUT ON DECLARE v_numar NUMBER(2); BEGIN DELETE FROM opere WHERE pret='900'; v_numar:=SQL%ROWCOUNT; DBMS_OUTPUT.PUT_LINE (v_numar ||' inregistrari sterse'); COMMIT; END; / select * from opera;

cursori expliciti

--afisati folosind un cursor toate operele care au pret mai mare decat parametrul cursorului set serveroutput on declare cursor c_opera(p_pret number) is select cod_opera,denumire,pret,cnp_artist from opere where pret>p_pret order by pret; v_pret number(10); rec_opera c_opera%rowtype;--o dublura a cursorului opera begin v_pret:=500; dbms_output.put_line (Opere al caror pret este mai mare de '||v_pret); if not c_opera%isopen then open c_opera(v_pret); end if; loop fetch c_opera into rec_opera; exit when c_opera%notfound; dbms_output.put_line('Cod_opera'||rec_opera.cod_opera||'den umire opera'||rec_opera.denumire||', are pretul '||rec_opera.pret); end loop; close c_opera; end; /

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