Proiect Sgbd Luca Stefania

April 13, 2019 | Author: Alin Latu | Category: N/A
Share Embed Donate


Short Description

CSIE, proiect SGBD...

Description

Baza de date creata vanzarea biletelor la diferite concerte prin agentiile de vanzare de  bilete. Are in componenta trei tabele (concert,formatie,agentie,comenzi si client). Tabelele concert si formatie sunt legate intre ele prin codco ncert,tipul de legatura dintre ele fiind 1 la la m ; tabelele concert si agentie sunt legate prin codconcert, legatura fiinf m la m ; tabelele agentie si comenzi au o legatura d tip m la m ,fiinf legate prin codcomanda, iar tabelele clienti si comenzi sunt legate prin id_client si prezinta o legatura de tip 1 la m.

FORMATIE

codformatie

numeformatie

nr_artisti

tarif

gen_muzical

Codconcer  t 

durata

pret

CONCERT

codconcert

locatie

data_concert

nr_bilete

AGENTIE

codagentie

nr_bilete

 

codconcert 

codcomand  a

cant cantit itat ate e

 

id_client 

pret

COMENZI

codc codcom oman anda da CLIENTI

id_client

nume_client

prenume_client

D!" TAB#$ concert %A&%AD$ %!'&TA'T&; D!" TAB#$ formatie %A&%AD$ %!'&TA'T&; D!" TAB#$ agentie %A&%AD$ %!'&TA'T&; D!" TAB#$ comenzi %A&%AD$ %!'&TA'T&; D!" TAB#$ client %A&%AD$ %!'&TA'T&; create table concert (codconcert number() constraint "*e+_concert primar+ e+, locatie varc-ar(/) not null, data_concert date, nr_bilete number(1/), durata number(0),  pret number(1/)); create table formatie (codformatie number(),

1

numeformatie varc-ar(0) not null, nr_artisti number(), tarif number(1/), codconcert number() not null, gen_muzical varc-ar(1/)); alter table formatie add constraint p_agnt primar+ e +(codformatie); create table agentie (codagentie number() constraint p_comenzi primar+ e+, codconcert number() not null, codcomanda number() not null, nr_bilete number(1/), %!'&TA'T 2*_concert 2!$3' *$4 (codconcert) $2$$'%$& concert(codconcert)); create table comenzi (codcomanda number() not null, codclient number() not null, cod_concert number() not null, cantitate number(), nrcom number(5)); %reate table client (id_client number(5) not null, nume_client varc-ar(/),  prenume_client varc-ar(/), nrcom number() not null); alter table comenzi add constraint p_codcomanda primar+ e+ (codcomanda); alter table client add constraint p_idclient primar+ e+ (id_client); alter table agentie modif+ (codcomanda number()); alter table agentie add constraint 2*_comenzi 2!$3' *$4 (codcomanda) $2$$'%$& comenzi(codcomanda); alter table formatie add %!'&TA'T 2*_concrt 2!$3' *$4 (codconcert) $2$$'%$& concert(codconcert); alter table comenzi add id_client number(5); nu mber(5); alter table comenzi add constraint f_idclient foreign e+(id_client) references client(id_client); alter table comenzi add constraint c_cant c-ec (cantitate6/); alter table client add varsta number(); alter table client set unused column varsta; alter table client drop unused column;



