Skip to content

Instantly share code, notes, and snippets.

@andrelramos
Last active August 23, 2017 13:56
Show Gist options
  • Save andrelramos/5a06d10374079ad04cda0d797a6e7655 to your computer and use it in GitHub Desktop.
Save andrelramos/5a06d10374079ad04cda0d797a6e7655 to your computer and use it in GitHub Desktop.
banco-universidade.sql
CREATE TABLE Professores (
matricula int unique,
nome varchar(300) unique not null,
rg int unique not null,
sexo char not null check (sexo in ('m', 'f')),
idade int check (idade >= 21 and idade <= 80),
titulacao varchar(11) check (titulacao in ('graducado', 'especialista', 'mestre', 'doutor')),
categoria varchar(11) check (categoria in ('auxiliar', 'assistente', 'adjunto', 'titular')),
nroTurmas int check (nroTurmas >= 0),
constraint pk_matricula_professor primary key (matricula)
);
create table Cursos (
codigo int unique,
nome varchar(300) not null unique,
duracao int check(duracao >=4 and duracao <=12),
coordenador int not null,
constraint pk_curso primary key (codigo),
constraint fk_coordenador foreign key (coordenador) references Professores(matricula) on delete cascade on update cascade
);
create table Alunos (
matricula int,
nome varchar(300) not null,
rg int not null unique,
sexo char not null check (sexo in ('m', 'f')),
idade int check (idade >= 17 and idade <= 90),
curso int not null,
constraint pk_matricula_aluno primary key (matricula),
constraint fk_curso foreign key (curso) references Cursos(codigo)
);
create table Disciplinas (
codigo int,
nome varchar(65) not null,
creditos int check (creditos >= 2 and creditos <= 8),
constraint pk_disciplina primary key (codigo)
);
create table Curriculos(
curso int,
disciplina int,
fase int check(fase >= 1 and fase <= 12),
constraint pk_curriculo primary key (curso, disciplina),
constraint fk_curso foreign key (curso) references Cursos(codigo),
constraint fk_disciplina foreign key (disciplina) references Disciplinas(codigo)
);
create table Turmas (
codigo int,
disciplina int,
professor int not null,
vagas int check(vagas > 0),
constraint pk_turma primary key (codigo, disciplina),
constraint fk_disciplina_turma foreign key (disciplina) references Disciplinas(codigo),
constraint fk_professor_turma foreign key (professor) references Professores(matricula)
);
create table Matriculas (
aluno int,
disciplina int,
turma int,
constraint pk_matricula primary key (turma, aluno, disciplina),
constraint fk_aluno_matricula foreign key (aluno) references Alunos(matricula) on update cascade on delete cascade
);
CREATE SEQUENCE cod_prof;
INSERT INTO Professores VALUES (nextval('cod_prof'), 'Erika', 1111111, 'f', 22, 'mestre', 'titular', 5);
INSERT INTO Professores VALUES (nextval('cod_prof'), 'Godinho', 1111112, 'm', 32, 'mestre', 'titular', 1);
INSERT INTO Professores VALUES (nextval('cod_prof'), 'Andrea', 1111113, 'f', 52, 'mestre', 'titular', 2);
INSERT INTO Professores VALUES (nextval('cod_prof'), 'Wolley', 1111114, 'm', 25, 'mestre', 'titular', 3);
INSERT INTO Professores VALUES (nextval('cod_prof'), 'Patricia', 1111115, 'f', 36, 'mestre', 'titular', 4);
CREATE SEQUENCE cod_curso;
INSERT INTO Cursos VALUES (nextval('cod_curso'), 'SI', 8, (SELECT matricula FROM Professores WHERE rg = 1111111));
INSERT INTO Cursos VALUES (nextval('cod_curso'), 'Análise e Desenvolvimento de Sistemas', 4, (SELECT matricula FROM Professores WHERE rg = 1111112));
INSERT INTO Cursos VALUES (nextval('cod_curso'), 'Redes de Computadores', 8, (SELECT matricula FROM Professores WHERE rg = 1111113));
INSERT INTO Cursos VALUES (nextval('cod_curso'), 'Ciência da Computação', 8, (SELECT matricula FROM Professores WHERE rg = 1111114));
INSERT INTO Cursos VALUES (nextval('cod_curso'), 'Gestão de TI', 8, (SELECT matricula FROM Professores WHERE rg = 1111115));
CREATE SEQUENCE cod_aluno;
INSERT INTO Alunos VALUES (nextval('cod_aluno'), 'André', 111111, 'm', 19, (SELECT codigo FROM cursos WHERE nome = 'SI'));
INSERT INTO Alunos VALUES (nextval('cod_aluno'), 'João', 111112, 'm', 19, (SELECT codigo FROM cursos WHERE nome = 'SI'));
INSERT INTO Alunos VALUES (nextval('cod_aluno'), 'Tarcisio', 111113, 'm', 19, (SELECT codigo FROM cursos WHERE nome = 'SI'));
INSERT INTO Alunos VALUES (nextval('cod_aluno'), 'Allan', 111114, 'm', 19, (SELECT codigo FROM cursos WHERE nome = 'SI'));
INSERT INTO Alunos VALUES (nextval('cod_aluno'), 'Augusto', 111115, 'm', 19, (SELECT codigo FROM cursos WHERE nome = 'SI'));
CREATE SEQUENCE cod_disc;
INSERT INTO Disciplinas VALUES (nextval('cod_disc'), 'Banco de dados', 4);
INSERT INTO Disciplinas VALUES (nextval('cod_disc'), 'Complexidade', 4);
INSERT INTO Disciplinas VALUES (nextval('cod_disc'), 'Física', 4);
INSERT INTO Disciplinas VALUES (nextval('cod_disc'), 'Segurança', 4);
INSERT INTO Disciplinas VALUES (nextval('cod_disc'), 'Redes', 4);
INSERT INTO Curriculos VALUES ((SELECT codigo FROM Cursos WHERE nome = 'SI'), (SELECT codigo FROM Disciplinas WHERE nome = 'Banco de dados'), 1);
INSERT INTO Curriculos VALUES ((SELECT codigo FROM Cursos WHERE nome = 'Análise e Desenvolvimento de Sistemas'), (SELECT codigo FROM Disciplinas WHERE nome = 'Complexidade'), 1);
INSERT INTO Curriculos VALUES ((SELECT codigo FROM Cursos WHERE nome = 'SI'), (SELECT codigo FROM Disciplinas WHERE nome = 'Física'), 1);
INSERT INTO Curriculos VALUES ((SELECT codigo FROM Cursos WHERE nome = 'Análise e Desenvolvimento de Sistemas'), (SELECT codigo FROM Disciplinas WHERE nome = 'Segurança'), 1);
INSERT INTO Curriculos VALUES ((SELECT codigo FROM Cursos WHERE nome = 'SI'), (SELECT codigo FROM Disciplinas WHERE nome = 'Redes'), 1);
CREATE SEQUENCE cod_turma;
INSERT INTO Turmas VALUES (nextval('cod_turma'), (SELECT codigo FROM Disciplinas WHERE nome = 'Banco de dados'), (SELECT matricula FROM Professores WHERE rg = 1111111), 10);
INSERT INTO Turmas VALUES (nextval('cod_turma'), (SELECT codigo FROM Disciplinas WHERE nome = 'Física'), (SELECT matricula FROM Professores WHERE rg = 1111112), 1);
INSERT INTO Turmas VALUES (nextval('cod_turma'), (SELECT codigo FROM Disciplinas WHERE nome = 'Segurança'), (SELECT matricula FROM Professores WHERE rg = 1111113), 2);
INSERT INTO Turmas VALUES (nextval('cod_turma'), (SELECT codigo FROM Disciplinas WHERE nome = 'Redes'), (SELECT matricula FROM Professores WHERE rg = 1111114), 5);
INSERT INTO Turmas VALUES (nextval('cod_turma'), (SELECT codigo FROM Disciplinas WHERE nome = 'Complexidade'), (SELECT matricula FROM Professores WHERE rg = 1111115), 40);
INSERT INTO Matriculas VALUES ((SELECT matricula FROM Alunos WHERE rg = 111111), (SELECT codigo FROM Disciplinas WHERE nome = 'Banco de dados'), (SELECT codigo FROM Turmas WHERE disciplina = (SELECT codigo FROM Disciplinas WHERE nome = 'Banco de dados')));
INSERT INTO Matriculas VALUES ((SELECT matricula FROM Alunos WHERE rg = 111111), (SELECT codigo FROM Disciplinas WHERE nome = 'Complexidade'), (SELECT codigo FROM Turmas WHERE disciplina = (SELECT codigo FROM Disciplinas WHERE nome = 'Complexidade')));
INSERT INTO Matriculas VALUES ((SELECT matricula FROM Alunos WHERE rg = 111111), (SELECT codigo FROM Disciplinas WHERE nome = 'Física'), (SELECT codigo FROM Turmas WHERE disciplina = (SELECT codigo FROM Disciplinas WHERE nome = 'Física')));
INSERT INTO Matriculas VALUES ((SELECT matricula FROM Alunos WHERE rg = 111111), (SELECT codigo FROM Disciplinas WHERE nome = 'Segurança'), (SELECT codigo FROM Turmas WHERE disciplina = (SELECT codigo FROM Disciplinas WHERE nome = 'Segurança')));
INSERT INTO Matriculas VALUES ((SELECT matricula FROM Alunos WHERE rg = 111111), (SELECT codigo FROM Disciplinas WHERE nome = 'Redes'), (SELECT codigo FROM Turmas WHERE disciplina = (SELECT codigo FROM Disciplinas WHERE nome = 'Redes')));
CREATE TABLE Fornecedor(
codigo int unique,
razao_social varchar(300),
telefone numeric(11)
);
CREATE TABLE Categoria(
codigo int unique,
nome varchar(300)
);
CREATE TABLE Produtos(
codigo int unique,
nome varchar(300),
descricao varchar(600),
cod_fornecedor int,
cod_categoria int,
constraint fk_fornecedor foreign key (cod_fornecedor) references Fornecedor(codigo),
constraint fk_categoria foreign key (cod_categoria) references Categoria(codigo)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment