Documente Academic
Documente Profesional
Documente Cultură
Proiect BD Avansate Gabriel Decean
Proiect BD Avansate Gabriel Decean
Pentru a realiza
valutar.Avand in vedere faptul ca tot mai multe persoane utilizeaza serviciile caselor de schimb valutar,m-am gandit sa tin evidenta in functie de tipul operatiunilor caselor de schimb ,adica de cumpararea si/sau vanzarea de valute. In primul rand am creat tabele care contin informatiile necesare atat pentru casele de schimb cat si pentru clientii acestora,dupa care am analizat aceste tabele pentru a le normaliza pana la 3NF. Am verificat fiecare tabel pentru a nu exista campuri neatomice ,atribute repetitive sau atribute care sa fie dependente functional. Mai jos voi prezenta tabelele si explicatiile pentru fiecare din ele,dupa care voi prezenta tabelele normalizate cu legaturile dintre ele si tipul acestora.
Clienti
Explicatii:
Cod_cl este de tip number si reprezinta cheia primara a acestui tabel, asigurnd identificarea unic a unui client.Prin aceasta cheie se asigura legatura cu tabelele
Operatiuni_valutare si Agenti_de_schimb;numarul maxim de cifre acceptat este 5; Nume este de tip char si reprezinta un atribut al tabelei;nu trebuie sa contina mai mult de 25 caractere; Prenume este de tip char si reprezinta un atribut al tabelei;ca si atributul Nume :nu trebuie sa contina mai mult de 40 de caractere ; Strada este de tip char si reprezinta tot un atribut al tabelei ; Nr este de tip char si este un atribut al tabelei;paote sa admita si valori nule Ap. Este tot de tip char si atribut; Localitatea este de tip char si este un atribut care nu poate avea valori nule; Judet este de tip char si este tot un atribut care nu poate sa contina valori nule.
Tip_valuta:
Explicatii:
Cod_val este de tip char si este cheie primara si face legatura cu tabelele :rata_de_schimb,operatiuni_valutare si agenti_de_schimb;numar maxim de caractere :8; Den este atribut ,char si are numar maxim de carectere 15
Rata_de_schimb:
Explicatii:
Cod_r este de tip number si este cheia primara in acest tabel;numarul maxim de cifre este 8;face legatura cu tabelul operatiuni_valutare; Den_r este de tip char si reprezinta un atribut al acestui tabel, avand numarul maxim de acractere 20; Cod_val este de tip char si este tot cheie straina ,luand doar valorile din tabela tip_valuta; Rata este de tip number si este un atribut al acestei tabele;numarul maxim de cifre este 8;
Operatiuni_valutare:
Explicatii:
Cod_op este de tip number si reprezinta cheia primara in acest tabel;numarul maxim de cifre este 10;face legatura cu tabelul agenti_de_schimb; Den_op este de tip char si este un atribut al acestui tabel; Cod_val la fel ca si campul den; Cod_r este cheie straina ;ia valorile din tabelul rata_de_schimb; Rata este atribut al acestui tabel;ia valorile din tabelul rata_de_schimb; Suma este de tip number si este un atribut;numar maxim de cifre:20 ; Cod_cl este cheie straina ;ia valorile din tabela clienti;
Agenti_de_schimb:
Explicatii:
Cod_ag este de tip number si reprezinta cheie primara in acest tabel;asigura identificarea unica a unui agent;numarul maxim de cifre este 8; Cod_op este cheie straina;luand valorile din tabela operatiuni_valutare; Cod_val este cheie straina;tabela tip_valuta; Cod_cl cheie straina;toate valorile sunt in tabela clienti;
Mai jos voi prezenta comenzile sql folosite pentru diferite cerinte cum ar fi crearea tabelelor,inserarea datelor in tabel etc.
number(8),Cod_val Agenti_de_schimb
));//crearea
-ALTER TABLE agenti_de_schimb ADD FOREIGN KEY (cod_val) REFERENCES tip_valuta (cod_val) ENABLE
Popularea tabelei Tip_valuta insert into tip_valuta values ('01', '$'); insert into tip_valuta values ('02', 'eur'); insert into tip_valuta values ('03', 'franc'); insert into tip_valuta values ('04', 'lira'); insert into tip_valuta values ('05', 'yen');
Popularea tabelei Rata_de_schimb insert into rata_de_schimb values ('0001', 'x', '01', '4');
insert into rata_de_schimb values ('0002', 'y', '02', '3'); insert into rata_de_schimb values ('0003', 'z', '03', '5'); insert into rata_de_schimb values ('0004', 'v', '04', '6'); insert into rata_de_schimb values ('0005', 'w', '05', '7');
Popularea tabelei Operatiuni_valutare insert into operatiuni_valutare values ('01', 'cumparare', '01', '0001', '3', '100', '1'); insert into operatiuni_valutare values ('02', 'vanzare', '02', '0002', '4', '110', '2'); insert into operatiuni_valutare values ('03', 'schimb', '03', '0003', '5', '120', '3'); insert into operatiuni_valutare values ('04', 'donatii', '04', '0004', '6', '130', '4'); insert into operatiuni_valutare values ('05', 'amanetare', '05', '0005', '7', '140', '5');
Popularea tabelei Agenti_de_schimb insert into agenti_de_schimb values ('1', '01', '01', '1'); insert into agenti_de_schimb values ('2', '02', '02', '2'); insert into agenti_de_schimb values ('3', '03', '03', '3'); insert into agenti_de_schimb values ('4', '04', '04', '4'); insert into agenti_de_schimb values ('5', '05', '05', '5');
Interogari:
SELECT * FROM tip_valuta WHERE den='yen'; SELECT * FROM clienti WHERE cod_cl=3 select nume,prenume,cod_val,cod_op from clienti,operatiuni_valutare; select * from operatiuni_valutare order by suma; select Prenume from Clienti where Prenume like '%e'; select *from clienti where cod_cl='1'; SELECT * FROM clienti WHERE cod_cl=12346;
procedure val_vanz_discount; procedure majorare_rata; procedure stergere_den; end; CREATE OR REPLACE package body decean.casa as procedure suma is cursor rata_casa is select rata,dense_rank() over(order by rata desc) from operatiuni_valutarecasa; rata.operatiuni_valutarecasa%type; rang number; total number; begin dbms_output.put_line('||RATA || RANG ||'); dbms_output.put_line('______________________'); open rata_casa; loop fetch rata_casa into rata,rang; if(rata_casa%notfound=true) then close rata_casa; select sum(rata) into total from operatiuni_valutarecasa; dbms_output.put_line('Suma: '||total); return; end if; dbms_output.put_line(' '||rata||' | '||rang); end loop; end; procedure majorare_rata is cursor mr is select rata from rata_de_schimb; rata_veche rata.rata_de_schimb%type; rata_noua rata.rata_de_schimb%type; begin dbms_output.put_line('rata_veche****rata_noua(400%)'); dbms_output.put_line('____________________________'); open mr; loop fetch mr into rata_veche; rata_noua:=rata_veche+4; exit when mr%notfound; dbms_output.put_line(rata_veche||' '||rata_noua); end loop; end;