Sunteți pe pagina 1din 46

PROIECT BAZE DE DATE

Gestiunea bazei de date a unui liceu

Studenta: Popescu Andreea-Alexandra


Prof. coordonator: Lungu Ion
Grupa 1135, ID
ELEVI

ID_ELEV VARCHAR2(6) SCHEMA CONCEPTUALA


NUME_ELEV VARCHAR2(25),

PRENUME_ELEV
VARCHAR2(25), BURSE
REPARTITIIBURSE
ID_BURSA VARCHAR2(6), ID_BURSA
ID_ELEV VARCHAR2(6), VARCHAR2(6)
ID_CLASA VARCHAR2(6),
ID_BURSA
TIP_BURSA CHAR(10),
ID_PROFIL VARCHAR2(6), VARCHAR2(6),
SUMA_BANI
TELEFON VARCHAR(10), LUNA CHAR(15) NUMBER(3);

OLIMPIC CHAR(2),

ADRESA VARCHAR2(50));

PROFESORI

ID_PROFESOR CLASE
VARCHAR2(6) PROFILURI
ID_CLASA VARCHAR2(6),
NUME_PROF ID_PROFIL
AN_STUDIU NUMBER(2,0), VARCHAR2(6)
VARCHAR2(25)
NUME_CLASA VARCHAR2(1), NUME_PROFIL
PRENUME_PROF
VARCHAR2(25), VARCHAR2(10)
ID_PROFIL VARCHAR2(6),

SALARIUL NUMBER(4), DIRIGINTE VARCHAR2(6));

TELEFON VARCHAR2(10) ,

ADRESA VARCHAR2(50));

PREZENTARE PROIECT

Tema proiectului o constituie gestiunea unei baze de date a unui liceu.

Scopul bazei de date este sa creeze o statistica pentru elevi in functie de bursa pe
care o iau, sa tina evidenta burselor in functie de luna in care au fost date si sa faciliteze
contactul elevilor si a profesorilor.

Am creat intial tabelele ELEVI, PROFESORI, CLASE, PROFILURI, BURSE SI


REPARTITIIBURSE.
Tabela Elevi are ca si cheie primara atributul id_elev, iar ca si chei externe atributele
id_clasa si id_profil. Exista o legatura 1:n intre Elevi si Repartitiiburse ( un elev poate lua o
singura bursa intr-o luna).

Tabela Profesori are ca si cheie primara atributul id_profesor si mai contine


informatii precum nume, prenume, salariul, numarul de telefon precum si materia pe care o
preda. Exista o relatie de 1:n intre Profesori si Clase.

Tabela Clase contine informatii precum id clasei, anul de studiu, numele clasei,
profilul de care apartine si dirigintele acesteia. Are ca si chei externe id_profil si diriginte(
id_profesor).

Tabela Profiluri contine informatii precum id_profil si numele profilului.

Tabela Burse contine informatii precum id_bursa, tipul bursei si suma de bani alocata
fiecarui tip de bursa.

Tabela Repartitiiburse contine informatii precum id_elev, id_bursa si luna in care a


fost alocata.

CREAREA TABELELOR

Tabela Elevi

Create table Elevi

( ID_ELEV VARCHAR2(6) not null,

NUME_ELEV VARCHAR2(25),

PRENUME_ELEV VARCHAR2(25),

ID_BURSA VARCHAR2(6),
ID_CLASA VARCHAR2(6),

ID_PROFIL VARCHAR2(6),

TELEFON VARCHAR(10),

OLIMPIC CHAR(2),

ADRESA VARCHAR2(50));

Tabela Profesori
Create table Profesori

( ID_PROFESOR VARCHAR2(6) not null,

NUME_PROF VARCHAR2(25),

PRENUME_PROF VARCHAR2(25),

SALARIUL NUMBER(4),
TELEFON VARCHAR2(10) ,

ADRESA VARCHAR2(50));

Tabela Profiluri
Create table Profiluri

( ID_PROFIL VARCHAR2(6) NOT NULL,

NUME_PROFIL VARCHAR2(10) NOT NULL);


Tabela Burse
Create table Burse

( ID_BURSA VARCHAR2(6)not null,

TIP_BURSA CHAR(10),

SUMA_BANI NUMBER(3));
Tabela Repartitiiburse
Create table Repartitiiburse

(ID_ELEV VARCHAR2(6),

ID_BURSA VARCHAR2(6),

LUNA CHAR(15) NOT NULL);


Tabela Clase
Create table Clase

( ID_CLASA VARCHAR2(6),

AN_STUDIU NUMBER(2,0),

NUME_CLASA VARCHAR2(1),

ID_PROFIL VARCHAR2(6),

DIRIGINTE VARCHAR2(6));
CONDITII DE INTEGRITATE

1. Alter table Elevi


Add constraint ELEV_ID_ELEV_PK primary key (ID_ELEV);
2. Alter table Elevi

Drop column OLIMPIC;

3. Alter table Elevi

Add constraint ELEV_TELEFON_UK unique (TELEFON);


4. Alter table Elevi

Add constraint ELEV_NUME_ELEV_NN

Check (“NUME_ELEV” IS NOT NULL);

5. Alter table Elevi

Add constraint ELEV_PRENUME_ELEV_NN

Check (“PRENUME_ELEV” IS NOT NULL);


6. Alter table Elevi

Drop column ADRESA;


Tabela Profesori
1. Alter table Profesori

Add constraint PROF_ID_PROFESOR_PK primary key (ID_PROFESOR);

2. Alter table Profesori

Add constraint PROF_SALARIUL_NN

Check (“SALARIUL” IS NOT NULL);


3. Alter table Profesori

Add constraint PROF_TELEFON_UK unique (TELEFON);

4. Alter table Profesori

Drop column ADRESA;


5. Alter table Profesori
Add (MATERIE VARCHAR2(15));
Tabela Profiluri

1. Alter table Profiluri


Add constraint ELEV_ID_PROFIL_PK primary key (ID_PROFIL);

2. Alter table Profiluri

Add constraint PRF_NUME_PROFIL_NN

Check (“NUME_PROFIL” IS NOT NULL)


Tabele Burse
1. Alter table BurseAdd constraint BRS_ID_BURSA primary key (ID_BURSA);

2. Alter table Burse

Add constraint TIP_BURSA_CK check ( TP_BURSA in (‘DE MERIT’, ‘SOCIALA’, ‘NICIUNA’));


3. Alter table Burse

Add constraint BRS_SUMA_BANI_NN

Check (“ SUMA_BANI” IS NOT NULL);

Tabela Repartitiiburse

1. Alter table Repartitiiburse


Add constraint ELEV_BES_FK foreign key (ID_ELEV)
References Elevi (ID_ELEV);

2. Alter table Repartitiiburse

Add constraint REP_BRS_FK foreign key ( ID_BURSA)

References Burse (ID_BURSA);


Tabela Clase
1. Alter table Clase

Add constraint CLS_ID_CLASA_PK primary key ( ID_CLASA);

2. Alter table Clase

Add constraint CLS_PRF_FK foreign key (ID_PROFIL)

References PROFILURI (ID_PROFIL)


3. Alter table Clase

Add constraint DRG_PRF_FK foreign key (DIRIGINTE)

References PROFESORI (ID_PROFESOR);

ADAUGARE DE INREGISTRARI

Tabela Elevi
insert all

