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.
[créditos da imagem: E-Learning Vector by Vecteezy]
- 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.
- 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
. - Para a instalação de toda a estrutura do banco de dados existem duas opções:
- Executar toda parte do arquivo único main.sql até antes da parte de execuções.
- 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.
É 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.
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.
Este projeto está licenciado sob a licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.