SCRIPT SQL - Universidade (Com Comentários)
create database Universidade;
use Universidade;
create table departamento(
id_departamento int auto_increment not null,
nome_departamento varchar(100) not null,
primary key(id_departamento)
);
create table turma(
id_turma int auto_increment not null,
nome_turma varchar(50) not null,
id_departamento int,
primary key(id_turma),
foreign key(id_departamento) references departamento(id_departamento)
);
create table estudante(
id_estudante int auto_increment not null,
nome varchar(100) not null,
idade int,
sexo varchar(10),
ano_ingresso int,
especialidade varchar(100),
regime varchar(50),
id_turma int,
primary key(id_estudante),
foreign key(id_turma) references turma(id_turma)
);
create table docente(
id_docente int auto_increment not null,
nome_docente varchar(100) not null,
id_departamento int,
primary key(id_docente),
foreign key(id_departamento) references departamento(id_departamento)
);
create table disciplina(
id_disciplina int auto_increment not null,
nome_disciplina varchar(100),
especialidade varchar(100),
ano int,
primary key(id_disciplina)
);
create table lecciona(
id_docente int,
id_turma int,
id_disciplina int,
carga_horaria int,
primary key(id_docente, id_turma, id_disciplina),
foreign key(id_docente) references docente(id_docente),
foreign key(id_turma) references turma(id_turma),
foreign key(id_disciplina) references disciplina(id_disciplina)
);
create table avaliacao(
id_estudante int,
id_disciplina int,
nota int,
primary key(id_estudante, id_disciplina),
foreign key(id_estudante) references estudante(id_estudante),
foreign key(id_disciplina) references disciplina(id_disciplina)
);
-- Consultas
-- (a) Grupos e Estudantes
SELECT turma.nome_turma AS grupo, [Link] AS estudante
FROM turma, estudante
WHERE turma.id_turma = estudante.id_turma;
-- (b) Professores que leccionam no Grupo 1
SELECT DISTINCT docente.nome_docente
FROM docente, lecciona, turma
WHERE docente.id_docente = lecciona.id_docente
AND turma.id_turma = lecciona.id_turma
AND turma.id_turma = 1
ORDER BY docente.nome_docente;
-- (c) Disciplinas por especialidade e ano
SELECT especialidade, ano, nome_disciplina
FROM disciplina
ORDER BY especialidade, ano, nome_disciplina;
-- (d) Professores e grupos organizados por departamento
SELECT
departamento.nome_departamento,
docente.nome_docente,
turma.nome_turma
FROM departamento, docente, turma, lecciona
WHERE docente.id_departamento = departamento.id_departamento
AND docente.id_docente = lecciona.id_docente
AND turma.id_turma = lecciona.id_turma
ORDER BY departamento.nome_departamento,
docente.nome_docente,
turma.nome_turma;