Sunteți pe pagina 1din 19

Academia de Studii Economic Bucureti Facultatea de Cibernetic, Statistic i Informatic Economic

PROIECT BAZE DE DATE

Ene Raluca Grupa 1026, Seria B, An II

Descriere: Baza de date a Clubului sportiv Body Exprim Bucuresti

Baza de date contine informatii despre instructori, dar si despre membrii, despre clasele sustinute, abonamente si Sali. Este foarte utila atat angajatilor BE, dar si membrilor care pot gasi informatiile foarte rapid. Obiectivele bazei de date sunt : Sa creeze o baza de date capabila sa inregistreze un flux mediu de informatii si sa gestioneze aceste informatii in timp util; Sa tina o evidenta completa a clubului BE. Baza de date este formata din 5 tabele alcatuite astfel: Instructori: id_instructor, Nume, Prenume, Calificare, Data angajare; Membrii: Id_membru, Nume, Prenume, cod abonament si durata lui; Abonament: cod abonament si durata lui, tipul si durata; Clase: id_instructor,id_sala, id_clasa, tip, dificultate, cod abonament si durata lui; Sali: id_sala, nume.

Comenzi DLL: Create, Alter, Drop

Create table Instructori(id_instructor number(3) constraint instructor_pk primary key, nume varchar2(30), prenume varchar2(30), calificare varchar2(30), data_angajare date);

Create table Clase(id_clasa number(3), tip varchar2(30), dificultate varchar2(30), id_instructor number(2) constraint instructor_fk references Instructori(id_instructor));

Create table Abonament(cod_abonament number(5), tip varchar2(30), durata number(2) not null, pret number(5));

Create table Membrii(id_membru number(3) constraint membru_pk primary key, nume varchar2(30), prenume varchar2(30), cod_abonament number(5), durata number(2));

Create table Sala(id_sala number(2) constraint sala_pk primary key, nume varchar2(30));

Create table Instructori_BE as Select* from Instructori;

Alter table Membrii Add constraint ab_fkey Foreign Key(cod_abonament, durata) references Abonament(cod_abonament, durata);

Alter table Clase Add id_sala number(2);

Alter table Clase Add constraint sala_fk Foreign Key(id_sala) references Sala(id_sala);

Alter table Clase Add constraint clasa_pk primary key(id_instructor,id_sala);

Alter table Clase Add durata number(2);

Alter table Clase Add constraint codab_fk Foreign Key(cod_abonament, durata) references Abonament(cod_abonament, durata);

Alter table Membrii Add varsta number(2);

Alter table Membrii Modify varsta varchar2(2);

Alter table Membrii Drop column varsta;

Alter table Sala Add Constraint sala_ck check (nume IS NOT NULL);

Alter table Clase Rename to Ore;

Rename Ore to Clase;

Drop table Instructori_BE;

Comenzi DLL: Insert, Select, Update, Delete Insert into Instructori values(100, 'Valentin', 'Mavrodineanu', 'Personal Trainer', TO_DATE('15.10.2011','DD.MM.YYYY')); Insert into Instructori values(101, 'Sorin', 'Geana ', 'Personal Trainer', TO_DATE('12.04.2009','DD.MM.YYYY')); Insert into Instructori values(102, 'Denisa', 'Ganea ', NULL , TO_DATE('01.02.2012','DD.MM.YYYY')); Insert into Instructori values(103, 'Alexandru ', 'Bors', NULL, TO_DATE('15.04.2012','DD.MM.YYYY')); Insert into Instructori values(104, 'Alexandra ', 'Ghezea', NULL, TO_DATE('20.11.2011','DD.MM.YYYY')); Insert into Instructori values(105, 'Mihai', ' Visan', 'Personal Trainer', TO_DATE('05.06.2009','DD.MM.YYYY'));

Insert into Instructori values(106, 'Ciprian', 'Polexe ', NULL, TO_DATE('15.08.2010','DD.MM.YYYY')); Insert into Instructori values(107, 'Andreea ', 'Preda', NULL, TO_DATE('11.01.2013','DD.MM.YYYY')); Insert into Instructori values(108, 'Gabriel ', 'Niculescu', NULL, TO_DATE('23.05.2011','DD.MM.YYYY')); Insert into Instructori values(109, 'Diana', 'Dumitrescu', 'Personal Trainer', TO_DATE('17.09.2009','DD.MM.YYYY'));

