Anda di halaman 1dari 20

CONTABIL

BUCURESTI
-proiect baze de date-

Profesor coordonator:
Student :

Tabelele firmei:
PRODUSE
Id_produs Denpr
N(10)
C(30)

Pret
N(30)

SUCURSALA
Cod_s
N(2)

Nume
C(10)

Sector
C(12)

Adresa
C(30)

CLIENTI
Id_client
N(10)

CNP
N(12)

ANGAJATI
Id_ang
Nume
N(3)
C(10)
FACTURI
Nr_factura Dataf
N(12)
D

Nume
C(10)

Prenume
C(10)

Prenume Cod_s
C(20)
N(3)

CNP
N(13)

RAND_FACTURA
Nr_factura Id_produs Cantitate
N(12)
N(3)
N(3)

Id_ang
N(3)

Telefon
C(10)

Email
C(30)

Email_c
C(30)

Adresa
C(30)

Data_ang Salariu
D
N(3)

Limbajul SQL Structured Query Language este un limbaj


standard de interogare a bazelor de date. Implementat n
majoritatea SGBD-urilor, dar nu numai. In ORACLE este
implementat nucleul SQL cu anumite particularitati.
Baza de date(BD) este un ansamblu de date organizat,
coerent, structurat, n condiii de redundan minim i controlat,
accesibil mai multor utilizatori n timp util.
O entitate este un lucru, obiect, persoan sau eveniment care
are semnificaie pentru afacerea modelat, despre care trebuie s
colectm i s memorm date. O entitate poate fi un lucru real,
tangibil precum o cldire, o persoan, poate fi o activitate precum
o programare sau o operaie, sau poate fi o noiune abstract.
Aadar, dup ce am identificat entitile trebuie s descriem
aceste entiti n termeni reali, adic s le stabilim atributele. Un
atribut este orice detaliu care servete la identificarea, clasificarea,
cuantificarea, sau exprimarea strii unei instane a unei entiti.
Atributele sunt informaii specifice ce trebuie cunoscute i
memorate.
De exemplu atributele entitii ANGAJATI sunt id-ul angajatului,
numele ,prenumele,codul sucursalei unde este angajati, adresa de
email precum si data angajarii si salariul acestuia.
Atributele care definesc n mod unic instanele unei entiti se
numesc identificator unic (UID). UID-ul unei entiti poate fi
compus dintr-un singur atribut, de exemplu codul numeric personal
poate fi un identificator unic pentru entitatea Clieti. n alte situaii,
identificatorul unic este compus dintr-o combinaie de dou sau
mai multe atribute. Atributele care fac parte din identificatorul unic
al unei entiti vor fi precedate de semnul diez #.
O relaie este o asociere, legtur, sau conexiune existent
ntre entiti i care are o semnificaie pentru afacerea modelat.
Orice relaie este bidirecional, legnd dou entiti sau o entitate
cu ea nsi.

n Oracle exist restricii care se impun tabelelor. Acestea sunt


structurale i comportamentale.

INFORMATII DESPRE
CONTABIL BUCURESTI

BAZA DE

DATE

A COMPANIEI

Firmele din domeniul contabilitatii au nevoie de o baza de date mai ales cu


clientii acesteia, deoarece este o firma serioasa si nu isi permite sa isi piarda
vreun client. Contabil Bucuresti esti o firma mica din Bucuresti de aceea am
creat o baza de date care sa cuprinda :

Baza de date construita vizeaza atat angajatii, cat si client. Scopul bazei de date este
gestionarea produselor vandute, cat si facturilor mai usor si mai detaliat.Aceasta ne poate
oferi si informatii despre angajatii care au facturat sau data de angajare.
In fiecare tabela din baza de date se tine evidenta acestor detalii, iar prin relatiile
dintre ele se poate usor depista traseul dorit.

Baza de date tine evidenta unei firme de contabilitate. De aceea, trebuie inregistrate
produsele in vedere pentru efectuarii vanzarii lor PRODUSE , clientii care au cerut

efectuarea serviciilor, respectiv Clienti, deoarece satisfacerea nevoilor lor este obiectivul
firmei noastre.
De asemenea, sunt incluse tabele care cuprind informatii despre vanzarile realizate
FACTURI. Si mai detaliat in RAND_FACTURA.
Cea mai importanta tabela din schema este tabela ANGAJATI, deoarece ei
sunt reprezentantii firmei, cei care efectueaza vand si efectueaza serviciile

Limbajul de descriere a datelor(LDD): Create,Alter,Drop


1.Sa se creeze tabelele mentionate anterior
Sa se creeze tabela Produse
create table produse( id_produs number(10) primary key, denpr varchar2(15), pret
number(5,2));
Sa se creeze tabela Sucursala
create table sucursala( cod_s number(2) primary key, nume varchar2(10),sector
varchar2(12), adresa varchar2(30));
Sa se creeze tabela Clienti
create table clienti( id_client number(10) primary key, cnp number(12), nume
varchar2(10), prenume varchar2(10), telefon varchar2(10), email_c varchar2(30), adresa
varchar2(30));
Sa se creeze tabela Angajati
create table angajati(id_ang number(3) primary key, nume varchar2(10), prenume
varchar2(20),cod_s number(3),email varchar2(30),data_ang date default sysdate,salariu
number(3),constraint fk1 foreign key (cod_s) references sucursala(cod_s));

Sa se creeze tabela Facturi


create table facturi(nr_factura number(12) primary key , dataf date default sysdate, CNP
number(13), id_ang number(3),CONSTRAINT FK2 FOREIGN KEY (CNP)
REFERENCES abonati(CNP),CONSTRAINT FK3 FOREIGN KEY (id_ang)
REFERENCES angajati(id_ang));

Sa se creeze tabela Ranf_facturi


Create table rand_factura(nr_factura number(3),
id_produs number(3), cantitate number(3) ,
CONSTRAINT FK4 FOREIGN KEY (nr_factura) REFERENCES
facturi(nr_factura),CONSTRAINT FK5 FOREIGN KEY (id_produs) REFERENCES
produse(id_produs));

1.Sa se introduca un camp nou la tabela produse cu stocul din fiecare produs.

alter table produse add stoc number(5)

2.Sa se adauge un camp nou in tabela sucursala cu numele studentului


alter table sucursala add Gradinaru_Ramona_Andreea varchar2(2);

3.Sa se adauge o restrictie de tip not null pentru campul stoc


Alter table produse add constraint not_null check(stoc is not null);

4.Sa se redenumeasca tabela clienti in abonati apoi sa se revina la numele initial


alter table clienti rename to abonati;

rename abonati to clienti;

5.Sa se adauge o noua restrictie la campul salariul astfel ca aceasta sa fie mai mare
decat zero in tabela angajati;
alter table angajati add constraint ck1 check(salariu>0);

6.Sa se dezactiveze restrictia nou create


alter table angajati modify constraint ck1 disable;

7. Sa se creeze tabela clienti_sector1 cu aceiasi structura ca si tabela angajati;


Create table clienti_sector1 as Select * From angajati Where 2=3;

8.Sa se stearga tabela nou creata


drop table clienti_sector1;

9.Sa se modifice lungimea campului nume


alter table angajati modify nume varchar2(20);

Limbajul de manipulare a datelor (LMD):Insert,Update,Delete.

1. .Sa se introduca date in tablele create.


Popularea tabelei Sucursala
Insert into sucursala values (1,Crangasi','Sector 6','str cristian, nr86',2);
Insert into sucursala values (2,Avitorilor ','sector 4','bd Expozitiei, nr05',3);
Insert into sucursala values (3,'Victoriei',sector1,'str Maceselor, bl B, ap30',4);
Insert into sucursala values (4,'Unirii','Sector2','str aviatiei, nr68',5);

Popularea tabelei Produse


Insert into produse values (1,Balanta contabila ',160,3);
Insert into produse values (2,Cont de profit si pierderi ',780,5);
Insert into produse values (3,Bilant ,160,4);
Insert into produse values (4,'Balante lunare',980,100);

Popularea tabelei Clienti


Insert into clienti values
(291052121113,'Gradinaru','Ramona','0740789865' ,'Andreea.gradinaru@gmail.c
om','Moinesti,str Al I Cuza, nr 3');
Insert into clienti values (186080721118,'Dumitru','tibi','076564647',
'tsaad.fgd@yahoo.com','Bacau,str Violer, nr 17');
Insert into clienti values
(560209311111,'ana','Maria','0776765278' ,'gfgh.tayr@yahoo.com',' ,str berzelor,
nr 11');
Insert into clienti values (10677711825,'iuliana',relea','0756725784',
'iuli@gmail.com ','Bucuresti,str Vera, nr5');

Populare tabela Angajati


Insert into angajati values
(10,'Andreea','Maria',1,'maria@yahoo.com',TO_DATE( '03-AUG-05', 'DD-MONYYYY'),123);
Insert into angajati values
(11,'Iuliana','Ana',1,'iuliana@yahoo.com',TO_DATE( '07-AUG-05', 'DD-MONYYYY'),150);
Insert into angajati values
(12,'Iulian','Avram',3,'iulian@yahoo.com',TO_DATE( '20-AUG-05', 'DD-MONYYYY'),170);

Insert into angajati values


(13,'Marian','Adelin',4,'adelin@yahoo.com',TO_DATE( '15-AUG-05', 'DD-MONYYYY'),160);

Populare tabela Facturi


Insert into facturi values (49,TO_DATE('22-AUG-06', 'DD-MONYYYY'),291052121113,11);
Insert into facturi values (51,TO_DATE('21-MAY-06', 'DD-MONYYYY'),186080721118,10);
Insert into facturi values (50,TO_DATE('13-JAN-06', 'DD-MONYYYY'),560209311111,12);
Insert into facturi values (48,TO_DATE('18-OCT-05', 'DD-MONYYYY'),10677711825,13);

Populare tabela Rand_factura


Insert into rand_factura values (48,4,50);
Insert into rand_factura values (49,3,75);
Insert into rand_factura values (51,1,10);
Insert into rand_factura values (50,2,50);

2.Sa se modifice pretul cu pret-500 la produsele mai scumpe de 600u.m


update produse set pret=pret-500 where pret>600;

3.Stergeti din tabela angajati , angajatul care are email-ul: iulian@yahoo.com.


delete from angajati where email='iulian@yahoo.com'

4.Adaugati un nou angajat la sucursala 3


Insert into angajati values
(12,'Radu','Antonia',3,'aurrrr@yahoo.com',TO_DATE('02-DEC-04', 'DD-MONYYYY'),154);

5,Afisati angajatii care nu au salariul 170 sau 160 um.


select * from angajati where salariu not in (170, 160);

6.Afisati denumirea si pretul produsele care contin in denumirea lor cuvantul


balanta
select denpR, pret from produse where upper(denpr) like '%BALANTA%';

7.Afisati toti angajatii de la sucursala Crangasi.


select nume,prenume from angajati where angajati.cod_s=( select cod_s from sucursala
where upper(nume)='CRANGASI');

8.Afisati valoarea media a vanzarilor


select avg(rand_factura.cantitate*produse.pret) as "valoare medie" from produse,
rand_factura;

9.Sa se afiseze pretul minim, pretul maxim si pretul mediu al produselor din
magazine.
select max(pret)as "pret maxim", min(pret) as "pret minim" ,avg(pret) as "pret mediu"
from produse;

10.Sa se selecteze numele, prenumele clientilor care au mailul de tipul %yahoo%.


select nume , prenume from clienti where email_c like '%yahoo.com';

11.Sa se afiseze numele si e-mailul clientilor al caror prenume incepe cu literele Ra


select nume,email_c from clienti where substr(prenume,1,2)='Ra';

12.Sa se afiseze facturiile ce constau intr-o cantitate mai mare de 63 bucati inclusiv.
select * from facturi where 63<=(select sum(cantitate) from rand_factura where
rand_factura.nr_factura=facturi.nr_factura);

13.Afisati angajatii care au efectuat comenzi precum si cei care nu au efectuat


comenzi
select * from angajati,facturi where angajati.id_ang=facturi.id_ang(+) order by
facturi.nr_factura;

14.Afisati numele angajatii care au realizat vanzari in luna august


select facturi.id_ang , angajati.nume from facturi, angajati where
facturi.id_ang=angajati.id_ang and extract(month from facturi.dataf)=8;

15.
Afisati numele, prenumele precum si data angajarii fiecarui angajat, data sa
aiba formatul DD/MM/YY
SELECT nume, prenume, TO_CHAR(data_ang, 'DD/MM/YY')data_angajarii FROM
angajati

16.Afisati numele , salariu si oferiti-le acestora un comision in functie de salariu


acestora, cand salariul<125 primesc comisionul tipul1, intre 125 si 150 primesc
comisionul 2, altfel comisionul cu tipul 3
select nume, prenume, salariu,
case when salariu<125 then 1

when salariu between 125 and 150 then 2


else 5 end comision
from angajati;

17.Afisati numele prenumele si data angajarii celui mai nou si celui mai vechi dintre
angajati
select nume, prenume, data_ang from angajati
where data_ang=(select max(data_ang) from angajati)
union
select nume, prenume, data_ang from angajati
where data_ang=(select min(data_ang) from angajati);

Anda mungkin juga menyukai