Proiect Baze de Date - Pascu - Ionela
Proiect Baze de Date - Pascu - Ionela
Proiect Baze de Date - Pascu - Ionela
SCHEMA CONCEPTUALA
Descriere proiect
Am ales ca tema pentru crearea bazei de date 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 principal 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
Tabela Profesori
Tabela Profiluri
Create table Profiluri
( ID_PROFIL VARCHAR2(6),
NUME_PROFIL VARCHAR2(10) NOT NULL);
Tabela Burse
Create table Burse
( ID_BURSA VARCHAR2(6),
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),
NUME_CLASA VARCHAR2(1),
ID_PROFIL VARCHAR2(6),
DIRIGINTE VARCHAR2(6));
CONDITII DE INTEGRITATE
Tabela Elevi
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
Tabele Burse
1. Alter table Burse
Add 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','Patru','Ionel','brs001,cls001,prf001,'0769634937')
into Elevi values
('elv002',Irimia','Alexandra','brs001,cls002,prf002,0765965263)
into Elevi values ('elv003','Radu.Ionut,brs002,cls001,prf002,0765239458)
into Elevi values ('elv004','Petre,Marius,brs003,cls005,prf005,0756258452)
into Elevi values ('elv005','Miron,Claudiu,brs002,cls003,prf004,0756587423)
into Elevi values ('elv006','Popescu,Irina,brs001,cls006,prf005,0756525948)
into Elevi values ('elv007',Costea,Paula,brs002,cls003,prf001,0759632158)
into Elevi values ('elv008','Marin,Claudiu,brs003,cls001,prf002,0756239478)
into Elevi values
('elv009','Postolache,Crina,brs002,cls009,prf003,0745862349)
into Elevi values ('elv010',Pavel,Andra,brs001,cls002,prf001,0748623595)
into Elevi values ('elv011',Mitrea,Ana,brs003,cls002,prf004,0756952364)
select *from dual
Tabela Profesori
insert all
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 ('prf004','Ilade','Valentin','1400','0741236524','Biologie')
into Profesori values ('prf005','Diaconu','Adriana','2000','0745896321','Informatica')
into Profesori values ('prf006','Stoleru','Cristian','2500','0748963254','Matematica')
into Profesori values ('prf007','Croitoru','Cristina','1300','0763215645','Chimie')
into Profesori values ('prf008','Ciobanu','Florina','1400','0786523489','Fizica')
into Profesori values ('prf009','Caluian','Andreea','2500','0741236522','Ed.fizica')
into Profesori values ('prf010','Mircea','Ioan','1100','0754123624','Lb.Romana')
select *from dual
Tabela Profiluri
insert all
into Profiluri values ('prf001','Mate-Info')
into Profiluri values ('prf002','Filologie')
into Profiluri values ('prf003','MateFizica')
into Profiluri values ('prf004','ChimiBio')
into Profiluri values ('prf005','StiinteNat')
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','brs001','Mai')
into Repartitiiburse values ('elv005','brs002','Aprilie')
into Repartitiiburse values ('elv007','brs002','Decembrie')
into repartitiiburse values ('elv009','brs002','Februarie')
into Repartitiiburse values ('elv011','brs003','Mai')
select * from dual
Tabela Clase
insert all
into Clase values ('cls001','9','A','prf001','prf002')
into Clase values ('cls002','9','C','prf002','prf001')
into Clase Values ('cls003','11','D','prf004','prf003')
into Clase values ('cls005','12','A','prf005','prf004')
into Clase values ('cls009','10','B','prf003','prf006')
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;
15 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=brs001
Order by nume_elev;
5. select sum(suma_bani)
from burse a, repartitiiburse b
where a.id_bursa=b.id_bursa and upper(b.luna)='%MAI%';
from profesori;
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=prf004;
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';
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 ;
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) ;
SECVENTE
2. Creati o secventa salariul_salid_seg care sa inceapa de la 1400, sa fie incrementata cu 10, iar valoarea
maxima sa fie 2000.