Insert Insert Insert Insert Insert Insert

into into into into into into

Sala Sala Sala Sala Sala Sala

values('01','fitness'); values('02','piscina'); values('03','dans'); values('04','aerobic'); values('05','cycling'); values('06','kombat');

Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert

into into into into into into into into into into into into into into into into into into into into

Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament Abonament

values(1000, values(1000, values(1000, values(1000, values(2000, values(2000, values(2000, values(2000, values(3000, values(3000, values(3000, values(3000, values(4000, values(4000, values(5000, values(5000, values(6000, values(6000, values(6000, values(6000,

'Aerobic Full', 12, 1600); 'Aerobic Full', 6, 900); 'Aerobic Full', 3, 550); 'Aerobic Full', 1, 250); 'Fitness Full', 12, 1520); 'Fitness Full', 6, 820); 'Fitness Full', 3, 500); 'Fitness Full', 1, 220); 'Aero-Fit Full', 12, 1680); 'Aero-Fit Full', 6, 980); 'Aero-Fit Full', 3, 580); 'Aero-Fit Full', 1, 220); 'Aero-Fit Daytime', 3, 285); 'Aero-Fit Daytime', 1, 130); 'Piscina', 3, 640); 'Piscina', 1, 250); 'All Inclusive', 12, 2600); 'All Inclusive', 6, 1500); 'All Inclusive', 3, 900); 'All Inclusive', 1, 400);

Insert Insert Insert Insert Insert

into into into into into

Clase Clase Clase Clase Clase

values('10','Kangoo Jumps','Ridicata',100,03,1000,NULL); values('10','Kangoo Jumps','Ridicata',109,03,1000,NULL); values('10','Kangoo Jumps','Ridicata',107,04,1000,NULL); values('11','Zumba Fitness','Scazuta',102,04,1000,NULL); values('12','Tae Bo','Medie',105,06,1000,NULL);

Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert

into into into into into into into into into into into into into into into into into into into into into

Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase Clase

values('12','Tae Bo','Medie',101,03,1000,NULL); values('13','Pilates','Scazuta',103,04,1000,NULL); values('14','Cycling','Ridicata',100,05,2000,NULL); values('14','Cycling','Ridicata',105,05,2000,NULL); values('15','Stretching','Scazuta',103,06,1000,NULL); values('16','Strength Cardio','Ridicata',106,04,1000,NULL); values('17','Aerial Yoga','Scazuta',102,03,1000,NULL); values('18','Rebound AAS','Ridicata',104,03,1000,NULL); values('19','Fitball','Scazuta',104,04,1000,NULL); values('20','TRX','Ridicata',101,06,1000,NULL); values('21','Aerobic','Medie',107,03,1000,NULL); values('21','Aerobic','Medie',109,04,1000,NULL); values('22','Step Tone','Medie',105,04,1000,NULL); values('23','Passion Dance','Scazuta',103,03,1000,NULL); values('24','Interval Training','Medie',105,03,1000,NULL); values('24','Interval Training','Medie',100,04,1000,NULL); values('24','Interval Training','Medie',101,04,1000,NULL); values('25','XTreme Fitness','Ridicata',101,01,2000,NULL); values('20','Aqua Gym','Medie',109,01,5000,NULL); values('20','Inot','Ridicata',108,01,5000,NULL); values('20','Fitness','Medie',106,01,2000,NULL);

Insert Insert Insert Insert Insert

into into into into into

Membrii Membrii Membrii Membrii Membrii

values(184,'Dumitru','Robert', 3000, 1); values(549,'Lolea','Diana', 6000,6); values(485,'Vasile','Ana',2000,3); values(309,'Marin','Emil',1000,12); values(948,'Bunea','Maria',5000,3);

Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert Insert

into into into into into into into into into into into into into into into into into into

Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii Membrii

values(135,'Neagu','Dima',2000,12); values(247,'Stan','Alexandru',5000,1); values(682,'Soare','Irina',1000,3); values(348,'Radu','Antonia',4000,1); values(728,'Grigore','Adrian',6000,3); values(953,'Oprea','Alin',5000,1); values(638,'Mitran','Iulia',2000,6); values(482,'Lungu','Raluca',3000,12); values(137,'Ganea','Carmen',1000,6); values(238,'Bica','Ioana',3000,6); values(653,'Sitca','Ion',1000,3); values(353,'Rodoiu','Andreea',4000,3); values(729,'Goicu','Anton',6000,1); values(926,'Olariu','Marin',5000,3); values(663,'Mutu','Iuliana',2000,1); values(403,'Lintoiu','Roxana',3000,6); values(174,'Gica','Cristian',1000,12); values(282,'Butnaru','Camelia',3000,12);

Sa se modifice dificultatea clasei, pentru clasa cu id-ul 14.

Update Clase Set Dificultate='Medie' Where id_clasa=14;

->>

Sa se mareasca pretul abonamentelor de tip Aerobic, Fitness si Aero-Fit cu durata de 6 luni cu 10%.

Update Abonament Set Pret=1.1*Pret Where cod_abonament in (1000,2000,3000) and durata=6;

->>

Sa se modifice abonamentele Aero-Fit Daytime in Full ale membrilor cu id-ul intre 100 si 400.

Update Membrii Set cod_abonament=3000 Where cod_abonament=4000 and id_membru between 100 and 400;

->>

Sa se stearga membrul clubului cu id-ul 137.

Delete From Membrii Where id_membru=137;

->>

Interogari Sa se afiseze membrii clubului cu abonament Aerobic Full.

Select * From Membrii Where cod_abonament=1000;

Sa se afiseze membrii clubului cu initiala prenumelui A.

Select * From Membrii Where prenume like A%;

Sa se afiseze numele, prenumele si tipul de abonament al fiecarui membru.

select nume , prenume , tip as abonament from Membrii m, Abonament a where m.cod_abonament=a.cod_abonament;

Sa se afiseze pretul minim, maxim, si media preturilor abonamentelor.

Select max(pret) as "Pret maxim", min(pret) as "Pret minim", round(avg(pret),2) as "Pret mediu" From abonament;

Sa se afiseze toate clasele lui Mihai Visan si ale lui Sorin Geana.

select id_clasa, tip from clase where id_instructor=105 UNION select id_clasa, tip from clase where id_instructor=101;

Sa se afiseze tipul clasei si sala in care se sustine, daca sala este Dans sau Aerobic, altfel de afiseaza mesajul Alta sala.

select tip, case when id_sala=03 then 'dans' when id_sala=04 then 'aerobic' else 'alta sala' end "Sala" from clase;

Sa se afiseze instructorii cu calificarea Personal Trainer angajati inainte de 01.01.2011.

select * from instructori where lower(calificare)='personal trainer' Intersect select * from instructori where data_angajare<to_date('01.01.2010','dd.mm.yyyy');

Sa se afiseze instructorii cu calificarea Personal Trainer in afara celor angajati inainte de 01.01.2011.

select * from instructori where lower(calificare)='personal trainer' minus select * from instructori where data_angajare<to_date('01.01.2010','dd.mm.yyyy');

Cereri ierarhice Selectati toate clasele in functie de instructorul care le tine.

select * from clase connect by nocycle id_clasa= prior id_instructor order by id_instructor;

Afisati datele claselor tinute de instructorii subordati radacinii: Mihai Visan(105).

select id_clasa, tip, id_instructor, level from clase connect by nocycle id_clasa= prior id_instructor start with id_instructor='105';

Tabele virtuale, indeci, sinonime,secvene Sa se creeze o secventa pentru asigurarea unicitatii cheii primare din tabela Sala.

Create sequence seq_nrsala start with 10 Increment by 10 Maxvalue 100 nocycle;

Insert into sala values(seq_nrsala.nextval, 'nume');

Sa se vizualizeze informatiile depre secventele utilizatorilor:

Select * from user_sequences;

Sa se creeze si afiseze datele unui sinonim pentru table Sala. create synonym denumire_sala for sala; select * from denumire_sala;

Sa se stearga sinonimul creat anterior.

Drop synonym denumire_sala;

Sa se creeze si afiseze datele din tabele virtuala cu instructorii necalificati ca personal trainer. create view Necalificati as select * from instructori where calificare is NULL; select * from Necalificati;

Sa se stearga datele instructorilor angajati in 2011 din tabela virtual Necalificati.

delete from Necalificati where data_angajare between to_date('01.01.2011','dd.mm.yyyy') and to_date('01.01.2012','dd.mm.yyyy'); select * from Necalificati;

Sa se stearga tabela virtuala Necalificati. drop view Necalificati;

Sa se creeze si afiseze un index pentru tipul clasei dn tabela Clase.

create index clasa_idx on clase(tip); select * from user_indexes;

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