into Elevi values ('elv001','Ion','Alin','brs001’,’cls005’,’prf001’,'766584544')

into Elevi values ('elv002',’Nitu','Ioana','brs003’,’cls005’,’prf003,’763699255’)

into Elevi values ('elv003','Marcu’.’Marisa’,brs001’,’cls005’,’prf002’,’766249477’)

into Elevi values ('elv004','Popescu’,’Maia’,’brs002’,’cls003’,’prf001’,’766249566’)

into Elevi values ('elv005','Ionita’,’Petru’,’brs003’,’cls004’,’prf002’,’462699254’)


select *from dual

Tabela Profesori
insert all

into Profesori values ('prf004','Ilade','Valentin','1400','0741236524','Biologie')

into Profesori values ('prf001','Teodorescu','Emil','1300','0754123654','Matematica')

into Profesori values ('prf002','Cartas','Elena','2000','0742315856','Lb.Engleza')

into Profesori values ('prf003','Vulpe','Matei','1750','0745212365','Lb.Romana')

into Profesori values ('prf005','Diaconu','Adriana','2000','0745896321','Informatica')

select *from dual


Tabela Profiluri
insert all

into Profiluri values ('prf001','Mate-Info')

into Profiluri values ('prf002','Filologie')

into Profiluri values ('prf003','MateFizica')

select * from dual


Tabela Burse
Insert all

Into Burse values (‘brs001’,’DE MERIT’,’200’)

Into Burse values (‘brs002’,’SOCIALA’,’150’)

Into Burse values (‘brs003’,’NICIUNA’,’0’)

Select * from dual


Tabela Repartitiiburse
insert all

into Repartitiiburse values ('elv001','brs001','Decembrie')

into Repartitiiburse values ('elv002','brs003','Mai')

into Repartitiiburse values ('elv003','brs001','Aprilie')

into Repartitiiburse values ('elv004','brs002','Decembrie')

into repartitiiburse values ('elv005','brs003','Februarie')

select * from dual


Tabela Clase
insert all

into Clase values ('cls003','9','A','prf001','prf002')

into Clase values ('cls004','9','C','prf002','prf001')

into Clase Values ('cls005','11','D','prf003','prf003')

select * from dual


UPDATE
1. Sa se mareasca suma de bani pentru fiecare tip de bursa cu 50%.

update Burse

set SUMA_BANI=SUMA_BANI*1.5;
2. Sa se mareasca salariul profesorilor care predau matematica cu 30%.
update Profesori

set SALARIUL=SALARIUL*1.3

WHERE MATERIE LIKE '%Matematica%';

3.Sa se stearga inregistrarile profesorilor al caror nume este “Ilade”.

DELETE FROM Profesori

where NUME_PROF like '%Ilade%';


4.Sa se seteze profilul mate-info pentru clasele al caror id este “cls001” si “cls002”.

update Elevi

set ID_PROFIL='prf001'

WHERE ID_CLASA IN ('cls004','cls005');

5.Sa se acorde bursa sociala elevului cu id “elv001”.

update Elevi

set id_bursa='brs002'

where id_elev='elv001';
INREGISTRARI

1. Sa se afiseze numele si prenumele elevilor care iau bursa de merit.


Select nume_elev, prenume_elev, id_bursa
From elevi
Where id_bursa=’br

s001’
Order by nume_elev;

2.Sa se afiseze numarul profesorilor in functie de materia predata.

Select count(id_profesor)
From profesori
Group by materie;

3.Sa se afiseze numele, prenumele si salariul profesorilor care au salariul mai mare de 1700.

select nume_prof, prenume_prof, salariu


from profesori
where salariu > 1700;

4.Sa se atribuie un bonus de 50% profesorilor care predau matematica si un bonus de 40% celor
care predau lb. romana.
select nume_prof, materie, salariul
case
when upper(materie)='%MATEMATICA%'
then 0.5*salariul
when upper(materie)='%LB.ROMANA%'
then 0.4*salariui
else 0
end bonus
FROM Profesori;

5.select sum(suma_bani)

from burse a, repartitiiburse b


where a.id_bursa=b.id_bursa and upper(b.luna)='%MAI%';
6.Sa se afiseze salariul minim, salariul maxim si salariul mediu.

select min(salariu), max(salariu), avg(salariu)


from profesori;

7.Sa se afiseze numele si prenumele elevilor al caror prenume incepe cu litera A.

select nume_elev, prenume_elev


from elevi
where upper(prenume_elev) like 'A%';
8.Sa se afiseze ierarhic toti superiorii elevului cu id elev006.

select level, nume_elev, prenume_elev


from elevi
start with id_elev='elv004'
connect by prior id_elev='elv001'
9.Sa se afiseze numele si prenume profesorilor care au a doua litera din prenume A.

select nume_prof,prenume_prof
from profesori
where upper(prenume_prof) like '_A%'

10.Sa se afiseze numele clasei si anul de studiu pentru clasa a carei diriginte are id_prof =’prf004’.

Select an_studiu, nume_clasa


From clase
Where diriginte=’prf003’;
11.Sa se afiseze numele si prenumele elevilor a caror numar de telefon se termina cu 937.

select nume_elev, prenume_elev


from elevi
where telefon like '%544';
12.Sa se afiseze salariul minim, salariul maxim si salariul mediu in functie de materie.

select min(salariul), max(salariul), avg(salariul), materie


from profesori
group by materie;

13.Sa se afiseze toate informatiile tabelei clase.

select id_clasa, an_studiu, nume_clasa, id_profil, diriginte


from clase;
14.Sa se afiseze numarul elevilor pentru fiecare an de studiu.

select count(id_elev)
from elevi a, clase b
where a.id_clasa=b.id_clasa
group by an_studiu;

15.Sa se afiseze numarul elevilor de la profilul mate-info.

select count(id_elev)
from elevi
where id_profil='prf001'
16.Sa se afiseze id-ul clasei, numele clasei si anul de studiu pentru clasa la care profesorul cu id-ul
‘prf001’ este diriginte.

select c.id_clasa,c.nume_clasa, c.an_studiu, p.nume_prof,p.prenume_prof


from clase c, profesori p
where c.diriginte=p.id_profesor
and c.id_clasa='cls001';
17.Sa se afiseze diferenta dintra tabela PROFESORI si tabela CLASE.

SELECT A.ID_PROFESOR FROM PROFESORI A


MINUS
SELECT B.DIRIGINTE FROM CLASE B;

18.Sa se afiseze intersectia dintre tabela Clase si tabela Elevi.

SELECT Y.ID_CLASA FROM CLASE Y INTERSECT SELECT X.ID_CLASA FROM ELEVI X;


19.Sa se afiseze id-ul clasei, numele concatenate cu prenume concatenate numai pentru elevii al caror
nume incepe cu ‘P’.

SELECT E.iD_CLASA, CONCAT(E.NUME_ELEV,E.PRENUME_ELEV) AS "NUME,PRENUME"


FROM ELEVI E,CLASE C
WHERE E.ID_CLASA=C.ID_CLASA
AND NUME_ELEV LIKE 'P%';
TABELA VIRTUALA

1. Creati o tabela virtuala cu aceiasi structura ca tabela Elevi, dar care sa contina numai acele inregistrari
care incep cu litera ’M’.

CREATE VIEW M_ELEVI AS SELECT * FROM ELEVI


WHERE UPPER(NUME_ELEV) LIKE ‘M%’
SINONIM
1. Sa se creeze un sinonim pentru tabela Elevi.
Create synonym Elevi_Syn for Elevi ;
2. Sa se stearga sinonimul creat.
DROP SYNONYM Elevi_SYN;

INDECSI

1. Sa se creeze un index la tabela Elevi pe coloanele nume , care sa faciliteze accesul mai rapid la
tabela cu numele si prenumele elevilor.
Create index elev_nume_ix
On Elevi (NUME_ELEV,PRENUME_ELEV) ;

2. Sa se stearga indexul creat.


DROP INDEX elev_nume_ix;
SECVENTE
1. Creati o secventa ‘an_studiu_clsid_seg’ care sa inceapa de la 9, sa fie incrementata cu 3, iar valoarea
maxima sa fie 12.

2. Creati o secventa ‘salariul_salid_seg’ care sa inceapa de la 1400, sa fie incrementata cu 10, iar
valoarea maxima sa fie 2000.

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