Sunteți pe pagina 1din 15

APLICATII PROFESIONALE IN BAZE DE DATE ORIENTATE PE OBIECTE

GESTIUNEA BAZEI DE DATE A UNEI


UNIVERSITATI

PROFESOR COORDONATOR: LETITIA VELCESCU


STUDENTI: DRANGA MIHAELA- grupa 406
BURTEA BOGDAN grupa 405

Descriere
Acest proiect are ca si scop crearea unui model pentru a reprezenta cat mai
util datele ce se refera la gestiunea studentilor si activitatilor desfasurate de
acestia intr-o universitate.
Un student este inscris la o facultate (este identificata in mod unic prin
id_facultate, id_universitate, denumire, descriere, adresa, numar_telefon, email,
pagina_web). Facultatea face parte din cadrul unei universitati(identificata in
mod unic prin id_universitate, denumire, descriere, adresa, numar_telefon, email,
pagina_web) si apartine unui domeniu (identificat unic prin id_domeniu,
id_facultate, denumire, descriere).
Studentul (identificat in mod unic prin id_student, id_facultate ,id_grupa,
id_camera, id_promotie, id_forma_invatamant, id_forma_finantare,
id_program_studii, nume, prenume, telefon, email, adresa, cnp) face parte dintr-o
grupa( identificat unic prin id_grupa, nume), apartine unei promotii (identificata
unic prin id_promotie, an, descriere), urmeaza o forma de finantare
(id_forma_finantare, denumire ), o forma de invatamant (id_forma_invatamant,
denumire), dar si un program de studii (id_program_studii, denumire).
Studentul poate locui intr-o camera ( id_camera, id_camin, numar, etaj,
capacitate), iar camera face parte dintr-un camin (id_camin, nume, adresa,
numar_telefon, email).
Studentul poate participa la un curs (id_curs, denumire, descriere), sustinut
de un profesor (id_profesor, nume, prenume, cnp, email, adresa, numar_telefon).
Dupa terminarea cursului, studentul poate sustine un examen (id_examen,
id_sesiune, id_curs, id_curs, data_examen) in urma caruia obtine o nota(id_nota,
id_student, id_examen, valoare). Examenul face parte dintr-o
sesiune( id_sesiune, denumire, data_inceput, data_sfarsit).
Normalizarea
Normalizarea este procesul care presupune descompunerea unui tabel
relational alcatuit dintr-un set de atribute, in doua sau mai multe tabele care vor
forma baza de date, cu scopul de a elimina redundantele (memorarea repetata a
acelorasi date) si anomaliile care pot aparea in operatiile de adaugare, modificare
sau stergere de inregistrari.
Acest proces se fundamenteaza pe urmatoarele concepte: dependente
funtionale(poate fi simpla ~ dependenta functionala totala, dependenta functionala
partiala, dependenta functionala triviala~ sau multipla), dependente multivaloare
si forme normale. E.F. Codd, parintele modelului relational a definit initial trei
forme normale FN1, FN2, FN3. Apoi, forma normala Boyce-Codd, numita astfel
dupa numele celor doi specialisti in domeniu, s-a dorit a fi o forma generalizata a
FN2 si FN3. Aceste patru forme normale sunt asociate dependentelor functionale.
Formele normale 4 si 5 ( FN4 si FN5) sunt asociate in literatura de specialitate cu
numele cercetatorului Fagin si se bazeaza pe dependentele multivaloare.

Relatiile existente in modelul prezentat in proiectul de fata sunt normalizate


si nu mai este necesara trecerea acestora prin FN1 si FN2.
Denormalizarea
Denormalizarea este procesul invers, opus normalizarii efectuat cu scopul
imbunatatirii performantelor bazei de date.Aceasta presupune inlocuirea relatiilor
formate in urma normalizarii prin join-ul acestora cu o relatie R, astfel incat
pentru toate valorile relatiilor normalizate, este sigur ca proiectia lui R dupa
atributele relatiilor normalizate va produce din nou relatiile respective.
Daca am realiza denormalizarea relatiilor bazei de date am mari redundanta,
nefiind benefic.

Schema relationala
Schema relationala reprezinta multimea atributelor corespunzatoare
relatiilor. In cele ce urmeaza am reprezentat schema relationala asociata modelului
descris in acest proiect.
Camera ( id_camera#, id_camin, numar, etaj, capacitate)
Camin (id_camin#, nume, descriere, adresa, numar_telefon, email)
Curs (id_curs#, denumire, descriere)
Domeniu (id_domeniu#, id_facultate, denumire, descriere)
Examen(id_examen#, id_sesiune, id_curs, data_examen, sala_examen)
Facultate (id_facultate#, id_universitate, denumire, descriere, adresa, email,
numar_telefon, pagina_web)
Forma_finantare (id_forma_finantare#, denumire)
Forma_invatamant (id_forma_invatamant#, denumire)
Grupa (id_grupa#, nume)
Nota(id_nota#, id_student, id_examen, valoare)
Participa(id_participa#, id_student, id_curs)
Profesor (id_profesor#, nume, prenume, adresa, email, numar_telefon, CNP)
Program_studii(id_program_studii#, denumire)

Promotie (id_promotie#, an, descriere)


Sesiune (id_sesiune#, denumire, data_inceput, data_sfarsit)
Student (id_student #, id_facultate, id_grupa, id_camera, id_promotie,
id_forma_invatamant, id_forma_finantare, id_program_studii, nume, prenume,
telefon, email, adresa, CNP)
Tine_curs(id_tine_curs#, id_curs, id_profesor, data)
Universitate (id_universitate#, denumire, descriere, adresa, numar_telefon,
email, pagina_web)
Entitati
Camera
Nume atribut

Tip

Permite null

Observatii

id_camera
id_camin
numar

int
int
varchar(10)

nu
nu
nu

cheie primara
cheie straina catre tabelul Camin
-

etaj

varchar(10)

da

capacitate

varchar(3)

nu

Nume atribut

Tip

Permite null

Observatii

id_camin
nume

int
varchar(100)

nu
nu

cheie primara
-

descriere

varchar(100)

da

adresa

varchar(150)

nu

numar_telefon
email

varchar(20)
varchar(100)

da
da

Nume atribut

Tip

Permite null

Observatii

id_curs

int

nu

cheie primara

Camin

Curs

denumire

varchar(100)

nu

descriere

varchar(100)

da

Nume atribut

Tip

Permite null

Observatii

id_domeniu
id_facultate

int
int

nu
nu

cheie primara
cheie straina catre tabelul Facultate

denumire

varchar(100)

nu

descriere

varchar(100)

da

Nume atribut

Tip

Permite null

Observatii

id_examen
id_sesiune

int
int

nu
nu

cheie primara
cheie straina catre tabelul Sesiune

id_curs

int

nu

cheie straina catre tabelul Curs

data_examen

varchar(10)

nu

sala_examen

varchar(10)

da

Nume atribut

Tip

Permite null

Observatii

id_facultate
id_universitate

int
int

nu
nu

denumire

varchar(100)

nu

cheie primara
cheie straina catre tabelul
Universitate
-

descriere

varchar(100)

da

adresa

varchar(150)

da

email

varchar(100)

da

numar_telefon

varchar(20)

nu

pagina_web

varchar(20)

da

Domeniu

Examen

Facultate

Forma_finantare
Nume atribut

Tip

Permite null

Observatii

id_forma_finantar
e
denumire

int

nu

cheie primara

varchar(100)

nu

Forma_invatamant
Nume atribut

Tip

id_forma_invatamant int
denumire
varchar(100)

Permite null

Observatii

nu
nu

cheie primara
-

Grupa
Nume atribut

Tip

Permite null

Observatii

id_grupa
nume

int
varchar(100)

nu
nu

cheie primara
-

Nota
Nume atribut

Tip

Permite null

Observatii

id_nota
id_student

int
int

nu
nu

cheie primara
cheie straina catre tabelul Student

id_examen

int

nu

cheie straina catre tabelul Examen

valoare

varchar(10)

nu

Nume atribut

Tip

Permite null

Observatii

id_participa
id_student

int
int

nu
nu

cheie primara
cheie straina catre tabelul Student

id_curs

int

nu

cheie straina catre tabelul Curs

Participa

Profesor

Nume atribut

Tip

Permite null

Observatii

id_profesor
nume

int
nu
varchar(100) nu

cheie primara
-

prenume

varchar(100) nu

adresa

varchar(150) da

email

varchar(100) da

numar_telefon

varchar(20)

da

CNP

varchar(20)

nu

Program_studii
Nume atribut

Tip

Permite null

id_program studii
denumire

int
nu
varchar(100) nu

Observatii
cheie primara
-

Promotie
Nume atribut

Tip

Permite null

Observatii

id_promotie
an

int
int

nu
nu

cheie primara
-

descriere

varchar(100) da

Nume atribut

Tip

Observatii

id_sesiune
denumire

int
nu
varchar(100) da

cheie primara
-

data_inceput

varchar(10)

nu

data_sfarsit

varchar(10)

nu

Sesiune

Student

Permite null

Nume atribut

Tip

Permite
null

Observatii

id_student
id_facultate

int
int

nu
nu

id_grupa

int

nu

id_camera

int

da

id_promotie

int

nu

id_forma_invatamant int

nu

id_forma_finantare

int

nu

id_program_studii

int

nu

nume

varchar(20)

nu

cheie primara
cheie straina catre tabelul
Facultate
cheie straina catre tabelul
Grupa
cheie straina catre tabelul
Camera
cheie straina catre tabelul
Promotie
cheie straina catre tabelul
Forma_invatamant
cheie straina catre tabelul
Forma_finantare
cheie straina catre tabelul
Program_studii
-

prenume

varchar(20)

nu

telefon

varchar(20)

da

email

varchar(20)

da

adresa

varchar(100)

da

CNP

varchar(20)

nu

Tine_curs
Nume atribut

Tip

Permite null

Observatii

id_tine_curs
id_curs

int
int

nu
nu

cheie primara
cheie straina catre tabelul Curs

id_profesor

int

nu

cheie straina catre tabelul Profesor

data_curs

varchar(10)

da

sala_curs

varchar(10)

da

Universitate
Nume atribut

Tip

Permite null

Observatii

id_universitate
denumire

int
nu
varchar(100) nu

cheie primara
-

descriere

varchar(100) da

adresa

varchar(150) nu

email

varchar(100) da

numar_telefon

varchar(20)

nu

pagina_web

varchar(20)

da

Relatii
Student_apartine_promotie
- leaga entitatea Student de entitatea Promotie
- un student trebuie sa apartina unei promotii, o promotie are cel putin un
student, cardinalitate minima 1:1
-un student apartine doar unei promotii, o promotie poate avea mai multi
student, cardinalitate maxima n:1
Student_apartine_grupa
- leaga entitatea Student de entitatea Grupa
- un student trebuie sa apartina unei grupe, o grupa are cel putin un
student, cardinalitate minima 1:1
- un student apartine doar unei grupe, o grupa poate avea mai multi
student, cardinalitate maxima n:1
Student_apartine_forma_invatamant
-leaga entitatea Student de entitatea Forma_invatamant
- un student trebuie sa apartina unei forme de invatamant, o forma de
invatamant poate sa nu fie urmata de niciun student: cardinalitate minima 1:0
- un student apartine doar unei forme de invatamant, o forma de invatamant
poate fi urmata de mai multi studenti, cardinalitate maxima n:1
Student_apartine_forma_finantare
- leaga entitatea Student de entitatea Forma_finantare
- un student trebuie sa apartina unei forme de finantare, o forma de
finantare poate sa nu fie urmata de niciun student, cardinalitate minima 1:0
- un student apartine doar unei forme de finantare, o forma de finantare
poate fi urmata de mai multi studenti, cardinalitate maxima n:1
Student_apartine_facultate
- leaga entitatea Student de entitatea Facultate
- un student trebuie sa apartina unei facultati, o facultate are cel putin un
studenti, cardinalitate minima 1:1
- un student apartine unei facultati, o facultate poate avea mai multi
studenti, cardinalitate maxima n:1

Student_are_camera
- leaga entitatea Student de entitatea Camera
- un student poate sa nu stea in nicio camera, o camera poate sa nu aiba
niciun student, cardinalitate minima 0:0
- un student poate sta doar intr-o camera, o camera poate avea mai multi
studenti, cardinalitate maxima n:1
Camera_apartine_camin
- leaga entitatea Camera de entitatea Camin
- o camera apartine unui camin, un camin are cel putin o camera,
cardinalitate minima 1:1
- o camera apartine unui singur camin, un camin poate avea mai multe
camera, cardinalitate maxima n:1
Facultate_apartine_universitate
-leaga entitatea Facultate de entitatea Universitate
- o facultate apartine unei universitati, o universitate are cel putin o
facultate, cardinalitate minima 1:1
- o facultate apartine unei singure universitati, o univeristate poate avea mai
multe facultati, cardinalitate maxima n:1
Facultate_are_domeniu
-leaga entitatea Facultate de entitatea Domeniu
- o facultate are un domeniu, un domeniu trebuie sa fie apartinut de o
facultate, cardinalitate minima 1:1
-o facultate poate avea mai multe domenii , un domeniu e apartinut de o
facultate, cardinalitate maxima 1:n
Student_participa_curs
-leaga entiatea Student de entitatea Curs
-un student trebuie sa participe la un curs, un curs este urmat de cel putin
un student, cardinalitate minima 1:1
-un student poate participa la mai multe cursuri, un curs poate fi urmat de
mai multi studenti, cardinaliate maxima m:n
-se creeaza tabelul asociativ Participa
Profesor_tine_curs
-leaga entitatea Profesor de entitatea Curs
-un profesor tine cel putin un curs, un curs e tinut de un profesor,
cardinaliate minima 1:1
-un profesor poate tine mai multe cursuri, un curs poate fi tinut de mai multi
porfesori, cardinalitate maxima m:n
-se creeaza tabelul asociativ Tine_curs
Curs_se_da_examen
-leaga entitatea Curs de entitatea Examen
-la un curs se da cel putin un examen, un examen apartine unui curs,
cardinalitate minima 1:1

-la un curs se pot da mai multe examene, un examen poate fi sustinut doar
pentru un singur curs, cardinalitate maxima 1:n
Examen_apartine_sesiune
- leaga entitatea Examen, de entitatea Sesiune
- un examen apartine unei sesiuni, intr- o sesiune se da cel putin un
examen, cardinalitate minima 1:1
- un examen poate fi dat decat intr-o sesiune, intr o sesiune se pot da mai
multe examene , cardinalitate maxima n:1
Examen_evaluat_cu_nota
- leaga entitatea Examen, de entitatea Nota
- un examen trebuie evaluat cu o nota, o nota apartine cel putin unui
examen, cardinalitate minima 1:1
- la un examen se pot lua mai multe note, nota nu poate fi data decat la un
examen anume, cardinalitate maxima 1:n
Student_ia_nota
- leaga entitatea Student de entitatea Nota
- un student poate sa nu aiba nicio nota, o nota trebuie sa apartina unui
student, cardinalitate minima 1:0
-un student poate lua mai multe note, o nota apartine unui singur student,
cardinalitate maxima 1:n

Crearea bazei de date


CREATE TABLE universitate
(
id_universitate int NOT NULL ,
denumire VARCHAR(100) NOT NULL ,
descriere VARCHAR(100),
adresa VARCHAR(150) NOT NULL ,
email VARCHAR(100),
numar_telefon VARCHAR(20) NOT NULL ,
pagina_web VARCHAR(20),
PRIMARY KEY (id_universitate));
CREATE TABLE facultate
(
id_facultate int NOT NULL,
id_universitate int NOT NULL,
denumire VARCHAR(100) NOT NULL ,
descriere VARCHAR(100),
adresa VARCHAR(150),
email VARCHAR(100),

numar_telefon VARCHAR(20) NOT NULL,


pagina_web VARCHAR(20),
PRIMARY KEY (id_facultate),
CONSTRAINT fk_FacUniv FOREIGN KEY (id_universitate)
REFERENCES universitate(id_universitate));
CREATE TABLE domeniu
(
id_domeniu int NOT NULL,
id_facultate int NOT NULL,
denumire VARCHAR(100) NOT NULL ,
descriere VARCHAR(100),
PRIMARY KEY (id_domeniu),
CONSTRAINT fk_DomFac FOREIGN KEY (id_facultate)
REFERENCES facultate(id_facultate));
(

CREATE TABLE grupa


id_grupa int NOT NULL,
nume VARCHAR(100) NOT NULL ,
PRIMARY KEY (id_grupa));
CREATE TABLE camin

id_camin int NOT NULL,


nume VARCHAR(100) NOT NULL ,
descriere VARCHAR(100),
adresa VARCHAR(150) NOT NULL ,
numar_telefon VARCHAR(20),
email VARCHAR(100),
PRIMARY KEY (id_camin));
CREATE TABLE camera
id_camera int NOT NULL,
id_camin int NOT NULL,
numar VARCHAR(10) NOT NULL ,
etaj VARCHAR(10) NULL ,
capacitate VARCHAR(3) NOT NULL ,
PRIMARY KEY (id_camera),
CONSTRAINT fk_CamCamin FOREIGN KEY (id_camin)
REFERENCES camin(id_camin));

CREATE TABLE promotie


id_promotie int NOT NULL,
an int NOT NULL,
descriere VARCHAR(100),
PRIMARY KEY (id_promotie));

CREATE TABLE forma_invatamant


id_forma_invatamant int NOT NULL,
denumire VARCHAR(100) NOT NULL,
PRIMARY KEY (id_forma_invatamant));

CREATE TABLE forma_finantare

id_forma_finantare int NOT NULL,


denumire VARCHAR(100) NOT NULL,
PRIMARY KEY (id_forma_finantare));
CREATE TABLE program_studii
id_program_studii int NOT NULL,
denumire VARCHAR(100) NOT NULL,
PRIMARY KEY (id_program_studii));
CREATE TABLE curs

id_curs int NOT NULL,


denumire VARCHAR(100) NOT NULL,
descriere VARCHAR(100),
PRIMARY KEY (id_curs));
CREATE TABLE profesor

id_profesor int NOT NULL ,


nume VARCHAR(100) NOT NULL ,
prenume VARCHAR(100) NOT NULL ,
adresa VARCHAR(150),
email VARCHAR(100),
numar_telefon VARCHAR(20),
cnp VARCHAR(20) NOT NULL ,
PRIMARY KEY (id_profesor));
CREATE TABLE tine_curs

id_tine_curs int NOT NULL,


id_profesor int NOT NULL,
id_curs int NOT NULL,
data_curs VARCHAR(10),
sala_curs VARCHAR(10),
PRIMARY KEY (id_tine_curs),
CONSTRAINT fk_TinCursProf FOREIGN KEY (id_profesor)
REFERENCES profesor(id_profesor),
CONSTRAINT fk_TinCursCurs FOREIGN KEY (id_curs)
REFERENCES curs(id_curs));

CREATE TABLE sesiune


(

id_sesiune int NOT NULL,


denumire VARCHAR(100),
data_inceput VARCHAR(10) NOT NULL ,
data_sfarsit VARCHAR(10) NOT NULL ,
PRIMARY KEY (id_sesiune));

CREATE TABLE examen


id_examen int NOT NULL,
id_sesiune int NOT NULL,
id_curs int NOT NULL,
data_examen VARCHAR(10) NOT NULL ,

sala_examen VARCHAR(10),
PRIMARY KEY (id_examen),
CONSTRAINT fk_ExamenSes FOREIGN KEY (id_sesiune)
REFERENCES sesiune(id_sesiune),
CONSTRAINT fk_ExamenCurs FOREIGN KEY (id_curs)
REFERENCES curs(id_curs));
(

CREATE TABLE student


id_student int NOT NULL,
id_facultate int NOT NULL,
id_grupa int NOT NULL,
id_camera int,
id_promotie int NOT NULL,
id_forma_invatamant int NOT NULL,
id_forma_finantare int NOT NULL,
id_program_studii int NOT NULL,
nume VARCHAR(20) NOT NULL ,
prenume VARCHAR(20) NOT NULL,
telefon VARCHAR(20),
email VARCHAR(20),
adresa VARCHAR(100),
CNP VARCHAR(20) NOT NULL,
PRIMARY KEY (id_student),
CONSTRAINT fk_StudFac FOREIGN KEY (id_facultate)
REFERENCES facultate(id_facultate),
CONSTRAINT fk_StudGrup FOREIGN KEY (id_grupa)
REFERENCES grupa(id_grupa),
CONSTRAINT fk_StudCam FOREIGN KEY (id_camera)
REFERENCES camera(id_camera),
CONSTRAINT fk_StudProm FOREIGN KEY (id_promotie)
REFERENCES promotie(id_promotie),
CONSTRAINT fk_StudFormInv FOREIGN KEY (id_forma_invatamant)
REFERENCES forma_invatamant(id_forma_invatamant),
CONSTRAINT fk_StudFormFin FOREIGN KEY (id_forma_finantare)
REFERENCES forma_finantare(id_forma_finantare),
CONSTRAINT fk_StudProg FOREIGN KEY (id_program_studii)
REFERENCES program_studii(id_program_studii));

CREATE TABLE participa


(

id_participa int NOT NULL,


id_student int NOT NULL,
id_curs int NOT NULL,
PRIMARY KEY (id_participa),
CONSTRAINT fk_PartStud FOREIGN KEY (id_student)
REFERENCES student(id_student),
CONSTRAINT fk_PartCurs FOREIGN KEY (id_curs)
REFERENCES curs(id_curs));
CREATE TABLE nota

id_nota int NOT NULL,


id_student int NOT NULL,
id_examen int NOT NULL,
valoare Varchar(10) NOT NULL,
PRIMARY KEY (id_nota),
CONSTRAINT fk_NotaStud FOREIGN KEY (id_student)

REFERENCES student(id_student),
CONSTRAINT fk_NotaExm FOREIGN KEY (id_examen)
REFERENCES examen(id_examen));

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