-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProva.sql
More file actions
79 lines (60 loc) · 2.38 KB
/
Prova.sql
File metadata and controls
79 lines (60 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*Prova*/
create schema prova;
use prova;
create table Aluno(
codAluno int auto_increment not null,
nomeAluno varchar(40),
idade varchar(40),
primary key (codAluno)
);
create table Disciplina(
codDisciplina int auto_increment,
nomeDisc varchar(35),
carga_horaria varchar(60),
primary key (codDisciplina)
);
create table Professor(
codProfessor int auto_increment not null,
nomeProf varchar(35),
titulo varchar(60),
primary key (codProfessor)
);
create table Matricula(
id int auto_increment,
cod_Aluno int,
cod_Disciplina int,
primary key (id),
constraint foreign key(cod_Aluno) references Aluno(codAluno) on delete cascade on update cascade,
constraint foreign key(cod_Disciplina) references Disciplina(codDisciplina) on delete cascade on update cascade
);
create table Ministra(
id int auto_increment,
sala varchar(3),
horario varchar(10),
cod_Professor int,
cod_Disciplina int,
primary key(id),
constraint foreign key(cod_Professor) references Professor(codProfessor) on delete cascade on update cascade,
constraint foreign key(cod_Disciplina) references Disciplina(codDisciplina) on delete cascade on update cascade
);
/*Apresente o comando de criação de um index, considerando o esquema de tabelas apresentado nas instruções gerais desta prova.
O index a ser criado deve otimizar a busca pelas disciplinas com maior carga horária.*/
create index MaiorCarga on Disciplina (carga_horaria desc);
/*Apresente o comando de criação de uma view, considerando o esquema de tabelas apresentado nas instruções gerais desta prova.
A view a ser criada deve conter o nome dos professores e a quantidade de disciplinas que cada um ministra.*/
create view RelacaoProfessorDisciplina as select p.nomeProf AS NomeProfessores, count(codDisciplina) as QntDisciplinas
from Professor p, Disciplina d, ministra m
where p.codProfessor = m.cod_Professor and d.codDisciplina = m.cod_Disciplina group by codDisciplina;
/*Apresente o comando de criação de um trigger, considerando o esquema de tabelas apresentado nas instruções gerais desta prova.
O trigger a ser criado não deve permitir que uma atualização na tabela Professor altere o campo codProfessor para um valor diferente do registrado na tabela.
*/
delimiter $$
CREATE TRIGGER VerificacaoCodProfessor
BEFORE UPDATE
ON Professor
FOR EACH ROW
BEGIN
if (NEW.codProfessor <> OLD.codProfessor) then
SET NEW.codProfessor = OLD.codProfessor;
END IF;
END;$$