insert into concert values (1//,7sala palatului7,to_date(7118/98//7,7DD8::8 44447),///,7-7,0///); insert into concert values (1/1,7parcul izvor7,to_date(718/58//07,7DD8::8 44447),0//,7-7,/); insert into concert values (11/,7sala parlamentului7,to_date(7/0818//7,7DD8::8 44447),0//,71-/7,0/////); insert into concert values (1/,7palatului copiilor7,to_date(7/8/18//57,7DD8::8 44447),1///,71-7,5////); insert into concert values (1/,7parcul izvor7,to_date(718/98//7,7DD8::8 44447),0//,7/min7,1////); insert into concert values (1/,7sala palatului7,to_date(718/08//97,7DD8::8 44447),///,7-7,0//); insert into concert values (10/,7palatul copiilor7,to_date(70818//57,7DD8::8 44447),1//,71-7,/); insert into concert values (15/,7sala parlamentului7,to_date(7/8/58//07,7DD8::8 44447),19//,7-7,10////); insert into concert values (//,7parcul izvor7,to_date(7118118//7,7DD8::8 44447),1///,7/min7,1///); insert into concert values (1/,7sala palatului7,to_date(7/8/8//7,7DD8::8 44447),5//,7-/7,0////); insert into concert values (0/,7sala parlamentului7,to_date(7/18/8//07,7DD8::8 44447),100/,71-/7,0///); insert into concert values (//,7parcul izvor7,to_date(7158/8//7,7DD8::8 44447),1//,7-7,/);

insert into formatie values (/1,7compact7,0,1////,1//,7roc7); insert into formatie values (/,7andreea balan7,1,////,1/1,7pop7); insert into formatie values (/,7pin7,1,1/////,11/,77); insert into formatie values (/,7blond+7,,//// ,1/,7pop7); insert into formatie values (/0,7vita de vie7,,0///,1/,7roc7); insert into formatie values (1/,7sistem7,5,0/0//,10/,7 7); insert into formatie values (11,7mandinga7,11,////,15/,7latino7); insert into formatie values (10,7elena7,1,/// ,//,7pop7); insert into formatie values (/,7blond+7, ,/ , 0/,7 7); insert into client values (//1//0,7matei7,7simona7);



insert into client values (//1/1/,7stefan7,7maria7); insert into client values (//1/10,7marin7,7florin7); insert into client values (//1//,7stoica7,7ana7); insert into client values (//1//1,7vasile7,7ion7); insert into client values (//1//,7constantinescu7,7maria7); insert into client values (//1//,7baciu7,7florin7); insert into client values (//1//,7nastase7,7raluca7); insert into comenzi values (//,0,//1//1,////); insert into comenzi values (1/,,//1//0,1////); insert into comenzi values (/,1/,//1/1/,///); insert into comenzi values (/,1,//1//,0///); insert into comenzi values (/,,//1//,nr_bilete1.1/ =-ere locatie>loc; end nr_bilete; declare v_loc varc-ar(/);  begin v_loc@>7parc7; nr_bilete(v_loc); end; #. Sa se afiseze numele si prenumele unui client care a dat o comanda si a se trateze e$ceptiile care pot aparea.

1/

declare ec eception; v_nume client.nume_clientt+pe; v_pren client.prenume_clientt+pe;  begin select nume_client,prenume_client into v_nume,v_pren from client =-ere id_client in (select id_client from comenzi =-ere codcomanda>//); dbms_output.put_line (v_nume ?? 7 7 ?? v_pren); eception =-en no_data_found t-en dbms_output.put_line (7'u eista acest client7); end; vasile ion

%. Pentru un an dat de la tastatura,sa se afiseze detalii despre concertele din acel an.

declare cursor c1(an number) is select locatie,nr_bilete,durata locatie,nr_bilete,durata from concert =-ere etract (+ear (+ear from data_concert) >an; rec_an c1ro=t+pe; v_an number;  begin v_an@>//; open c1(v_an); loop fetc- c1 into rec_an; eit =-en c1notfound; dbms_output.put_line(7n anul 7 ?? v_an ???? 7 la 7 ?? rec_an.locatie ?? 7 s8au vandut@ 7 ?? rec_an.nr_bilete ?? 7 bilete si concertul a durat@ 7 ?? rec_an.durata); end loop; close c1; end;

rezultat@  ,n anul 200 la sala palatului s-au vandut 2000 bilete si concertul a durat 2.  ,n anul 200 la sala parlamentului s-au vandut 2500 bilete si concertul a durat 1.30  ,n anul 200 la parcul i#vor s-au vandut 1100 bilete si concertul a durat 0min  ,n anul 2007 la parcul i#vor s-au vandut 550 bilete si concertul a durat 30min  ,n anul 2007 la sala palatului s-au vandut 2&00 bilete si concertul a durat 2.20  ,n anul 2007 la parcul i#vor s-au vandut 1320 bilete si concertul a durat 3.

&. Sa se stabileasca tariful formatiilor,in functie de numarul de artisti din care sunt formate.

11

create or replace function tarife (nr_art number) return number  is v_tarif formatie.tarift+pe;  begin select tarif into v_tarif from formatie; v_tarif @> case =-en nr_art >1 t-en 1/// =-en nr_art> t-en /// =-en nr_art> t-en /// else /// end; return v_tarif; end tarife; 1!.Sa se creeze o functie care pe baza codului de comanda,sa afiseze numarul de bilete comandate .

 create or replace function comanda(id comenzi.codcomandat+pe) return number  is v_cant comenzi.cantitatet+pe;  begin select cantitate into v_cant from comenzi =-ere codcomanda>id; return v_cant; eception =-en no_data_found t-en return null; end; declare v_id comenzi.codcomandat+pe; v_com number;  begin v_id@>7/7; dbms_output.put_line (7 acest client a comandat@ 7); v_com@>comanda(v_id); dbms_output.put_line (v_com ?? 7 bilete7 ); end; rezultat@ acest client a comandat 10 bilete 11.Se da un nume de la tastatura.Sa se afle daca e$ista vreun client cu acest nume.

create or replace function cauta (nume client.nume_clientt+pe) return boolean is v_nume client.nume_clientt+pe;  begin

1

select prenume_client into v_nume from client =-ere nume_client>nume; if v_nume>nume t-en return true; else return false; end if; eception =-en no_data_found t-en return null; end; declare v_nume client.nume_clientt+pe;  begin v_nume@>7matei7; if cauta(v_nume) is null t-en dbms_output.put_line (7nu eista comenzi pe acest nume7); elsif cauta(v_nume) t-en dbms_output.put_line (7eista acest client7); else dbms_output.put_line (7nu eista7); end if; end; rezultat@ e/ista acest client 

12. Sa se creeze o procedura care pe baza codului de comanda,afiseaza numarul de bilete si pretul acestora.

create or replace procedure cant ( codc in comenzi.codcomandat+pe,v_cantitate out comenzi.cantitatet+pe,v_pret out comenzi.prett+pe) is  begin select cantitate,pret into v_cantitate,v_pret from comenzi =-ere codcomanda>codc; end ; declare nr comenzi.codcomandat+pe; v_cantitate comenzi.%A'TTAT$t+pe; v_pret comenzi."$Tt+pe;  begin nr@>//; cant(nr,v_cantitate,v_pret); dbms_output.put_line (7cantitatea de@ 7?? v_cantitate?? v_cantitate?? 7 bilete si pretul de @ 7 ?? v_pret ?? 7 lei7); end; rezultat@ cantitatea de 5 bilete si pretul de  30000 lei

1

13. Sa se realizeze o procedura care sa afiseze comenzile pentru un an dat.

create or replace procedure com_an (an in number, codc out comenzi.codcomandat+pe, cant out comenzi.cantitatet+pe,pret out comenzi.prett+pe) as  begin select codcomanda,cantitate,pret into codc,cant,pret from comenzi =-ere codcomanda in (select codcomanda from agentie =-ere codconcert in (select codconcert from concert =-ere etract(+ear from data_concert)>an)); end; declare an number; v_codc comenzi.codcomandat+pe; v_cant comenzi.%A'TTAT$t+pe; v_pret comenzi."$Tt+pe;  begin an@>//9; com_an(an,v_codc,v_cant,v_pret); dbms_output.put_line (7%omanda are codul@ 7?? v_co dc?? 7 o cantitate de@ 7?? v_cant v_can t ?? 7 bilete si un pret de@ 7?? v_pret ?? 7 lei7); end; %omanda are codul@ / o cantitate de@ 1 bilete si un pret de@ 0/// lei An@>//0 &unt mai multe comenzi in acel an 14. Sa se creeze un declansator pentru tabela comenzi,atunci cand se adauga o noua inregistrare.

create or replace trigger com  before insert on comenzi  begin dbms_output.put_line (7&8a adaugat o comanda7); end; insert into comenzi values (9/,,//1//0,0///); rezultat@ -a adaugat o comanda

15.Sa se creeze un declansator care sa nu permita comenzi mai mici de 2 bilete.

1

 %$AT$ ! $"#A%$ T33$ cant B$2!$ '&$T or E"DAT$ on comenzi 2! $A%F !G B$3' 2 @ne=.cantitateH t-en A&$_A""#%AT!'_$! (8//, (8//, 7"entru o comanda e nevoie de cel putin   bilete7); end if; $'D; I update comenzi set cantitate>1 =-ere codcomanda>1/; 16. Sa se afiseze detalii despre declansatoul creat anterior.

select trigger_t+pe,table_name,triggering_event from user_triggers =-ere trigger_name>7cant7; 1#.Sa se creeze un declansator care sa impuna data concertului mai mare de 2! de minute.  create or replace T33$ concert B$2!$ '&$T or E"DAT$ on concert 2! $A%F !G B$3' 2 @ne=.durataH/ t-en A&$_A""#%AT!'_$! (8////, (8////, 7En concert dureaza mai mai mult decat durata durata introdusa7); end if; $'D;

update concert set durata>10 =-ere codconcert>1//; 1%. Sa se creeze un declansator care sa actualizeze codul clientului in tabela comenzi atunci cand el este modificat in tabela clienti.

%$AT$ ! $"#A%$ T33$ inloc B$2!$ E"DAT$ !2 id_client !' client 2! $A%F !G B$3' update comenzi set id_client > @id_client =-ere id_client > @old.id_client;

10

$'D; update client set id_client>//1/// =-ere id_client>//1//0;

1&.Sa se impuna o restrictie a tarifului,in cazul in care acesta este prea mare.

declare ec eception; v_tarif formatie.tarift+pe; cursor c1(nume varc-ar) is select select tarif from formatie =-ere numeformatie>nume; v_nume varc-ar(/);  begin v_nume@>7compact7; open c1(v_nume); loop fetc- c1 into v_tarif; eit =-en c1notfound; if v_tarif60//// t-en raise ec; elsif v_tarif in (////,0////) t-en dbms_output.put_line(7tariful cerut este acceptabil7); else dbms_output.put_line (7Tariful cerut este bun7); end if; end loop; eception =-en ec t-en dbms_output.put_line(7Tariful cerut este prea mare7); end; Tariful cerut este bun J_nume>KsistemK@ Tariful cerut este prea mare 2!.Sa se creeze un pac'et care sa actualizeze tabela comenzi.

create or replace T33$ luna B$2!$ '&$T or E"DAT$ on concert 2! $A%F !G declare v_dur varc-ar(0/); B$3' select to_c-ar(data_concert, 7++++mm7)into 7++++mm7)into v_dur from concert =-ere codconcert>1//; if v_dur>7///97 t-en A&$_A""#%AT!'_$! (81/1/, (81/1/, 7'u se pot tine concerte in aceasta luna7); end if; $'D; update concert set data_concert>to_date(7158/98//07,7DD8::844447) =-ere codconcert>1/1;

15

. create or replace "A%*A3$ actualizare_comanda &  procedure adauga_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe,  p_id_client comenzi.id_clientt+pe,  p_pret comenzi.prett+pe);  procedure modifica_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe,  p_d_client comenzi.id_clientt+pe,  p_pret comenzi.prett+pe);  procedure modifica_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe);  procedure sterge_comanda (p_codc comenzi.%!D%!:A'DAt+pe); function eista_cod (p_codc comenzi.codcomandat+pe) return boolean; eceptie eception; $'D;

%$AT$ ! $"#A%$ "A%*A3$ B!D4 actualizare_comanda &  procedure adauga_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe,  p_id_client comenzi.id_clientt+pe,  p_pret comenzi.prett+pe ) is  begin if eista_cod(p_codc) t-en raise eceptie; else insert into comenzi values (p_codc, p_cant, p_id_client, p_pret); end if; eception

1

=-en eceptie t-en dbms_output.put_line(7comanda eistentaL7); end;  procedure modifica_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe,  p_id_client comenzi.id_clientt+pe,  p_pret comenzi.prett+pe ) is  begin if eista_cod(p_codc) t-en update comenzi set cantitate>p_cant,id_client>p_id_client , pret>p_pret =-ere codcomanda>p_codc; else raise eceptie; end if; eception =-en eceptie t-en dbms_output.put_line(7comanda cu aceast cod nu eistaL7); end;  procedure modifica_comanda (p_codc comenzi.codcomandat+pe,  p_cant comenzi.cantitatet+pe ) is  begin if eista_cod(p_codc) t-en update comenzi set cantitate>p_cant =-ere codcomanda>p_codc; else raise eceptie; end if; eception =-en eceptie t-en dbms_output.put_line(7%omanda cu aceast cod nu eistaL7); end;  procedure sterge_comanda (p_codc comenzi.codcomandat+pe) is  begin

19

if eista_cod(p_codc) t-en delete from comenzi =-ere codcomanda>p_codc; dbms_output.put_line(7%omanda cu codul 7??p_codc??7 a fost stearsaL7); else raise eceptie; end if; eception =-en eceptie t-en dbms_output.put_line(7comanda cu aceast cod nu eistaL7); end; function eista_cod (p_codc comenzi.codcomandat+pe) return boolean is v_unu number;  begin select 1 into v_unu from comenzi =-ere codcomanda>p_codc; return true; eception =-en no_data_found t-en return false; end; $'D;

eecute actualizare_comanda.adauga_comanda(/,//1/0, 1, ///); select  from comenzi; eecute actualizare_comanda.modifica_comanda(/,//1/1/, 9, ////); select  from comenzi; eecute actualizare_comanda.modifica_comanda(/, 0); select  from comenzi; eecute actualizare_comanda.sterge_comanda(/1); select  from produse;

1<

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF