Sunteți pe pagina 1din 11

Universitatea Babe-Bolyai, Cluj-Napoca Facultatea de tiine Economice i Gestiunea Afacerilor

Proiect Baze de date avansate

Student: Decean Ioan Gabriel Secia: Informatic Economic Anul: III ID

Pentru a realiza

acest proiect am ales ca si domeniu casa de schimb

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 Tip_valuta Rata_de_schimb Operatiuni_valutare Agenti_de_schimb

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.

Comenzile SQL folosite pentru crearae tabelelor:


-create table Clienti(Cod_cl number (5)primary key,Nume char(25),Prenume char(40), Strada char(25) ,Nr char(5),Ap char(4),Localitatea char(30)not null,Judet char(30) not null); // crearea tabel Clienti -create table Tip_valuta ( Cod_val char(8) primary key , Den char (15)); // crearea tabel Tip_valuta create table Rata_de_schimb(Cod_r NUMBER(8) PRIMARY KEY,Den_r CHAR(20),Den CHAR(20),Cod_val CHAR(8),Rata NUMBER(8)); // crearea tabel Rata_de_schimb - create table Operatiuni_valutare (Cod_op NUMBER(10) PRIMARY KEY,Den_op CHAR(30),Cod_val CHAR(8),Cod_r NUMBER(8),Rata NUMBER(8),Suma NUMBER(20),Cod_cl NUMBER(5));//crearea tabel Operatiuni_valutare -create table Agenti_de_schimb(Cod_ag number(8),Cod_cl number(8)primary number(8)); key, Cod_op tabel

number(8),Cod_val Agenti_de_schimb

));//crearea

Comenzi adaugare ADD FOREIGN KEY


-ALTER TABLE RATA_DE_SCHIMB ADD FOREIGN KEY ("COD_VAL") REFERENCES TIP_VALUTA ("COD_VAL") ENABLE - ALTER TABLE operatiuni_valutare ADD FOREIGN KEY (cod_cl) REFERENCES clienti (cod_cl) ENABLE -ALTER TABLE agenti_de_schimb ADD FOREIGN KEY (cod_cl) REFERENCES clienti (cod_cl) ENABLE -ALTER TABLE operatiuni_valutare ADD FOREIGN KEY (cod_val) REFERENCES tip_valuta (cod_val) ENABLE

-ALTER TABLE agenti_de_schimb ADD FOREIGN KEY (cod_val) REFERENCES tip_valuta (cod_val) ENABLE

Comenzi SQL pentru inserarea datelor in tabele:


Popularea tabelei Clienti insert into clienti values ('1', 'taban', 'adelina', 'detunata', '3', '25', 'cluj-napoca', 'cluj') insert into clienti values ('2', 'decean', 'gabs', 'detunata', '3', '25', 'cluj-napoca', 'cluj'); insert into clienti values ('3', 'decean', 'adrian', 'muncii', '1', '12', 'cluj-napoca', 'cluj'); insert into clienti values ('4', 'decean', 'vio', '21 decembrie', '8', '125', 'cluj-napoca', 'cluj'); insert into clienti values ('5', 'blaga', 'lucian', 'dorobantilor', '6', '35A', 'cluj-napoca', 'cluj');

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');

Comenzi SQL pentru modificari de structura:


ALTER TABLE nume_tabela MODIFY nume coloana tip_coloana [constrangere]; ALTER TABLE clienti ADD cnp NUMBER(13); ALTER TABLE clienti MODIFY cnp NUMBER(14) NOT NULL;

Comenzi SQL pentru actualizari:


UPDATE tip_valuta SET cod_val=fra WHERE Den=franc elvetian; DELETE FROM clienti WHERE cod_cl=12345;

Comenzi SQL pentru definirea indecsilor:


CREATE UNIQUE INDEX index_cl ON clienti(cod_cl); CREATE CONCATENATED INDEX index_dublu ON clienti(cod_cl,nume);

Comenzi SQL pentru crearea vederilor:


CREATE VIEW imagine_clienti AS SELECT * FROM clienti WHERE cod_cl=12348; CREATE VIEW OR REPLACE VIEW iamgine_clienti(cod_cl,nume) AS SELECT cod_cl,prenume FROM clienti;

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;

PACKAGE CASA DE SCHIMB VALUTAR


create or replace package decean. as procedure suma; function rata_medie return number;

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;

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