Você está na página 1de 16

UNIVERSIDADE FEDERAL DO PARÁ

INSTITUTO DE CIÊNCIAS EXATAS E NATURAIS

FACULDADE DE COMPUTAÇÃO

DISCIPLINA: BANCO DE DADOS

PROFESSORA: FABÍOLA P. OLIVEIRA ARAÚJO

ALUNOS: Thiago José Junior Marinho

Lenilson Correa Santos

3ª AVALIAÇÃO

CURSINHO PRÉ-VESTIBULAR

BELÉM/PA
2022
Sumário

1. Introdução
2. Detalhamento das regras de negócio
2.1 Requisitos Funcionais
2.2 Regras de Negócio
3. Modelo Conceitual(MER);
3.1 Descrição das Entidades
4. Modelo Lógico:
4.1 Descrição das Tabelas
5. Normalização
6. Script em SQL.
1. Introdução
Nosso projeto tem por objetivo demonstrar um sistema de um cursinho
pré-vestibular, nele serão armazenados os dados dos alunos e professores, além
dos gerenciamentos de matrículas, mensalidades, turmas, disciplinas e etc.

2. Detalhamento das regras de negócio


2.1 Requisitos Funcionais

CÓDIGO REQUISITO

RF01 Realizar Cadastro: O sistema deve ser capaz de cadastrar os alunos


e matriculá-los em diversas turmas;

RF02 Gerar Mensalidade dos Alunos: O sistema deverá gerar as


mensalidades no momento da matrícula do aluno;

RF03 Armazena Dados: O sistema armazena os dados de alunos


(Matricula), professores (Salário), das turmas e os valores da
mensalidade de cada uma;

RF04 Acompanhar Desempenho dos Alunos: O sistema deve permitir o


acompanhamento do desempenho dos alunos regularmente.

RF05 Agendar Simulados: Deve permitir o agendamento dos simulados.

RF06 Gerar Pagamento dos Professores: O sistema deve gerar o


pagamento dos professores e exibir os detalhes salariais.

RF07 Abertura de Turmas: O sistema deve permitir a abertura de novas


turmas.

RF08 Visualização das Turmas pelos professores: O sistema deve


permitir que os professores visualizem quais turmas e em quais
horarios darão aulas.

RF09 Cancelamento de Matrícula: O aluno pode solicitar o cancelamento


da matrícula a qualquer momento

RF10 Pesquisar simulados: O sistema deve permitir a pesquisa de


simulados que já foram feitos.
2.2 Regras de Negócio

CÓDIGO REGRA DE NEGÓCIO

RN01 O sistema permite que um aluno tenha matrículas em diversas turmas,


desde que não haja conflito no horário das turmas;

RN02 Apenas professores podem agendar simulados.

RN03 Não pode ser agendado mais de um simulado por dia.

RN04 Mensalidades pagas em atraso, devem ter 1% de acréscimo por dias


de atraso.

RN05 Uma nova turma deve ser aberta quando o número de alunos para
serem matriculados na mesma, for maior ou igual a 40.

RN06 O aluno ao cancelar uma matrícula deverá pagar uma multa


equivalente a uma mensalidade

3. Modelo Conceitual(MER);
3.1. Descrição das Entidades:
● Entidade: Aluno
É um dos atores do sistema, poderá realizar matrícula na turma
que preferir, além de ter acesso aos horários e vagas disponíveis em
cada turma. Possui o atributo id_aluno como identificador, além dos
atributos cpf, nome, email, data_nascimento e o atributo composto
endereço (rua_numero, cidade, cep, bairro).

● Entidade: Professor
Outro ator do sistema, que pode visualizar em quais turmas dará
aula, e tem acesso para acompanhar o pagamento do seu salário.
Possui o atributo chave id_professor. Para fazer o cálculo do salário é
necessário utilizar o atributo valor_hora.

● Entidade: Salário
Usada para guardar informações sobre os pagamentos dos
professores.

● Entidade: Disciplina
Será usada para guardar as informações das disciplinas
disponíveis e suas cargas horárias.

● Entidade : Turma
Uma das entidades mais importantes do banco, nela será
guardada toda as informações das turmas, como as datas que irão
iniciar e acabar, o número de vagas disponíveis para matrícula, turnos e
horários de cada.
● Entidade : Matrícula
Entidade para guardar informações das matrículas dos alunos.

● Entidade: Mensalidade
Informações sobre os pagamentos das mensalidades, as
mensalidades são geradas no momento da matrícula, assim o aluno
pode pagar tudo de uma vez ou ir pagando mensalmente.

● Entidade : Simulado
Informações sobre qual assunto será o simulado.

4. Modelo Lógico:
4.1 Descrição das Tabelas:
● Aluno: Possui os atributos Id_Aluno, CPF, Nome, Email, Fone,
Data_Nascimento, Rua_Numero, Cidade, Bairro e CEP, sendo
Id_aluno a chave primária;
● Matricula: Possui os atributos Id_matricula e Data_Matricula,
recebendo a chave primária da tabela Aluno como chave
estrangeira para se comunicar com a tabela;
● Mensalidade: Possui os atributos Id_Mensalidade,
Data_Vencimento e Valor, tendo o atributo Id_Mensalidade como
chave primária e recebendo a chave primária da tabela Matricula
como chave estrangeira;
● Turma: Possui os atributos Id_Turma, Data_Inicio, Data_Termino,
Vagas, Turno e Horario, sendo Id_Turma a chave primária;
● Turma_possui_Matriculas: Tabela gerada por meio de um
relacionamento do tipo N:N entre as tabelas Matricula e Turma. o
seu conjunto de chaves primárias e estrangeiras vem das chaves
primárias das tabelas Matricula e Turma;
● Professor: Possui os atributos Id_Professor, Nome_Prof,
E-mail_Prof, Valor_Hora e Diploma, sendo Id_Professor sua chave
primária;
● Salário: Possui os atributos Id_Salario e Valor_Salario, e herdando
a chave primária da tabela Professor por ser uma entidade fraca
em relação a esta;
● Disciplina: Possui os atributos Id_Disciplina, Nome_Disc e
Carga_Horaria, sendo Id_Disciplina sua chave primária;
● Simulado: Possui os atributos Id_Simulado e Descricao, sendo
Id_Simulado sua chave primária;
● Compoe: Tabela gerada por meio de um relacionamento N-ário
entre as tabelas Professor, Disciplina e Turma, tenho como chave
primária o conjunto de chaves estrangeiras das tabelas em
questão;
● Avalia: Outra tabela gerada por relacionamento N-ário entre
Disciplina, Simulado e Matricula; recebe as chaves primárias de
Disciplina, Simulado e Matricula para compor sua chave primária e
estrangeira e ainda contém os atributos Data_Simulado e
Nota_Simulado.

5. Normalização

● 1ª Forma Normal
As tabelas já se encontram na primeira forma normal. Não há atributos
multivalorados e nem compostos;

● 2ª Forma Normal
Não há dependências funcionais parciais entre as tabelas, portanto a 2ª
Forma Normal está satisfeita;

● 3ª Forma Normal
Assim como na forma anterior, não foi encontrado dependência transitiva
entre os atributos;

● 4ª Forma Normal
A Partir da Primeira forma normal, também não foram encontrados
dependências multivaloradas do modelo;

● 5ª Forma Normal
Como a 4ª forma normal está dentro dos requisitos, a 5ª forma normal
também é satisfeita.
6. Script em SQL.

CREATE TABLE "Aluno" (


"Id_Aluno" NUMBER(10, 0) NOT NULL,
"CPF" NUMBER(11, 0),
"Nome" VARCHAR2(80),
"Email" VARCHAR2(80),
"Fone" NUMBER(11, 0),
"Data_Nascimento" VARCHAR2(10),
"Rua_Numero" VARCHAR2(30),
"Cidade" VARCHAR2(30),
"Bairro" VARCHAR2(30),
"CEP" NUMBER(8, 0),
constraint ALUNO_PK PRIMARY KEY ("Id_Aluno"));

CREATE TABLE "Matricula" (


"Id_Matricula" NUMBER(10, 0) NOT NULL,
"Id_Aluno" NUMBER(10) NOT NULL,
"Data_Matricula" VARCHAR2(10) NOT NULL,
constraint MATRICULA_PK PRIMARY KEY
("Id_Matricula"));

CREATE TABLE "Mensalidade" (


"Id_Mensalidade" NUMBER(10, 0) NOT NULL,
"Id_Matricula" NUMBER(10, 0) NOT NULL,
"Data_Vencimento" VARCHAR2(10),
"Valor" FLOAT(10),
constraint MENSALIDADE_PK PRIMARY KEY
("Id_Mensalidade"));

CREATE TABLE "Turma" (


"Id_Turma" NUMBER(10, 0) NOT NULL,
"Data_Inicio" DATE NOT NULL,
"Data_Termino" DATE NOT NULL,
"Vagas" NUMBER(2, 0) NOT NULL,
"Turno" VARCHAR2(5) NOT NULL,
"Horario" NUMBER NOT NULL,
constraint TURMA_PK PRIMARY KEY ("Id_Turma"));

CREATE TABLE "Turma_Possui_Matriculas" (


"Id_Turma" NUMBER(10, 0) NOT NULL,
"Id_Matricula" NUMBER(10, 0) NOT NULL);

