Skip to content

ofelipegabriel321/PROJETO-PLATAFORMA-EAD

Repository files navigation

Projeto Plataforma EAD

Made by @nelsondiaas Made by @ofelipegabriel321 License Stargazers

O Projeto Plataforma EAD é um conjunto de comandos SQL que auxilia redes de Ensino à Distância com o fornecimento de um de um modelo básico para a armazenagem e manipulação de dados.

Ensino à Distância

[créditos da imagem: E-Learning Vector by Vecteezy]

Features

  • Suporte de armazenamento, manipulação e utilização de mecanismos de usuários para Alunos e Professores, que possuem diferentes propriedades/possibilidades dentro do sistema;
  • Suporte de armazenamento e manipulação de cursos relacionados a um professor;
  • Suporte de armazenamento e manipulação de módulos relacionados a um curso, a alunos cursando e a outros módulos pré-requisito;
  • Suporte de armazenamento e manipulação de disciplinas relacionados a um módulo;
  • Suporte de armazenamento e manipulação de vídeoaulas relacionados a uma disciplina e a alunos que as assistiram;
  • Suporte de armazenamento e manipulação de questionários relacionados a uma disciplina;
  • Suporte de armazenamento e manipulação de questões relacionados a uma disciplina, a questionários e a alunos que as responderam.

Project Class Diagram

Diagrama de Classes - Projeto Plataforma EAD

Installation

  1. Faça o download do projeto em ZIP ou clone o projeto pelo bash com o comando $ git clone https://github.com/ofelipegabriel321/PROJETO-PLATAFORMA-EAD.git.
  2. Para a instalação de toda a estrutura do banco de dados existem duas opções:
    1. Executar toda parte do arquivo único main.sql até antes da parte de execuções.
    2. Executar, na seguinte ordem, os aquivos tables_creation.sql, auxiliary_functions.sql, main_functions.sql, user_functions.sql, trigger_functions.sql, triggers.sql e groups.sql.

Usage

É possível a execução dos métodos principais e métodos de usuários desenvolvidos por meio do arquivo [run.sql] (ou a parte execuções no arquivo main.sql) e, claro, a edição manual dos arquivos SQL desses métodos, das tabelas, dos outros métodos e das triggers.

Principais especificações de funções e triggers:

Auxiliary Functions
ALUNO_AINDA_CURSANDO

Verifica se o aluno ainda está cursando o curso.

  • Entrada:
    • [int] código do aluno que se deseja verificar se ainda está cursando;
    • [int] código do curso em que essa verificação será direcionada.
  • Saída:
    • [boolean] boleano sobre o aluno ainda está cursando o curso.
ALUNO_JA_CURSOU

Verifica se o aluno já cursou (e não cursa mais) o curso.

  • Entrada:
    • [int] código do aluno que se deseja verificar se já cursou;
    • [int] código do curso em que essa verificação será direcionada.
  • Saída:
    • [boolean] boleano sobre o aluno já ter cursado (e não cursar mais) o curso.
VERIFICAR_CPF_USUARIO_JA_REGISTRADO

Verifica se existe algum usuário da tabela especificada com o cpf especificado.

  • Entrada:
    • [text] cpf do usuário;
    • [text] tabela do usuário.
  • Saída:
    • [boolean] booleano sobre existir algum usuário da tabela especificada com o cpf especificado.
VERIFICAR_EMAIL_USUARIO_JA_REGISTRADO

Verifica se existe algum usuário da tabela especificada com o email especificado.

  • Entrada:
    • [text] email do usuário;
    • [text] tabela do usuário.
  • Saída: [boolean] booleano sobre existir algum usuário da tabela especificada com o email especificado.
VERIFICAR_EXISTENCIA_ALUNOS_CURSANDO

Verifica se existe algum aluno cursando o curso especificado.

  • Entrada:
    • [int] código do curso.
  • Saída:
    • [boolean] booleano sobre existir algum aluno cursando o curso especificado.
VERIFICAR_POSSIBILIDADE_DELETE_UPDATE_NO_CURSO

Aplica casos de exceção caso ocorrer alguma alteração dentro de um curso com ele estando publicado ou com alunos que ainda estão cursando.

  • Entrada:
    • [int] código do curso.
  • Casos de exceções:
    • curso publicado;
    • existência de alunos cursando.
VALIDAR_DISCIPLINA

Verifica se a disciplina é válida (possui 3 videoaulas).

  • Entrada:
    • [int] código da disciplina.
  • Saída:
    • [boolean] booleano sobre a disciplina ser válida.
VALIDAR_MODULO

Verifica se o módulo é válido (possui 3 disciplinas válidas).

  • Entrada:
    • [int] código do módulo.
  • Saída:
    • [boolean] booleano sobre o módulo ser válido.
