Estudante
Professor (numprof, profnome, profrua, profcidade) Aluno (numaluno, alunome, alurua, alucidade)
Disciplina (coddisc, nomedisciplina, nomecurso, qtdeaulas) Matricula (#numaluno, #coddisc, ano)
ProfDisc (#coddisc, #numprof, ano)
CREATE TABLE professores ( codigo_P INTEGER, nome_P VARCHAR(50), rua VARCHAR(50), cidade VARCHAR(50),
CONSTRAINT PK_PROF PRIMARY KEY (codigo_P)
);
CREATE TABLE alunos ( codigo_A INTEGER, nome_A VARCHAR(50), rua VARCHAR(50), cidade VARCHAR(50),
CONSTRAINT PK_ALUNO PRIMARY KEY (codigo_A)
);
CREATE TABLE disciplinas ( codigo_D INTEGER, nome_D VARCHAR(50), nome_C VARCHAR(50), qtdeaulas INTEGER,
CONSTRAINT PK_DISC PRIMARY KEY (codigo_D)
);
CREATE TABLE matriculas ( codigo_A INTEGER, codigo_D INTEGER, ano INTEGER,
CONSTRAINT PK_MAT PRIMARY KEY (codigo_A, codigo_D),
CONSTRAINT FK_MAT_ALU FOREIGN KEY (codigo_A) REFERENCES alunos (codigo_A),
CONSTRAINT FK_MAT_DISC FOREIGN KEY (codigo_D) REFERENCES disciplinas (codigo_D)
);
CREATE TABLE professor_disciplina ( codigo_D INTEGER, codigo_P INTEGER, ano INTEGER,
CONSTRAINT PK_PROF_DISC PRIMARY KEY (codigo_D, codigo_P),
CONSTRAINT FK_PROF_DISC_DISC FOREIGN KEY (codigo_D) REFERENCES disciplinas (codigo_D), CONSTRAINT FK_PROF_DISC_PROF FOREIGN KEY (codigo_P) REFERENCES professores (codigo_P)
);
Usando os conceitos de visões, indique operações para realizar as seguintes solicitações:
1. Crie uma visão com todas as disciplinas oferecidas neste ano, constando os nomes das disciplinas, nomes e cidades dos professores responsáveis e nomes dos cursos das disciplinas.
CREATE VIEW disciplinas_ano AS SELECT d.nome_D, p.nome_P, p.cidade, d.nome_D FROM disciplinas AS d INNER JOIN professor_disciplina AS pd ON d.codigo_D = pd.codigo_D INNER JOIN professores AS p ON pd.codigo_P = p.codigo_P WHERE pd.ano = EXTRACT(YEAR FROM CURRENT_DATE);
2. A partir da visão criada, mostre todos os nomes dos professores do curso de Sistemas