Exercício 11.20 - (Universidade)
Página 1 de 1
Exercício 11.20 - (Universidade)
--Crie um modelo de dados que permita armazenar
--as seguintes informações:
-- -> Uma universidade tem diversos alunos e professores,
-- todos identificados por um número de matrícula.
-- -> A universidade também presta diversos cursos, cada
-- um deles chefiados por um professor.
-- -> Cada curso é composto de várias disciplinas, que são
-- ministradas a vários alunos por um professor. Cada
-- disciplina tem uma ementa e uma carga horária
-- -> A universidade também dispõe de diversas salas
-- identificadas por um número, que podem ser utilizadas
-- para as disciplinas. Cada disciplina é dada em uma ou
-- mais salas (nos casos de disciplinas com aulas de
-- laboratório)
CREATE TABLE professor (
codigo_professor SERIAL NOT NULL PRIMARY KEY,
matricula_professor NUMERIC(10) NOT NULL,
nome_professor VARCHAR(100) NOT NULL
);
CREATE TABLE aluno (
matricula_aluno NUMERIC(10) PRIMARY KEY,
nome_aluno VARCHAR(100) NOT NULL
);
CREATE TABLE curso (
codigo_curso SERIAL NOT NULL PRIMARY KEY,
nome_curso VARCHAR(100) NOT NULL
codigo_professor_chefe INTEGER
REFERENCES professor(codigo_professor)
);
CREATE TABLE disciplina (
codigo_disciplina SERIAL NOT NULL PRIMARY KEY,
nome_disciplina VARCHAR(100) NOT NULL,
ementa TEXT,
carga_horaria_disciplina NUMERIC(4) NOT NULL,
codigo_professor INTEGER NOT NULL
REFERENCES professor(codigo_professor)
);
CREATE TABLE sala (
codigo_sala SERIAL NOT NULL PRIMARY KEY,
numero_sala VARCHAR(100) NOT NULL
);
CREATE TABLE curso_disciplina (
codigo_curso INTEGER NOT NULL,
codigo_disciplina INTEGER NOT NULL,
PRIMARY KEY (codigo_curso, codigo_disciplina),
FOREIGN KEY (codigo_curso) REFERENCES curso(codigo_curso),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina)
);
CREATE TABLE aluno_disciplina (
matricula_aluno NUMERIC(10) NOT NULL,
codigo_disciplina INTEGER NOT NULL,
PRIMARY KEY (matricula_aluno, codigo_disciplina),
FOREIGN KEY (matricula_aluno) REFERENCES aluno(matricula_aluno),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina)
);
CREATE TABLE disciplina_sala (
codigo_disciplina INTEGER NOT NULL,
codigo_sala INTEGER NOT NULL,
PRIMARY KEY (codigo_disciplina, codigo_sala),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina),
FOREIGN KEY (codigo_sala) REFERENCES sala(codigo_sala)
);
--as seguintes informações:
-- -> Uma universidade tem diversos alunos e professores,
-- todos identificados por um número de matrícula.
-- -> A universidade também presta diversos cursos, cada
-- um deles chefiados por um professor.
-- -> Cada curso é composto de várias disciplinas, que são
-- ministradas a vários alunos por um professor. Cada
-- disciplina tem uma ementa e uma carga horária
-- -> A universidade também dispõe de diversas salas
-- identificadas por um número, que podem ser utilizadas
-- para as disciplinas. Cada disciplina é dada em uma ou
-- mais salas (nos casos de disciplinas com aulas de
-- laboratório)
CREATE TABLE professor (
codigo_professor SERIAL NOT NULL PRIMARY KEY,
matricula_professor NUMERIC(10) NOT NULL,
nome_professor VARCHAR(100) NOT NULL
);
CREATE TABLE aluno (
matricula_aluno NUMERIC(10) PRIMARY KEY,
nome_aluno VARCHAR(100) NOT NULL
);
CREATE TABLE curso (
codigo_curso SERIAL NOT NULL PRIMARY KEY,
nome_curso VARCHAR(100) NOT NULL
codigo_professor_chefe INTEGER
REFERENCES professor(codigo_professor)
);
CREATE TABLE disciplina (
codigo_disciplina SERIAL NOT NULL PRIMARY KEY,
nome_disciplina VARCHAR(100) NOT NULL,
ementa TEXT,
carga_horaria_disciplina NUMERIC(4) NOT NULL,
codigo_professor INTEGER NOT NULL
REFERENCES professor(codigo_professor)
);
CREATE TABLE sala (
codigo_sala SERIAL NOT NULL PRIMARY KEY,
numero_sala VARCHAR(100) NOT NULL
);
CREATE TABLE curso_disciplina (
codigo_curso INTEGER NOT NULL,
codigo_disciplina INTEGER NOT NULL,
PRIMARY KEY (codigo_curso, codigo_disciplina),
FOREIGN KEY (codigo_curso) REFERENCES curso(codigo_curso),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina)
);
CREATE TABLE aluno_disciplina (
matricula_aluno NUMERIC(10) NOT NULL,
codigo_disciplina INTEGER NOT NULL,
PRIMARY KEY (matricula_aluno, codigo_disciplina),
FOREIGN KEY (matricula_aluno) REFERENCES aluno(matricula_aluno),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina)
);
CREATE TABLE disciplina_sala (
codigo_disciplina INTEGER NOT NULL,
codigo_sala INTEGER NOT NULL,
PRIMARY KEY (codigo_disciplina, codigo_sala),
FOREIGN KEY (codigo_disciplina)
REFERENCES disciplina(codigo_disciplina),
FOREIGN KEY (codigo_sala) REFERENCES sala(codigo_sala)
);
Tópicos semelhantes
» Exercício adicional 29/07 - Universidade 2
» Exercício adicional 29/07 - Universidade 2
» Exercício 3.13.5 - MaiorMenor10Numeros
» Exercício 11.17
» Exercício 3.10.3 - 1 a 100 (while)
» Exercício adicional 29/07 - Universidade 2
» Exercício 3.13.5 - MaiorMenor10Numeros
» Exercício 11.17
» Exercício 3.10.3 - 1 a 100 (while)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos