Sunteți pe pagina 1din 29

ACADEMIA DE STUDII ECONOMICE

FACULTATEA DE CIBERNETIC, STATISTIC I INFORMATIC ECONOMIC

Proiect la disciplina Baze de date

Student,
Cazacu Mihaela
Grupa 1026

Bucuresti, 2011

Cuprins
1

Descrierea domeniului de activitate.....................................................................3

Entitati, atribute, relatii intre entitati...................................................................3

Comenzi de definire a datelor (LDD) ...................................................................5

Comenzi de manipulare a datelor (LMD)............................................................19

1 Descrierea domeniului de activitate


2

Sala Dynamic, are o atmosfer prietenoasa cu programe pentru acumulare de masa


musculara i programe pentru definire sau slabire. Aparatura noua, instructori specializati,
suplimente proteice, energizante sau pentru arderea grasimilor si un orar lejer completeaza
calitatea serviciilor noastre.
Ne face o deosebita placere sa va avem ca si client la sala noastra de sport.Va putem oferi
o gama foarte larga de exercitii combinate intr-un mod armonios cu muzica.Colaborarea cu noi
va poate aduce rezultatele dorite si bineinteles va mentine in forma.

2 Entitati, atribute, relatii intre entitati


2.1 Entitati si atribute:
INSTRUCTOR : id_instructor(PK) ,nume, prenume,telefon, salariu, id_sport(FK)
SPORT: id_sport(PK), nume, descriere
ABONAMENT: numar_curent(PK), id_abonament(FK), id_client(FK), id_sport(FK), data_start,
data_sfarsit
CLIENTI_M: id_client(PK), nume, prenume, telefon, email, ocupatie
TIP_ABONAMENT: id_abonament(PK), nume_ab, pret, numar_sedinte

2.2 Relatii intre entitati


un CLIENT poate avea unul sau mai multe abonamente.
un ABONAMENT apartine unui singur client.
un ABONAMENT include un singur sport.
un SPORT este inclus in unul sau mai multe abonamente.
un INSTRUCTOR practica un singur sport.
un SPORT poate fi practicat de unul sau mai multi instructori.
un ABONAMENT este de un singur tip
unui TIP DE ABONAMENT se poate regasi intr-unul sau in mai mult abonamente

2.3 Diagrama entitate-relatie

CLIENTI_M
#id_client

INSTRUCTORI

Nume

#id_instructor

Prenume

Nume

Telefon

Prenume

Email

Telefon

Ocupatie

Id_sport(FK)
Are

is
Practica

Este detinut

Este practicat

SPORTURI
#id_sport

ABONAMENTE
Este inclus

#numar_curent

Nume
Descrierea

data_inceput
Include

data_sfarsit
id_client(FK),
id_sport(FK),id_abonament(FK)

Se regaseste
corespunde

TIP_ABONAMEENTE
#id_abonament
Nume_ab
Pret
Numar sedinte
3 Comenzi de definire a datelor (LDD)

3.1 Comanda CREATE


CREATE TABLE Tip_Abonamente
( id_abonament NUMBER(7) CONSTRAINT pk_tipa PRIMARY KEY,
nume_abonament VARCHAR2(50) ,
pret NUMBER(5,2),
numar_sedinte NUMBER(3)
);

CREATE TABLE Clienti_M


(id_client NUMBER(7) CONSTRAINT pk_clienti PRIMARY KEY,
nume VARCHAR2(50) NOT NULL,
prenume VARCHAR2(50) NOT NULL,
telefon VARCHAR2(15),
email VARCHAR2(25),
ocupatie VARCHAR2(25)

);
CREATE TABLE Sporturi
( id_sport NUMBER(7) CONSTRAINT pk_sport PRIMARY KEY,
nume VARCHAR2(50),
descriere VARCHAR2(100)
);

CREATE TABLE Instructori


( id_instructor NUMBER(7) CONSTRAINT pk_instructori PRIMARY KEY,
nume VARCHAR2(50),
prenume VARCHAR2(50),
telefon VARCHAR2(15),
salariu NUMBER(5,2),
id_sport NUMBER(7), CONSTRAINT fk_instructor FOREIGN KEY (id_sport) REFERENCES
Sporturi (id_sport)
);

CREATE TABLE Abonamente


( numar_curent NUMBER(7) CONSTRAINT pk_nrcurent PRIMARY KEY,
id_abonament NUMBER(7), CONSTRAINT fk_abona FOREIGN KEY (id_abonament)
REFERENCES Tip_abonamente (id_abonament),
data_inceput DATE,
data_sfarsit DATE,
id_client NUMBER(7), CONSTRAINT fk_clienti FOREIGN KEY (id_client) REFERENCES
Clienti_M (id_client),
id_sport NUMBER(7), CONSTRAINT fk_sports FOREIGN KEY (id_sport) REFERENCES
Sporturi(id_sport)
);

3.2 Popularea tabelelor cu date


Tabela Tip_Abonamente
insert into Tip_abonamente values('1','Daily','10','1');
insert into Tip_abonamente values('2','Weekly','25','7');
insert into Tip_abonamente values('3','Monthly','95','25');
insert into Tip_abonamente values('4','Premium','120','30');
insert into Tip_abonamente values('5','Star','150','45');
insert into Tip_abonamente values('6','Gold','200','50');

Tabela Clienti_M
insert into Clienti_M values('1','Popescu','Ion','0743898368','popescu_ion@gmail.com','student');
insert into Clienti_M
values('2','Marinescu','Mihaela','0745896378','marinescu_miha@gmail.com','pensionara');
insert into Clienti_M
values('3','Ungureanu','Virgina','0723498718','virginia_ungur@gmail.com','angajata');
insert into Clienti_M values('4','Pop','Amalia','0743598128','pop_allma@gmail.com','student');
insert into Clienti_M
values('5','Loghin','Malina','0742448333','loghin_malina@gmail.com','pensionara');
9

insert into Clienti_M values('6','Sarbu','Denis','0723794388','david_sarbu@gmail.com','student');

Tabela Sporturi
insert into Sporturi values('1','Aerobic',NULL);
insert into Sporturi values ('2','Gimnastica',' Pentru rezultatele asteptate este nevoie de minin 4 sedinte');
insert into Sporturi values ('3','Tae Bo',' Sanatate pentru minte si corp');
10

insert into Sporturi values ('4','Fitness', Null);


insert into sporturi values ('5','Step', Null);

11

Tabela instructori
insert into Instructori values ('1','Bodnariu','Alexandru','0754321123','900.90','1');
insert into Instructori values ('2','Marinescu','Catalin','0734211123','850','1');
insert into Instructori values ('3','Copaceanu','Andreea','0724331329','999.70','2');
insert into Instructori values ('4','Besir','Levida','0765234555','550.89','3');
insert into Instructori values ('5','Adamboceanu','Roxana',NULL,'789','4');
insert into Instructori values ('6','Cazacu','Elena','0745578989','800','5');

12

Tabela Abonamente
insert into Abonamente values ('10','1',to_date('21-09-2011','dd-mm-yyyy'),to_date('21-10-2011','dd-mmyyyy'),'1','1');
insert into Abonamente values ('1','1',to_date('15-04-2011','dd-mm-yyyy'),to_date('15-04-2011','dd-mmyyyy'),'2','1');
insert into Abonamente values ('2','2',to_date('10-03-2011','dd-mm-yyyy'),to_date('17-03-2011','dd-mmyyyy'),'6','5');
insert into Abonamente values ('3','1',to_date('21-09-2011','dd-mm-yyyy'),to_date('21-10-2011','dd-mmyyyy'),'1','1');
insert into Abonamente values ('4','6',to_date('03-07-2011','dd-mm-yyyy'),to_date('03-10-2011','dd-mmyyyy'),'5','3');
insert into Abonamente values ('5','5',to_date('07-03-2011','dd-mm-yyyy'),to_date('15-09-2011','dd-mmyyyy'),'5','3');
insert into Abonamente values ('6','1',to_date('07-10-2011','dd-mm-yyyy'),to_date('07-10-2011','dd-mmyyyy'),'4','3');
insert into Abonamente values ('7','1',to_date('05-11-2011','dd-mm-yyyy'),to_date('05-11-2011','dd-mmyyyy'),'3','1');

13

insert into Abonamente values ('8','5',to_date('11-08-2011','dd-mm-yyyy'),to_date('11-10-2011','dd-mmyyyy'),'2','2');


insert into Abonamente values ('9','3',to_date('05-10-2011','dd-mm-yyyy'),to_date('05-11-2011','dd-mmyyyy'),'1','4');

14

3.3 Comanda ALTER


1. Modificati proprietatile campului Nume din tabela Instructori astfel incat lungimea acestuia sa
fie de 75.
ALTER TABLE Instructori MODIFY (nume Varchar2(75));

2.Presupunand ca sala de sport si-a inceput activitatea pe 01.01.2011, adaugati o constrangere


astfel incat la data de inceput a abonamentului unei persoane sa nu se poate introduce o data
inainte de 01.01.2011

15

Alter table Abonamente ADD Constraint ck_data CHECK (data_inceput >= to_date('01-012011','dd-mm-yyyy'));

3. Sa se adauge o constrangere astfel incat adresa de mail din tabela Clienti_M sa fie de forma
%@%.% si apoi sa se dezactiveze.
Alter table Clienti_M Add Constraint verfica_email CHECK (email LIKE '%@%.%');

Alter table Clienti_M Disable Constraint verfica_email;

16

4. Sa se modifice campul nume din tabela Clienti_M in nume_familie

17

5. Sa se
stearga
coloana
Salariu din
tabela Instructori.
Alter table Instructori DROP COLUMN salariu;

6. Adaugati coloana Varsta in tabela Clienti_M avand tipul Number(2).


18

Alter Table Clienti_M ADD (Varsta Number(2));

7. Modificati numele tabelei din Clienti_M in Clienti_Mihaela


Alter table Clienti_M rename to Clienti_Mihaela;

19

3.4 Comanda DROP


1. Sa se stearga tabela Abonamente.
Tinand cont de legaturile dintre tabele se va folosi clauza CASCADE CONSTRAINTS;
Drop table Abonamente Cascade Constraints;

4 Comenzi de manipulare a datelor (LMD)


1. Sa se mareasca cu 50% pretul abonamentelor ce au peste 20 de sedinte.
UPDATE Tip_Abonamente
SET pret=pret+ 0.5*pret
Where numar_sedinte>20

2. Sa se stearga din tabela Clienti_M informatiile referitoare la clientul cu id-ul 6.


Delete from Clienti_M
Where id_client = 6
3. Sa se afiseze pretul abonamentelor de tip Daily, ce are id-ul 1.
select pret from tip_abonamente
where id_abonament=1;

20

4.

Sa se scrie o
interogare din care sa rezulte numele si prenumele tuturor clientilor ce detin/au detinut
abonamente la sala de sport.
select nume_familie, prenume from Clienti_M

21

5. Sa se afiseze prenumele
angajatilor al caror nume de
familie incepe cu S.

6. Sa se afiseze toti clientii care sunt studenti.


Select nume_familie, prenume from clienti_M
where ocupatie='student'

22

7.

Sa se afiseze numele,
prenumele si telefonul
instructorului ce practica
sportul al carui id este 3
Select nume, prenume, telefon
From instructori
Where id_sport=3 ;

23

8. Sa se afiseze abonamentele ce contin sporturi al caror camp de descriere nu este null.


Select numar_curent, data_inceput, data_sfarsit
From abonamente a, sporturi s
Where (a.id_sport=s.id_sport) and (s.descriere is not Null);

9. Sa se afiseze numele abonamentelor incheiate impreuna cu data de inceput si data de sfarsit,


precum si numarul de sedinte incluse.
Select nume_abonament,data_inceput, data_sfarsit, numar_sedinte
From abonamente a, tip_abonamente t
Where a.id_abonament= t.id_abonament;

24

10. Sa se afiseze cate cliente au detinut/detin abonamente la sala de sport. (Se considera ca numele
unei persoane de gen feminine va avea terminatia prenumelui a)
Select count(id_client)
From Clienti_M
Where lower(prenume) Like '%a';

11. Sa se afiseze informatii despre instructorii al caror nume incepe cu B.


25

Select *
From Instructori
Where UPPER(substr(nume,1,1))='B';

12. Sa se afiseze informatii(nume, prenume, ocupatie) despre toti clientii ce si-au facut abonamente
in anul 2011.
Select nume, prenume, ocupatie
From clienti_m c, abonamente a
Where to_char(a.data_inceput, 'yyyy')='2011'

13. Sa se calculeze cat trebuie sa plateasca angajatorul pentru salariile instructorilor si sa se calculeze
si salariul mediu.
Select sum(salariu), round(avg(salariu))
26

From instructori;

14. Sa se afiseze numarul de clienti abonati la fiecare sport.


Select id_sport, count(id_client)
From abonamente
Group by id_sport;

15. Sa se afiseze salariile instructorilor pentru fiecare sport.


Select id_sport, avg(salariu)
From instructori
Group by id_sport;

27

16. Sa se afiseze informatii in ordinea descrescatoare a numarului curent despre abonamentele in


care numele clientilor incepe cu P si tipul abonamentului este Gold.
Select numar_curent, data_inceput, data_sfarsit
From abonamente a, clienti_m c, tip_abonamente t
Where (UPPER(c.nume)='P%') and (upper(t.nume_abonament)='GOLD')
Order by a.numar_curent desc;

17. Actualizati preturile abonamentelor astfel:


Daca numarul de sedinte <25 +8%
Daca numarul de sedinte [25, 45] + 10%
Daca numarul de sedinte >45
+15%
select nume_abonament, id_abonament,
28

(CASE when numar_sedinte <25 then 0.8


when numar_sedinte between 25 and 45 then .15
else 0.2
END) *pret+ pret
From tip_abonamente;

29