Sunteți pe pagina 1din 21

Universitatea Babeș-Bolyai

Facultatea de Științe Economice și Gestiunea Afacerilor

Proiect: Sala de fitnes

Studenta: Prozsa Orsolya Eniko


Specializare: Informatica Econimica
Forma de invatamant: ID
Anul 3, Grupa 4

Cluj-Napoca
2018
1
Table of Contents
1. Scenariu, crearea și popularea tabelelor ........................................................................................................ 3
1.1 Scenariul bazei de date realizate ............................................................................................................... 3
1.2 Crearea tabelelor ....................................................................................................................................... 4
1.3 Popularea tabelelor cu date ....................................................................................................................... 7
2. Secvențe ........................................................................................................................................................13
3. Declanșări ......................................................................................................................................................16
4. Packagei.........................................................................................................................................................19
5. Concluzii .......................................................................................................................................................21

2
1. Scenariu, crearea și popularea tabelelor

1.1 Scenariul bazei de date realizate

Acest proiect prezintă realizarea unei baza de date a cursurilor si a participantiilor la cursuri
unei sala de sport.
In aceasta sala de sport se tin mai multe feluri de cursuri (fitness, aerobic, pilates, step, kangoo
jumps, cycling). In sala de sport lucreaza mai multi antrenori. Un antrenor poate sa tina mai multe
feluri de cursuri, dar un curs poate sa fie tinut, doar de un singur antrenor. La cursuri se participa
mai multi cursanti, in functie de capacitatea salii.
Sala de sport are la dispozitie 4 sali, in care se pot tine paralel cursuri in acelas interval de timp.
Fiecare curs este tinut de un singur antrenor. Intr-o sala se pot tine mai multe cursuri, in functie de
utilaje sau aparate care sunt in sala si de capacitatea salii. Un tip de curs tot timpul este tinut in
acelas sala.
O baza de date este un set de date centralizate structurate care sunt stocate pe un sistem de
calculatoare.
Crearea bazei de date începe cu cercetarea informațiilor cerute și culegerea datelor de care avem
nevoie.
Sala de sport, are nevoie de o baza de date, in care sa centralizeze datele cursantiilor,
abonamentele, la ce cursuri participa cursantii, tipul cursurilor si antrenoarele care tin cursul
respective salile si dotariile salilor in care se tin cursurile, durata si intensitatea cursurilor.
Sunt patru funcții de bază pe care permite o bază de date sunt: creare, revizualizare,
actualizare și ștergere, ne ajuta să fim la zi cu aplicația, în cazul nostru: sa adaugam cursuri noi,
participanti, antrenori, sa vizualizam numarul participantiilor, sa vizualizam dotarile si capacitatiile
salilor, sa actualizam datele antrenorilor si a cursantiilor, respective sa stergem anumite clase sau
cursanti.
Cu ajutorul acestei baze de date, vom avea posibilitatea sa efectuam urmatoarele operatiuni:
 Adaugarea sau stergerea unui curs
 Vizualizarea numarul participantiilor
 Adaugarea si ştergerea participantiilor
 Mentinerea datelor de contact ale clientilor
 Mentinerea listelor cu abonati
 Vizualizarea cursurilor in functia salilor
 Vizualizarea datelor antrenorilor
 Vizualizarea cursurilor in functia antrenorilor

3
1.2 Crearea tabelelor

CREATE TABLE "SALI"


("numar" number(3),
"capacitate" number(3),
CONSTRAINT "SALI_PK" PRIMARY KEY ("numar") USING INDEX ENABLE);

CREATE TABLE "UTILAJE"


("cod" number(3),
"nume" varchar2(20),
"an_cumparare" date,
"cantitate" number(3),
"numar_sla" number(3),
CONSTRAINT "UTILAJE_PK" PRIMARY KEY("cod") USING INDEX ENABLE,
CONSTRAINT "SALI_FK" FOREIGN KEY("numar_sla")REFERENCES"SALI"("numar"));

4
CREATE TABLE "ANTRENORI"
("marca" number(3),
"nume" varchar2(20),
"prenume" varchar2(20),
"experienta" number(2),
"data_nastere" date,
"poza" BLOB NOT NULL ENABLE,
CONSTRAINT "ANTRENORI_PK" PRIMARY KEY ("marca") USING INDEX ENABLE);

CREATE TABLE "CURSURI"


("cod" number(3),
"denumire" varchar2(20),
"durata" number(3),
"dificultate" varchar2(20),
"descriere_exercitii" CLOB NOT NULL ENABLE,
"marca_atr" number(3),
CONSTRAINT "CURSURI_PK" PRIMARY KEY("cod") USING INDEX ENABLE,
CONSTRAINT "ANTRENORI_FK" FOREIGN KEY("marca_atr")REFERENCES
"ANTRENORI"("marca"));

5
CREATE TABLE "ABONAMENTE"
("cod" number(3),
"data_inceput" date,
"perioada" number(2),
"pret" number(4),
CONSTRAINT "ABONAMENTE_PK" PRIMARY KEY("cod") USING INDEX ENABLE);

CREATE TABLE "CURSANTI"


("id_client" number(3),
"nume" varchar2(20),
"prenume" varchar2(20),
"numar_telefon" number(10),
"adresa_mail" varchar2(30),
"cod_cu" number(3),
"cod_abt" number(3),
6
CONSTRAINT "CURSANTI_PK" PRIMARY KEY("id_client") USING INDEX ENABLE,
CONSTRAINT "CURSURI_FK" FOREIGN KEY("cod_cu")REFERENCES "CURSURI"("cod"),
CONSTRAINT "ABONAMENTE_FK" FOREIGN KEY ("cod_abt") REFERENCES
"ABONAMENTE" ("cod"));

1.3 Popularea tabelelor cu date

Tabelul SALI

INSERT INTO "SALI" ("numar", "capacitate")


VALUES (1, 50);

INSERT INTO "SALI" ("numar", "capacitate")


VALUES (2, 35);

INSERT INTO "SALI" ("numar", "capacitate")


VALUES (3, 40);

INSERT INTO "SALI" ("numar", "capacitate")


VALUES (4, 20);

7
INSERT INTO "SALI" ("numar", "capacitate")
VALUES (5, 15);

Tabelul UTILAJE

INSERT INTO "UTILAJE" ("cod", "nume", "an_cumparare", "cantitate", "numar_sla")


VALUES (1,'trambulin', TO_DATE('15','YY'), 30,1 );

INSERT INTO "UTILAJE" ("cod", "nume", "an_cumparare", "cantitate", "numar_sla")


VALUES (2,'biciclete', TO_DATE('17','YY'), 20,4 );

INSERT INTO "UTILAJE" ("cod", "nume", "an_cumparare", "cantitate", "numar_sla")


VALUES (3,'greutati fitness', TO_DATE('17','YY'), 60,1 );

INSERT INTO "UTILAJE" ("cod", "nume", "an_cumparare", "cantitate", "numar_sla")


VALUES (4,'saltele', TO_DATE('16','YY'), 30,3 );

INSERT INTO "UTILAJE" ("cod", "nume", "an_cumparare", "cantitate", "numar_sla")


VALUES (5,'incaltaminte kangoo', TO_DATE('16','YY'),30 ,2 );

8
Tabelul ANTRENORI

INSERT INTO ANTRENORI ("marca", "nume", "prenume", "experienta", "data_nastere",


"POZA")
VALUES (1,'Ionescu','Andrei', 3, TO_DATE('87/03/17','YY/MM/DD'),'100111010101011110');

INSERT INTO ANTRENORI ("marca", "nume", "prenume", "experienta", "data_nastere",


"POZA")
VALUES (2,'Kis','Ana', 5, TO_DATE('86/05/22','YY/MM/DD'),'100111010101011111');

INSERT INTO ANTRENORI ("marca", "nume", "prenume", "experienta", "data_nastere",


"POZA")
VALUES (3,'Pop','Radu', 6,TO_DATE('84/08/10','YY/MM/DD'),'100111010101011112');

INSERT INTO ANTRENORI ("marca", "nume", "prenume", "experienta", "data_nastere",


"POZA")
VALUES (4,'Muresan','Oana', 1,TO_DATE('93/02/27','YY/MM/DD'),'100111010101011115');

