Aplicatii Profesionale in Baze de Date Orientate Pe Obiecte

download Aplicatii Profesionale in Baze de Date Orientate Pe Obiecte

of 15

description

Aplicatii Profesionale in Baze de Date Orientate Pe Obiecte

Transcript of Aplicatii Profesionale in Baze de Date Orientate Pe Obiecte

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 atributTipPermite nullObservatii

id_cameraintnucheie primara

id_caminintnucheie straina catre tabelul Camin

numarvarchar(10)nu-

etajvarchar(10)da-

capacitatevarchar(3)nu-

Camin

Nume atributTipPermite nullObservatii

id_caminintnucheie primara

numevarchar(100)nu-

descrierevarchar(100)da-

adresavarchar(150)nu-

numar_telefonvarchar(20)da-

emailvarchar(100)da-

Curs

Nume atributTipPermite nullObservatii

id_cursintnucheie primara

denumirevarchar(100)nu-

descrierevarchar(100)da-

Domeniu

Nume atributTipPermite nullObservatii

id_domeniuintnucheie primara

id_facultateintnucheie straina catre tabelul Facultate

denumirevarchar(100)nu-

descrierevarchar(100)da-

Examen

Nume atributTipPermite nullObservatii

id_examenintnucheie primara

id_sesiuneintnucheie straina catre tabelul Sesiune

id_cursintnucheie straina catre tabelul Curs

data_examenvarchar(10)nu-

sala_examenvarchar(10)da-

Facultate

Nume atributTipPermite nullObservatii

id_facultateintnucheie primara

id_universitateintnucheie straina catre tabelul Universitate

denumirevarchar(100)nu-

descrierevarchar(100)da-

adresavarchar(150)da-

emailvarchar(100)da-

numar_telefonvarchar(20)nu-

pagina_webvarchar(20)da-

Forma_finantare

Nume atributTipPermite nullObservatii

id_forma_finantareintnucheie primara

denumirevarchar(100)nu-

Forma_invatamant

Nume atributTipPermite nullObservatii

id_forma_invatamantintnucheie primara

denumirevarchar(100)nu-

Grupa

Nume atributTipPermite nullObservatii

id_grupaintnucheie primara

numevarchar(100)nu-

Nota

Nume atributTipPermite nullObservatii

id_notaintnucheie primara

id_studentintnucheie straina catre tabelul Student

id_examenintnucheie straina catre tabelul Examen

valoarevarchar(10)nu-

Participa

Nume atributTipPermite nullObservatii

id_participaintnucheie primara

id_studentintnucheie straina catre tabelul Student

id_cursintnucheie straina catre tabelul Curs

Profesor

Nume atributTipPermite nullObservatii

id_profesorintnucheie primara

numevarchar(100)nu-

prenumevarchar(100)nu-

adresavarchar(150)da-

emailvarchar(100)da-

numar_telefonvarchar(20)da-

CNPvarchar(20)nu-

Program_studii

Nume atributTipPermite nullObservatii

id_program studiiintnucheie primara

denumirevarchar(100)nu-

Promotie

Nume atributTipPermite nullObservatii

id_promotieintnucheie primara

anintnu-

descrierevarchar(100)da-

Sesiune

Nume atributTipPermite nullObservatii

id_sesiuneintnucheie primara

denumirevarchar(100)da-

data_inceputvarchar(10)nu-

data_sfarsitvarchar(10)nu-

Student

Nume atributTipPermite nullObservatii

id_studentintnucheie primara

id_facultateintnucheie straina catre tabelul Facultate

id_grupaintnucheie straina catre tabelul Grupa

id_cameraintdacheie straina catre tabelul Camera

id_promotieintnucheie straina catre tabelul Promotie

id_forma_invatamantintnucheie straina catre tabelul Forma_invatamant

id_forma_finantareintnucheie straina catre tabelul Forma_finantare

id_program_studiiintnucheie straina catre tabelul Program_studii

numevarchar(20)nu-

prenumevarchar(20)nu-

telefonvarchar(20)da-

emailvarchar(20)da-

adresavarchar(100)da-

CNPvarchar(20)nu-

Tine_curs

Nume atributTipPermite nullObservatii

id_tine_cursintnucheie primara

id_cursintnucheie straina catre tabelul Curs

id_profesorintnucheie straina catre tabelul Profesor

data_cursvarchar(10)da-

sala_cursvarchar(10)da-

Universitate

Nume atributTipPermite nullObservatii

id_universitateintnucheie primara

denumirevarchar(100)nu-

descrierevarchar(100)da-

adresavarchar(150)nu-

emailvarchar(100)da-

numar_telefonvarchar(20)nu-

pagina_webvarchar(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));