Sunteți pe pagina 1din 2

InfoAcademy

Paul-Gabriel FRATILA
.rev. 8.0.

ENUNT PROIECT FINAL SQL/MySQL

Ati fost angajat(a) de o universitate pentru a reorganiza baza de date cu studentii, catalogul scolii.

Pana acum, evidenta a fost tinuta pe hartie, pentru fiecare elev fiind notate numele si prenumele elevului, materia,
tipul examenului, data, ora si nota. Se doreste ca pe viitor evidenta sa fie informatizata si de aceea toate datele deja
existente trebuie introduse intr-o baza de date MySQL, care sa aiba o structura cat mai bine aleasa. In plus, odata
informatiile introduse, administratia doreste cateva prime rapoarte de activitate pe baza lor.

Vi se furnizeaza urmatoarele fisiere:


- informatiile colectate pe hartie au fost introduse in format electronic in fisierul de tip .txt anexat;
- fisierul aspecte.sql in cadrul caruia aveti cateva recomandari de care sa tineti seama;

Cerinte:
1. Se creeaza baza de date proiect. In cadrul sau se defineste procedura tabele() care efectueaza urmatoarele
operatiuni:
• sterge si recreeaza toate tabelele (procedura poate fi rulata ori de cate ori ati gresit ceva si vreti sa goliti tabelele):
o Studenti - cu coloane pentru id, nume, prenume ;
o Materii - cu coloane pentru id, materia;
o Tip_examen - cu coloane pentru id, tip;
o Catalog - cu coloane pentru id, data_ora, id student, id mteria, id tip, nota
si chei externe pentru id student, id materia, id tip;
o Tabela_veche in care vor fi importate informatiile din fisierul.txt, inainte de a fi distribute in tabelele
finale. Structura tabelei o alegeti pe baza continutului fisierului astfel incat importul sa fie corect. In plus
va mai avea o coloana suplimentara: fulldate de tip datetime.
• creeaza indecsi:
o fiecare tabela, cu exceptia celei vechi, vor avea cate o coloana id de tip auto_increment;
o indecsi unici pentru combinatia (nume, prenume) in tabela Studenti;

Vor fi alese tipurile de date cele mai potrivite pentru coloane. Evitati nume de coloane identice in mai multe tabele.

Procedura tabele va putea fi rulata ulterior ori de cate ori este nevoie de-a lungul dezvoltarii proiectului
pentru a reinitializa rapid baza de date.

2. Se creaza o functie care va primi doi parametri de tip text si va formata data si ora din formatul regasit in fisierul .txt in
format corect MySQL;

3. Se creaza un trigger before insert, pe Tabela_Veche, care, la fiecare rand inserat in tabela veche va apela functia
de formatare a datei definita anterior, cu parametri data si ora care sunt introdusi in Tabela_Veche si va popula
coloana fulldate din aceeasi tabela;

4. Se importa datele din fisierul .txt in Tabela_Veche. Coloana fulldate va fi completata automat de trigger;

. .
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include,
fara a afecta dreptul de proprietate intelectuala detinut de InfoAcademy.
InfoAcademy
Paul-Gabriel FRATILA
.rev. 8.0.

5. Se distribuie informatia din Tabela_Veche in tabelele noi, deja create, astfel incat sa se mentina corelatia
dintre informatii:
• lista de nume unice de elevi din Tabela_Veche se introduce in Studenti;
• lista de materii din Tabela_Veche se introduce in Materii;
• lista cu tipul examenului din Tabela_Veche se introduce in Tip_examen;
• se populeaza tabela Catalog pe baza Tabelei_Vechi, Studenti, Materii, Tip_examen, prin „inlocuirea"
numelor de studenti, materii, tip cu id-urile corespunzatoare si a celorlalte informatii pentru data si nota.
In acest fel, orice raport viitor va putea fi obtinut prin joinuri(subinterogari) intre doua sau mai multe
tabele noi.

6. Se creeaza o procedura rapoarte() care produce urmatoarele rapoarte:

-- care sunt studentii care au obtinut media 10 la toate materiile - 3 tabele;

-- care sunt studentii care au medii peste 9 la examen(fara practica) la mate - 4 tabele;

-- cate note mai mici sau egale cu 5 a obtinut studentul Hawkes Colin - 2 tabele;

-- studentii si media pentru cei cu cel putin 5 note la geogra - 3 tabele cu subinterogare;

-- care sunt studentii care nu au nicio nota mai mare de 5 la romana - 3 tabele cu subinterogari;

-- care sunt studentii care au promovat in 10 Apr 2017 (peste 5) - 2 tabele;

7. Optional puteti crea un view, care sa se manifeste ca Tabela_Veche. Optional, puteti utiliza un cursor pentru
popularea tabelelor.

Pentru orice problema in care solicitati informatii, daca este nevoie anexati si scriptul.

Succes!

. .
Studentul poate utiliza prezentul material si informatiile continute in el exclusiv in scopul asimilarii cunostintelor pe care le include,
fara a afecta dreptul de proprietate intelectuala detinut de InfoAcademy.

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