VALIDAR_CURSO

Verifica se o curso é válido (possui 3 módulos válidos).

  • Entrada:
    • [int] código do curso.
  • Saída:
    • [boolean] booleano sobre o curso ser válido.
CONFIGURAR_ACESSIBILIDADE_ALUNO_MODULO

Configura a acessabilidade de um aluno_modulo, adicionando um aluno_modulo para cada módulo do curso. a acessabilidade é configurada como true para os módulos que não possuem pré-requisitos.

  • Entrada:
    • [int] código do aluno;
    • [int] código do curso.
VERIFICAR_SUFICIENTE_ASSISTIDO_PARA_AVALIAR

Verifica se o aluno assistiu uma quantidade de videoaulas e uma quantidade de tempo suficiente para poder avaliar o curso (consideramos ter assistido 10% do número de vídeoaulas e 15% do tempo de vídeoaulas como o mínimo para isso).

  • Entrada:
    • [int] código do aluno;
    • [int] código do curso.
  • Saída:
    • [boolean] booleano sobre o aluno poder avaliar o curso.
VERIFICAR_SE_MODULOS_FICAM_ACESSIVEIS

Torna acessivel algum(ns) módulo(s) que possuem, como pré-requisito o módulo passado, ficando ele(s) acessível(is) no aluno_modulo.

  • Entrada:
    • [int] código do modulo (que deve ter ficado com a meta_concluida antes de executar essa função) que pode ser pré-requisito para outros módulos; código do aluno que irá passar a ter seus módulos acessíveis.
VERIFICAR_VALIDADE_PRE_REQUISITO

Verifica se é válido relacionar um módulo com outro na tabela pré-requisito. ou seja, os módulos não devem entrar em um estado em que um não consiga acessar o outro e vice-versa pois eles têm um ao outro como pré-requisito (impasse de pré-requisito entre módulos).

  • Entrada:
    • [int] código do modulo que será o módulo no pré-requisito;
    • [int] código do modulo que será o módulo pré-requisito no pré-requisito.
  • Saída:
    • [boolean] booleano sobre a possibilidade dos módulos se associarem entre si na tabela de pré-requisitos.
Main Functions
INSERIR_ALUNO_E_PROFESSOR

Insere um usuário na sua tabela (existem as possibilidades de inserir aluno e professor).

  • Entrada:
    • [text] nome do usuário;
    • [text] cpf do usuário;
    • [date] data de nascimento do usuário;
    • [text] email do usuário;
    • [text] senha do usuário;
    • [text] tabela do usuário.
ATUALIZAR_SALDO

Atualiza o saldo de um usuário a partir do valor a ser alterado, seu código e tabela.

  • Entrada:
    • [float] valor a ser alterado no saldo do usuário;
    • [int] código do usuário;
    • [text] nome da tabela do usuário.
  • Casos de exceções:
    • nome da tabela inválido; código de usuário inválido.
RECEBER_SALARIO

Faz o professor receber o salário adquirido pelas vendas dos seus curso.

  • Entrada:
    • [int] código do professor que irá receber o salário.
  • Casos de exceções:
    • código de usuário inválido.
COMPRAR_CURSO

Realiza a compra do curso: insere ou atualiza o aluno_curso, dependendo se o aluno já cursou o curso.

  • Entrada:
    • [int] código do aluno;
    • [int] código do curso.
AVALIAR_CURSO

Permite a avaliação do curso por parte do aluno.

  • Entrada:
    • [int] código do aluno_curso;
    • [float] nota de avaliação para o curso.
CRIAR_CURSO

Cria um curso unido a um professor.

  • Entrada:
    • [int] código do professor;
    • [text] nome do curso;
    • [text] descrição do curso;
    • [float] preço do curso.
PUBLICAR_CURSO

Publica o curso.

  • Entrada:
    • [int] código do curso.
CRIAR_MODULOS

Cria módulos unidos a um professor.

  • Entrada:
    • [int] código do professor;
    • [text[]] nomes dos módulos;
    • [text[]] descrições dos módulos.
CRIAR_PRE_REQUISITO

Cria um vínculo entre módulos na tabela pré-requisito.

  • Entrada:
    • [int] código do módulo;
    • [int] código do módulo pré-requisito.
CRIAR_DISCIPLINAS

Cria disciplinas unidas a um módulo.

  • Entrada:
    • [int] código do módulo;
    • [text[]] nomes das disciplinas;
    • [text[]] descrições das disciplinas.
CRIAR_VIDEO_AULAS

Cria videoaulas unidas a disciplinas.

  • Entrada:
    • [int] código da disciplina;
    • [text[]] títulos das videoaulas;
    • [text[]] descrições das videoaulas;
    • [int[]] durações das videoaulas.
ASSISTIR_VIDEO_AULA

Faz o aluno assistir à videoaula (faz um vínculo aluno_video_assistido).

  • Entrada:
    • [int] código do aluno;
    • [int] código da videoaula.
CRIAR_QUESTAO

Cria uma questão unida a uma disciplina.

  • Entrada:
    • [int] código da disciplina;
    • [text] texto da questão.
CORRIGIR_QUESTAO

Corrige uma questao_aluno com um texto que representa se a resposta está correta.

  • Entrada:
    • [int] código do vínculo questao_aluno corrigido;
    • [text] resposta correta inserida.
CRIAR_QUESTIONARIO

Cria um questionário unido a uma disciplina.

  • Entrada:
    • [int] nome do questionário;
    • [int] código da disciplina.
VINCULAR_QUESTAO_A_QUESTIONARIO

Cria um vínculo entre a questão e o questionário na tabela questao_questionario.

  • Entrada:
    • [int] código do questionário vínculado;
    • [int] código da questão vinculada.
SUBMETER_RESPOSTA_DE_QUESTAO

Faz o aluno submeter uma resposta para uma questão por meio do aluno_questao.

  • Entrada:
    • [int] código do aluno;
    • [int] código da questão;
    • [text] resposta para a questão.
Trigger Functions
CONTROLAR_EVENTOS_USUARIO_BEFORE

Faz controle sobre as ações tomadas antes de ocorrer um insert, update ou delete em uma tabela aluno ou professor.

  • Casos de exceções:
    • idade menor que 18;
    • cpf já registrado anteriormente;
    • email já registrado anteriormente;
    • saldo negativo;
    • alteração de data de nascimento;
    • alteração do email.
  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_ALUNO_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno. ações: criar um novo usuário no grupo aluno (login role); atualizar a senha do usuário (login role); deletar usuário (login role).

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_PROFESSOR_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela professor. Ações: criar um novo usuário no grupo professor (login role); atualizar a senha do usuário (login role); deletar usuário (login role).

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_CURSO_BEFORE

Faz controle sobre as ações tomadas antes de ocorrer um insert, update ou delete em uma tabela curso. ações: calcular duração do curso caso necessário.

  • Casos de exceções:
    • código de professor inválido;
    • curso ser publicado sem ter disponibilidade;
    • código de curso inválido.
  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_ALUNO_CURSO_BEFORE

Faz controle sobre as ações tomadas antes de ocorrer um insert, update ou delete em uma tabela aluno_curso. ações: aplicar a cobrança pela compra do curso.

  • Casos de exceções:
    • código de aluno inválido;
    • código de curso inválido;
    • curso não publicado;
    • aluno envolvido nas alterações não estar cursando;
    • não ter assistido videoaulas o suficiente para poder avaliar o curso;
    • ter uma nota de avaliação fora do intervalo 0~5.
  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_ALUNO_CURSO_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_curso.

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_MODULO_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela módulo. ações: incrementar/decrementar o número de módulos; atualizar o publicado e a disponibilidade do curso caso necessário.

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_ALUNO_MODULO_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_modulo. ações: tornar módulos acessíveis.

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_DISCIPLINA_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela disciplina. ações: atualizar o publicado e a disponibilidade do curso caso necessário.

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_VIDEO_AULA_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela disciplina. ações: atualizar o publicado e a disponibilidade do curso caso necessário.

  • Saída:
    • [trigger].
CONTROLAR_EVENTOS_ALUNO_VIDEO_ASSISTIDO_AFTER

Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_video_assistido. ações: atualizar o booleano que representa que a meta do módulo foi concluída/alcançada, caso necessário.

  • Saída:
    • [trigger].
Triggers
EVENTOS_ALUNO_BEFORE

Gatilho para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela aluno.

EVENTOS_ALUNO_AFTER

Gatilho para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno.

EVENTOS_PROFESSOR_BEFORE

Gatilho: para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela professor.

EVENTOS_PROFESSOR_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela professor.

EVENTOS_CURSO_BEFORE

Gatilho: para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela curso.

EVENTOS_ALUNO_CURSO_BEFORE

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela curso.

EVENTOS_ALUNO_CURSO_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_curso.

EVENTOS_MODULO_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela módulo.

EVENTOS_ALUNO_MODULO_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_modulo.

EVENTOS_DISCIPLINA_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela disciplina.

EVENTOS_VIDEO_AULA_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela videoaula.

EVENTOS_ALUNO_VIDEO_ASSISTIDO_AFTER

Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_video_assistido.

License

Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.

Releases

No releases published

Packages

No packages published