INSERT INTO ANTRENORI ("marca", "nume", "prenume", "experienta", "data_nastere",


"POZA")
VALUES (5,'Petrescu','Maria', 2,TO_DATE('90/11/03','YY/MM/DD'),'100111010101011113');

9
Tabelul CURSURI

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (1, 'Aerobic', 60, 'mica',2, '100000001');

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (2, 'Pilates', 60, 'medie',3, '100000002');

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (3, 'Kangoo Jumps', 50, 'mare',2, '100000003');

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (4, 'Body pump', 50, 'mare', 1, '100000004');

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (5, 'Cycling', 45, 'medie', 5, '100000005');

10
INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",
"DESCRIERE_EXERCITII")
VALUES (6, 'Zumba', 50, 'medie', 1, '100000006');

INSERT INTO CURSURI ("cod", "denumire", "durata", "dificultate", "marca_atr",


"DESCRIERE_EXERCITII")
VALUES (7, 'Streching', 70, 'mica', 4, '100000007');

Tabelul ABONAMENTE

INSERT INTO ABONAMENTE ("cod", "data_inceput", "perioada","pret")


VALUES (1, TO_DATE('18/01','YY/MM'), 1,100 );

INSERT INTO ABONAMENTE ("cod", "data_inceput", "perioada","pret")


VALUES (2, TO_DATE('18/04','YY/MM'), 3,250 );

INSERT INTO ABONAMENTE ("cod", "data_inceput", "perioada","pret")


VALUES (3, TO_DATE('18/02','YY/MM'), 6,500 );

INSERT INTO ABONAMENTE ("cod", "data_inceput", "perioada","pret")


VALUES (4, TO_DATE('18/01','YY/MM'), 9, 750);
11
INSERT INTO ABONAMENTE ("cod", "data_inceput", "perioada","pret")
VALUES (5, TO_DATE('18/01','YY/MM'), 12, 1000);

Tabelul CURSANTI

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (1, 'Popescu', 'Andrea' ,0746352125,'popescua@yahoo.com', 5, 3);

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (2, 'Nagy', 'Katalin' ,0745621215,'nagyk@yahoo.com', 2, 2);

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (3, 'Pop', 'Alina' ,0725458684,'popa@yahoo.com', 3, 1);

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (4, 'Sipos', 'Oana' ,0723541154,'oanasipos@yahoo.com', 5, 4);

12
INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",
"cod_abt", "cod_cu")
VALUES (5, 'Puscas', 'Mihaela' ,0745458125,'puscasmiha@gmail.com', 2, 3);

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (6, 'Sabau', 'Corina' ,0715400251,'coricori@gmail.com', 1, 4);

INSERT INTO CURSANTI ("id_client", "nume", "prenume", "numar_telefon", "adresa_mail",


"cod_abt", "cod_cu")
VALUES (7, 'Fazakas', 'Andrea' ,0720512125,'fazakasandrea@gmail.com', 5, 2);

2. Secvențe

Secvența cursuri_seq are rolul de a incrementa automat codul cursurilor, în momentul în care
aceștia sunt introduse în baza de date. Numerotarea începe de la 0001.

CREATE SEQUENCE cursuri_seq start with 0001 increment by 1.

13
Creare secventa folosita pentru generare de id-uri in tabela `Utilaje`

CREATE SEQUENCE utilaje_seq START WITH 1;

14
Creare secventa folosita pentru generare de id-uri in tabela `Antrenori`

CREATE SEQUENCE antrenori_seq START WITH 1;

Creare secventa folosita pentru generare de id-uri in tabela `Cursanti`

CREATE SEQUENCE cursanti_seq START WITH 1;

15
3. Declanșări

Creare declansator inserare id pentru tabela `Cursuri`

Triggerul cursuri_trig, în momentul în care un curs nou este introdus în baza de date, codul
cursului este adăugat automat, valoarea fiind numărul la care a ajuns prin secvența cursuri_seq.

CREATE OR REPLACE TRIGGER "cursuri_inc"


BEFORE INSERT ON CURSURI
FOR EACH ROW
BEGIN
SELECT cursuri_seq.NEXTVAL
INTO :new."cod_cursuri"
FROM dual;
END;

16
Creare declansator inserare id pentru tabela `Utilaje`

Triggerul utilaje_trig, în momentul în care un utilaj nou este introdus în baza de date, codul
utilajului este adăugat automat, valoarea fiind numărul la care a ajuns prin secvența utilaje_seq.

CREATE OR REPLACE TRIGGER "utilaje_inc"


BEFORE INSERT ON UTILAJE
FOR EACH ROW
BEGIN
SELECT utilaje_seq.NEXTVAL
INTO :new."cod_utilaje"
FROM dual;
END;

Creare declansator inserare id pentru tabela `Antrenori`

Triggerul antrenori_trig, în momentul în care un antrenori nou este introdus în baza de date,
marca antrenorului este adăugat automat, valoarea fiind numărul la care a ajuns prin secvența
antrenor_seq.

17
CREATE OR REPLACE TRIGGER "antrenori_inc"
BEFORE INSERT ON ANTRENORI
FOR EACH ROW
BEGIN
SELECT antrenori_seq.NEXTVAL
INTO :new."marca_antrenori"
FROM dual;
END;

Creare declansator inserare id pentru tabela `Cursanti`

Triggerul cursanti_trig, în momentul în care un cursant nou este introdus în baza de date, id-
ul cursantului este adăugat automat, valoarea fiind numărul la care a ajuns prin secvența
cursanti_seq.

CREATE OR REPLACE TRIGGER "cursanti_inc"


BEFORE INSERT ON CURSANTI
FOR EACH ROW
BEGIN
SELECT cursanti_seq.NEXTVAL
INTO :new."id_client_cursanti"
18
FROM dual;
END;

4. Package

Specificațiile package-ului:

Sunt declarate procedurile și funcțiile care sunt publice, în timp ce procedurile și funcțiile private
sunt declarate doar în body-ul package-ului. Astfel, structura specificațiilor este:

create or replace package CURSURI_PACK as


PROCEDURE adaugare_in_CURSURI(
v_cod CURSURI."cod"%TYPE,
v_denumire CURSURI. "denumire"%TYPE,
v_durata CURSURI."durata"%TYPE,
v_dificultatea CURSURI. "dificultate"%TYPE,
v_antrenor CURSURI."marca_atr"%TYPE,
v_descriere CURSURI."DESCRIERE_EXERCITII"%TYPE);

PROCEDURE sterge_din_CURSURI(
v_cod CURSURI."cod"%TYPE);
19
FUNCTION cursanulat return number;
END CURSURI_PACK;

create or replace package body CURSURI_PACK as


PROCEDURE adaugare_in_CURSURI
v_cod CURSURI."cod"%TYPE,
v_denumire CURSURI "denumire"%TYPE,
v_durata CURSURI."durata"%TYPE,
v_dificultatea CURSURI "dificultate"%TYPE,
v_antrenor CURSURI."marca_atr"%TYPE,
v_descriere CURSURI."DESCRIERE_EXERCITII"%TYPE)
IS
BEGIN
INSERT INTO
CURSUR("cod","denumire","durata","dificultate","marca_atr","descriere_exercitii")
VALUES(v_cod,v_denumire,v_durata,v_dificultate,v_antrenor,v_descriere);

END adaugare_in_cursuri;

PROCEDURE sterge_din_CURSURI(
v_cod CURSURI."cod"%TYPE)
IS
BEGIN
DELETE FROM CURSURI WHERE "cod"=v_cod;
END sterge_din_CURSURI;

PROCEDURE list_cursuri IS
CURSOR c_cursuri is SELECT "cod" FROM CURSURI;
TYPE c_list is TABLE OF CURSURI."cod"%TYPE;
cursuri_list c_list:=c_list();
counter integer:=0;
BEGIN
FOR n IN c_cursuri LOOP
counter:=counter+1;
cursuri_list.extend;
20
cursuri_list(counter):=n."cod";
dbms_output.put_line('CURSURI('||counter|| ')'||cursuri_list(counter));
END LOOP;
END list_cursuri;

END CURSURI_PACK;

5. Concluzii

Proiectul bazei de date pentru o sala de sport a fost realizată cu condițiile presupuse în capitolul 1.
Implementarea bazei de date a fost implementată pe platforma Oracle prin comenzilor SQL, au fost
populate datele, au fost realizate modificări de structură actualizări de conținut, vedere și interogări

21

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