CREATE TABLE "Professor" (


"Id_Professor" NUMBER(10, 0) NOT NULL,
"Nome_Prof" VARCHAR2(30) NOT NULL,
"E-mail_Prof" VARCHAR2(30) NOT NULL,
"Valor_Hora" FLOAT(10) NOT NULL,
"Diploma" VARCHAR2(30) NOT NULL,
constraint PROFESSOR_PK PRIMARY KEY
("Id_Professor"));

CREATE TABLE "Compoe" (


"Id_Professor" NUMBER(10, 0) NOT NULL,
"Id_Disciplina" NUMBER(10, 0) NOT NULL,
"Id_Turma" NUMBER(10, 0) NOT NULL);

CREATE TABLE "Disciplina" (


"Id_Disciplina" NUMBER(10, 0) NOT NULL,
"Nome_Disc" VARCHAR2(30) NOT NULL,
"Carga_Horaria" NUMBER(10, 0) NOT NULL,
constraint DISCIPLINA_PK PRIMARY KEY
("Id_Disciplina"));

CREATE TABLE "Salario" (


"Id_Salario" NUMBER(10, 0) NOT NULL,
"Id_Professor" NUMBER(10, 0) NOT NULL,
"Valor_Salario" NUMBER(10) NOT NULL,
constraint SALARIO_PK PRIMARY KEY ("Id_Salario"));

CREATE TABLE "Simulado" (


"Id_Simulado" NUMBER(10, 0) NOT NULL,
"Descricao" VARCHAR2(100) NOT NULL,
constraint SIMULADO_PK PRIMARY KEY ("Id_Simulado"));
CREATE TABLE "Avalia" (
"Id_Disciplina" NUMBER(10, 0) NOT NULL,
"Id_Simulado" NUMBER(10, 0) NOT NULL,
"Id_Matricula" NUMBER(10, 0) NOT NULL,
"Data_Simulado" VARCHAR2(100)NOT NULL,
"Nota_Simulado" NUMBER(2, 0) NOT NULL);

ALTER TABLE "Matricula" ADD CONSTRAINT "Matricula_fk0"


FOREIGN KEY ("Id_Aluno") REFERENCES "Aluno"("Id_Aluno");

ALTER TABLE "Mensalidade" ADD CONSTRAINT


"Mensalidade_fk0" FOREIGN KEY ("Id_Matricula") REFERENCES
"Matricula"("Id_Matricula");

ALTER TABLE "Turma_Possui_Matriculas" ADD CONSTRAINT


"Turma_Possui_Matriculas_fk0" FOREIGN KEY ("Id_Turma")
REFERENCES "Turma"("Id_Turma");

ALTER TABLE "Turma_Possui_Matriculas" ADD CONSTRAINT


"Turma_Possui_Matriculas_fk1" FOREIGN KEY
("Id_Matricula") REFERENCES "Matricula"("Id_Matricula");

ALTER TABLE "Compoe" ADD CONSTRAINT "Compoe_fk0" FOREIGN


KEY ("Id_Professor") REFERENCES
"Professor"("Id_Professor");

ALTER TABLE "Compoe" ADD CONSTRAINT "Compoe_fk1" FOREIGN


KEY ("Id_Disciplina") REFERENCES
"Disciplina"("Id_Disciplina");

ALTER TABLE "Compoe" ADD CONSTRAINT "Compoe_fk2" FOREIGN


KEY ("Id_Turma") REFERENCES "Turma"("Id_Turma");

ALTER TABLE "Salario" ADD CONSTRAINT "Salario_fk0"


FOREIGN KEY ("Id_Professor") REFERENCES
"Professor"("Id_Professor");

ALTER TABLE "Avalia" ADD CONSTRAINT "Avalia_fk0" FOREIGN


KEY ("Id_Disciplina") REFERENCES
"Disciplina"("Id_Disciplina");

ALTER TABLE "Avalia" ADD CONSTRAINT "Avalia_fk1" FOREIGN


KEY ("Id_Simulado") REFERENCES "Simulado"("Id_Simulado");

ALTER TABLE "Avalia" ADD CONSTRAINT "Avalia_fk2" FOREIGN


KEY ("Id_Matricula") REFERENCES
"Matricula"("Id_Matricula");

insert into "Aluno" VALUES ('0524566', '02465698855',


'Thiago Marinho', 'thiago@gmail.com', '91985224556',
'20/05/2000', 'rua marques 225', 'belém',
'Nazaré','66555225');

insert into "Aluno" VALUES ('5224565', '15864597531',


'Lenilson Correa', 'lenilson@gmail.com', '9198256458',
'30/10/1995', 'Joao paulo 113', 'belém',
'MArco','60252564');

insert into "Aluno" VALUES ('122533', '00052678519',


'Jessica Bavieri', 'jessica_lopes@gmail.com',
'9198552456', '05/01/1994', 'Almirante Barroso 266',
'belém', 'Souza','62002520');

insert into "Aluno" VALUES ('989888', '65925587456',


'Rafaela Santos', 'rafapls@gmail.com', '9198226558',
'05/12/1996', 'Almirante Barroso 103', 'belém',
'Souza','62002200');

insert into "Aluno" VALUES ('5220156', '56584535999',


'Lucas Reis', 'luquinhas_b@gmail.com', '91987785623',
'01/12/1994', 'Augusto montenegro 305', 'belém',
'Castanheira','6655569');

insert into "Matricula" VALUES


('0000001','0524566','20/02/2022');
insert into "Matricula" VALUES
('0000002','5224565','20/04/2022');

insert into "Matricula" VALUES


('0000003','122533','18/04/2022');

insert into "Matricula" VALUES


('0000004','989888','01/01/2022');

insert into "Matricula" VALUES


('0000005','5220156','01/06/2022');

insert into "Mensalidade" VALUES


('10101001','0000001','30','450.65');

insert into "Mensalidade" VALUES


('10101002','0000002','30','359.00');

insert into "Mensalidade" VALUES


('10101003','0000003','29','551.00');

insert into "Mensalidade" VALUES


('10101004','0000004','05','550.00');

insert into "Mensalidade" VALUES


('10101005','0000005','18','499.21 ');

insert into "Turma" VALUES


('1','03-FEB-2022','03-FEB-2022','40','manha', '08');

insert into "Turma" VALUES


('2','03-FEB-2022','03-FEB-2022','40','tarde', '13');

insert into "Turma" VALUES


('3','03-FEB-2022','03-FEB-2022','55','tarde', '13');

insert into "Turma" VALUES


('4','03-FEB-2022','03-FEB-2022','25','noite', '18');
insert into "Turma" VALUES
('5','03-FEB-2022','03-FEB-2022','25','manha', '08');

insert into "Turma_Possui_Matriculas" VALUES


('1','0000001');

insert into "Turma_Possui_Matriculas" VALUES


('2','0000002');

insert into "Turma_Possui_Matriculas" VALUES


('3','0000003');

insert into "Turma_Possui_Matriculas" VALUES


('4','0000004');

insert into "Turma_Possui_Matriculas" VALUES


('5','0000005');

insert into "Professor" VALUES ('101','Joel


Santana','joeal@hotmail.com','25.0','Licenciatura
História');

insert into "Professor" VALUES ('113','Fernando


Livreira','livreira@hotmail.com','19.0','Bacharelado
Matematica');

insert into "Professor" VALUES ('050','Fernanda


Leal','lealFer@hotmail.com','23.0','Licenciatura
Letras');

insert into "Professor" VALUES ('115','Luciano


Lima','Limalu@hotmail.com','30.0','Licenciatura
Quimica');

insert into "Professor" VALUES ('118','Roberta


Ferreira','BetaFer@hotmail.com','29.0','Licenciatura
Fisica');
insert into "Disciplina" VALUES
('000031','Historia','90');

insert into "Disciplina" VALUES ('000032','Fisica','80');

insert into "Disciplina" VALUES


('000033','Portugues','80');

insert into "Disciplina" VALUES


('000034','Quimica','91');

insert into "Disciplina" VALUES


('000035','Matematica','91');

insert into "Salario" VALUES ('189855','101','4000.0');

insert into "Salario" VALUES ('246215','113','5500.0');

insert into "Salario" VALUES ('265515','050','3500.0');

insert into "Salario" VALUES ('978555','115','4200.0');

insert into "Salario" VALUES ('654444','118','6000.0');

insert into "Simulado" VALUES ('789789','Simulado Refente


a Ciências da natureza');

insert into "Simulado" VALUES ('565565','Simulado Refente


a Ciências exatas');

insert into "Simulado" VALUES ('123123','Simulado Refente


a Ciências Humanas');

insert into "Simulado" VALUES ('112112','Simulado Refente


a Redação');

insert into "Simulado" VALUES ('010010','Simulado Refente


a Lingua portuguesa');

insert into "Avalia" VALUES


('000031','789789','0000001','03-FEB-2022','3');

insert into "Avalia" VALUES


('000032','565565','0000002','03-FEB-2022','10');

insert into "Avalia" VALUES


('000033','123123','0000003','03-FEB-2022','9');

insert into "Avalia" VALUES


('000034','112112','0000004','03-FEB-2022','6');

insert into "Avalia" VALUES


('000035','010010','0000005','03-FEB-2022','5');

insert into "Compoe" VALUES ('101','000031','1');

insert into "Compoe" VALUES ('113','000035','2');

insert into "Compoe" VALUES ('050','000033','3');

insert into "Compoe" VALUES ('115','000034','4');

insert into "Compoe" VALUES ('118','000032','5');

Você também pode gostar