Sunteți pe pagina 1din 5

/*Modelul conceptual al sistemului informatic al universității (Sistem Simplificat)

Entitati : Facultate, Departament, Specializare, Student, Curs, Profesor

Atribute si identificatori :

Facultate ( codfacultate, denumire) identificator codfacultate


Departament ( coddepartament, denumire) identificator coddepartament
Specializare ( codspecializare, denumire) identificator codspecializare
Student ( codstudent, nume, cnp, codjudet, localitate) identificator codstudent
Curs ( codcurs, denumire, tip, nrcredite) identificator codcurs
Profesor ( codprofesor, nume, graddidactic) identificator codprofesor

Asocieri între entități :


Între entitatea Facultate și entitatea Departament există o asociere de tip n:1
Intre entitatea Departament și entitatea Specializare există o asociere de tip n:1
Între entitatea Student și entitatea Specializare există o asociere de tip 1:n cu
atributul specific "anStudiu"
Între entitatea Student și entitatea Curs există o asociere de tip n:n cu
atributele specifice "DataExaminarii", "Nota"
Între entitatea Departament și entitatea Profesor există o asociere de tip n:1
Între entitatea Profesor și entitatea Curs există o asociere de tip n:n
Între entitatea Departament și entitatea Profesor există asocierea "conduce" de
tipul 1:1

Modelul relațional al datelor :

tFacultati ( codFac, denumire ) codFac cheie primară


tDepartamente ( codDep, denumire, codFac, codProf ) codDep cheie primară, codFac
cheie străină, codProf cheie străină
tSpecializari ( codSpec, denumire, codDep) codSpec cheie primară, codDep cheie
străină
tStudenti ( codStud, nume, cnp, codjudet, localitate, anStudiu, codSpec )
codStudent cheie primară, codSpec cheie străină
tCursuri ( codCurs, denumire, tip, nrcredite ) codCurs cheie primară
tNote ( codCurs, codStud, DataExaminarii, Nota) CodCurs + CodStud = cheie primară,
codCurs cheie străină, codStud cheie străină
tProfesori ( codProf, nume, gradDidactic, codDep ) codProf cheie primară, codDep
cheie străină
tCursProfesori ( codCurs, codProf, activitatePredare ) codCurs + codProf = cheie
primară, codCurs cheie străină, codProf cheie străină

*/

--Creare bazei de date dbFacultati


create database dbFacultati

--Activare baza de date dbFacultati


use dbFacultati

--Crearea Schemei "Scoala"


create schema scoala

--Crearea tabelului "tFacultati" in schema "Scoala"

create table scoala.tFacultati


( codFac char(10) primary key, --Constrângerea de tip cheie va primi o denumire
aleasă de sistem
denumire varchar(40) --Denumire acceptă și valori nule
)
--Obs.: nu am atribuit denumire constrangerii primary key

--Stergem tabelul tFacultati


drop table scoala.tFacultati

create table scoala.tFacultati


( codFac char(10) constraint pk_facultate primary key, --Am atribuit denumire cheii
primare
denumire varchar(40) not null --Denumire nu acceptă valori nule
)

--Crearea tabelelor "tDepartamente și tSpecializari" in schema implicita "dbo"


--Apoi vom transfera aceste tabele din schema "dbo" în schema "Scoala"

create table tDepartamente


( codDep char(10) constraint pk_departament primary key,
denumire varchar(40) not null,
codFac char(10) foreign key references scoala.tFacultati(codFac),
codProf char(10)
) --nu am atribuit denumire constrangerii foreign key
drop table tDepartamente

create table tDepartamente


( codDep char(10) constraint pk_departament primary key,
denumire varchar(40) not null,
codFac char(10) not null constraint fk_fac foreign key references
scoala.tFacultati(codFac),
codProf char(10)
)

create table tSpecializari


( codSpec char(10) constraint pk_specializare primary key,
denumire varchar(40) not null,
codDep char(10) not null constraint fk_dep foreign key references
tDepartamente(codDep)
)
--Transferul tabelelor "tDepartamente" si "tSpecializari" din schema "dbo" în
schema "scoala"
alter schema scoala transfer dbo.tDepartamente
alter schema scoala transfer dbo.tSpecializari
--Crearea tabelului "tStudenti"
create table tStudenti
( codStud char(10) constraint pk_student primary key,
nume varchar(40) not null,
cnp char(13),
codJudet char(10) not null,
localitate varchar(40),
anStudiu tinyint,
codSpec char(10) not null constraint fk_spec foreign key references
scoala.tSpecializari(codSpec)
)
/*
Mentiune : Coloanele "CodJudet" si "Localitate" contin informatii redundante
Eliminarea redundanței se poate face creând un tabel denumit tLocalizari ( codLoc,
codJudet, Localitate) cu cheia primară codLoc
CodLoc va deveni cheie străina în tabelul tStudenti
*/
alter schema scoala transfer dbo.tStudenti
create table tCursuri
( codCurs char(10) constraint pk_curs primary key,
denumire varchar(40) not null,
tipCurs char constraint ck_curs check (tipCurs in ('B','O','F')),
nrCredite tinyint
)
create table scoala.tNote
( codCurs char(10) constraint fk_curs foreign key references
scoala.tCursuri(codCurs),
codStud char(10) constraint fk_student foreign key references
scoala.tStudenti(codStud),
dataExaminarii smalldatetime,
nota tinyint,
constraint pk_note primary key (codCurs,codStud)
)
/*
Crearea tabelului tProfesori fara specificarea constrangerilor de tip cheie primara
si straina
*/
create table scoala.tProfesori
( codProf char(10),
Nume varchar(30),
grad char(10),
codDep char(10)
)
create table scoala.tCursProfesori
( codCurs char(10),
codProf char(10),
activitatePredare char
)
-- Modificarea structurii tabelelor
-- 1. Sa se adauge coloana 'adresa' de tip varchar(50) tabelului 'tFacultati'
alter table scoala.tFacultati
add adresa varchar(50) --Nu 'alter column'
-- 2. Sa se impuna constrangerea 'not null' coloanei 'nrCredite' din tabelul
'tCursuri'
alter table scoala.tCursuri
alter column nrCredite tinyint not null
-- 3. Sa se modifice tipul coloanei 'grad' din tabelul 'tProfesori' din char(10) in
char
alter table scoala.tProfesori
alter column grad char
-- 4. Sa se adauge coloanei 'grad' constrangerea de tip validare luind in calcul
semnificatia A (asistent), L (lector), C (conferential), P (profesor)
alter table scoala.tProfesori
add constraint ck_grad check (grad in ('A','L','C','P'))
-- 5 Sa se adauge coloanei 'nota' constrangerea de tip validare 1<=nota nota<=10

alter table scoala.tProfesori


-- 5. Utilizand procedura stocata de sistem SP_rename sa redenumeasca coloana
'grad' in 'gradDidactic'
execute sp_rename 'scoala.tProfesori.grad','gradDidactic','column'
-- Nu functioneaza din cauza constrangerii asociate coloanei 'grad'
-- Stergem constrangerea
alter table scoala.tProfesori
drop constraint ck_grad
-- Apelam procedura stocata sp_rename
execute sp_rename 'scoala.tProfesori.grad','gradDidactic','column'
-- Refacem constrangerea
alter table scoala.tProfesori
add constraint ck_grad check (gradDidactic in ('A','L','C','P'))
-- 6. Sa se adauge tabelului 'tProfesori' constrangerea de tip cheie primara
alter table scoala.tProfesori
add constraint pk_prof primary key (codProf)
-- Nu merge deoarecere coloana 'codProf' permite si valori nule
-- Adaugam constrangerea 'not null' coloanei 'codProf'
alter table scoala.tProfesori
alter column codProf char(10) not null
--Executam comanda din nou
alter table scoala.tProfesori
add constraint pk_prof primary key (codProf)
-- 7. Sa se adauge tabelului 'tProfesori' constrangerea de tip foreign key
alter table scoala.tProfesori
add constraint fk_depProf foreign key (codDep) references
scoala.tDepartamente(codDep)
-- 8. Sa se adauge tabelului 'tCursProfesori' constrangerea de tip primary key
alter table scoala.tCursProfesori
add constraint pk_cursprof primary key (codCurs,codProf)
-- Nu functioneaza deoarece coloanele codCurs si codProf permit valori nule
alter table scoala.tCursProfesori
alter column codCurs char(10) not null
alter table scoala.tCursProfesori
alter column codProf char(10) not null
--Executam comanda din nou
alter table scoala.tCursProfesori
add constraint pk_cursprof primary key (codCurs,codProf)
-- 9. Sa se adauge tabelului 'tCursProfesori' constrangerile de tip foreign key
alter table scoala.tCursProfesori
add constraint fk_cursProf foreign key (codCurs) references
scoala.tCursuri(codCurs)
alter table scoala.tCursProfesori
add constraint fk_prof foreign key (codProf) references scoala.tProfesori(codProf)
-- 10. Sa se adauge cauzele on delete cascade si on update cascade constrangerii
fk_student de tip foreign key corespunzatoare tabelului tNote
-- Stergem constrangerea
alter table scoala.tNote
drop constraint fk_student
-- Refacem constrangerea cu adaugarea clauzelor 'on delete cascade' si 'on update
cascade'
alter table scoala.tNote
add constraint fk_student foreign key (codStud) references
scoala.tStudenti(codStud) on delete cascade on update cascade
-- 11. Sa se adauge tabelului 'tStudenti' coloana calculata, data nasterii, prin
extragerea ei din CNP
alter table scoala.tStudenti
add dataNasterii as convert (smalldatetime, substring (CNP,2,6), 12) --12 inseamna
stilul ISO (aallzz) fara separatori
-- 12. Sa se adauge tabelului 'tStudenti' constrangerile de tip default
corespunzatoarea coloanei codJudet 'ag' si localitate 'Pitesti'
alter table scoala.tStudenti
add constraint df_judet default 'AG' for codJudet
alter table scoala.tStudenti
add constraint df_loc default 'Pitesti' for localitate
-- 13. Sa se modifice denumirea coloanei 'codProf' din tabelul 'tDepartamente' in
'codDirectorDep'
execute sp_rename 'scoala.tDepartamente.codProf','codDirectorDep','column'
-- 14. Sa se adauge constrangerea de tip foreign key pentru coloana codDirectorDep
alter table scoala.tDepartamente
add constraint fk_directordep foreign key (codDirectorDep) references
scoala.tProfesori(codProf)
-- 15. Sa se adauge constrangerea de tip unic tabelului 'tStudenti' corespunzatoare
coloanei 'CNP'
alter table scoala.tStudenti
add constraint uq_cnp unique (cnp)

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