{"id":20305243,"url":"https://github.com/nelsonwenner/database-project-ead","last_synced_at":"2026-03-05T09:31:54.997Z","repository":{"id":111913776,"uuid":"195050067","full_name":"nelsonwenner/database-project-ead","owner":"nelsonwenner","description":":elephant: Database modeling of a distance learning system, done purely with SQL in one of the university's disciplines.","archived":false,"fork":false,"pushed_at":"2021-04-20T22:13:36.000Z","size":69,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-19T12:56:51.949Z","etag":null,"topics":["database","postgres","postgresql"],"latest_commit_sha":null,"homepage":"","language":"PLpgSQL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nelsonwenner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-07-03T12:34:38.000Z","updated_at":"2023-04-20T18:27:21.000Z","dependencies_parsed_at":"2023-09-08T14:15:11.269Z","dependency_job_id":null,"html_url":"https://github.com/nelsonwenner/database-project-ead","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nelsonwenner/database-project-ead","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nelsonwenner%2Fdatabase-project-ead","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nelsonwenner%2Fdatabase-project-ead/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nelsonwenner%2Fdatabase-project-ead/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nelsonwenner%2Fdatabase-project-ead/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nelsonwenner","download_url":"https://codeload.github.com/nelsonwenner/database-project-ead/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nelsonwenner%2Fdatabase-project-ead/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30117685,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T08:19:04.902Z","status":"ssl_error","status_checked_at":"2026-03-05T08:17:37.148Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","postgres","postgresql"],"created_at":"2024-11-14T17:07:52.414Z","updated_at":"2026-03-05T09:31:54.966Z","avatar_url":"https://github.com/nelsonwenner.png","language":"PLpgSQL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eDatabase project - EAD\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n\n  \u003ca href=\"https://github.com/nelsondiaas\"\u003e\n    \u003cimg alt=\"Made by @nelsondiaas\" src=\"https://img.shields.io/badge/made%20by-%40nelsondiaas-%2304D361\"\u003e \u003c/img\u003e\n  \u003c/a\u003e\n\n  \u003ca href=\"https://github.com/ofelipegabriel321\"\u003e\n    \u003cimg alt=\"Made by @ofelipegabriel321\" src=\"https://img.shields.io/badge/made%20by-%40ofelipegabriel321-%2304D361\"\u003e \u003c/img\u003e\n  \u003c/a\u003e\n  \n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/badge/license-MIT-%2304D361\"\u003e\n  \u003c/a\u003e\n  \n  \u003ca href=\"https://github.com/nelsondiaas/database-project-ead/stargazers\"\u003e\n    \u003cimg alt=\"Stargazers\" src=\"https://img.shields.io/github/stars/nelsondiaas/database-project-ead?style=social\"\u003e\n  \u003c/a\u003e\n\n\u003c/p\u003e\n\nO 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.\n\n## Require\n  * Postgres\n\n## Features\n- 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;\n- Suporte de armazenamento e manipulação de cursos relacionados a um professor;\n- Suporte de armazenamento e manipulação de módulos relacionados a um curso, a alunos cursando e a outros módulos pré-requisito;\n- Suporte de armazenamento e manipulação de disciplinas relacionados a um módulo;\n- Suporte de armazenamento e manipulação de vídeoaulas relacionados a uma disciplina e a alunos que as assistiram;\n- Suporte de armazenamento e manipulação de questionários relacionados a uma disciplina;\n- Suporte de armazenamento e manipulação de questões relacionados a uma disciplina, a questionários e a alunos que as responderam.\n\n## Project Class Diagram\n\n![Diagrama de Classes - Projeto Plataforma EAD](https://user-images.githubusercontent.com/40550247/73898195-54d07380-4867-11ea-93d0-ac4993f5589b.png)\n\n## Installation\n\n1. Faça o [download do projeto em ZIP](https://github.com/nelsondiaas/database-project-ead/archive/master.zip) ou clone o projeto pelo bash com o comando `$ git clone https://github.com/nelsondiaas/database-project-ead`.\n2. Para a instalação de toda a estrutura do banco de dados existem duas opções:\n   1. Executar toda parte do arquivo único [main.sql](main.sql) até antes da parte de execuções.\n   2. Executar, na seguinte ordem, os aquivos [tables_creation.sql](tables_creation.sql), [auxiliary_functions.sql](auxiliary_functions.sql), [main_functions.sql](main_functions.sql), [user_functions.sql](user_functions.sql), [trigger_functions.sql](trigger_functions.sql), [triggers.sql](triggers.sql) e [groups.sql](groups.sql).\n\n## Usage\nÉ 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.\n\n### Principais especificações de funções e triggers:\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eAuxiliary Functions\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eALUNO_AINDA_CURSANDO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se o aluno ainda está cursando o curso.***\n  - ***Entrada***:\n    - *[int]* código do aluno que se deseja verificar se ainda está cursando;\n    - *[int]* código do curso em que essa verificação será direcionada.\n  - ***Saída***:\n    - *[boolean]* boleano sobre o aluno ainda está cursando o curso.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eALUNO_JA_CURSOU\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se o aluno já cursou (e não cursa mais) o curso.***\n  - ***Entrada***:\n    - *[int]* código do aluno que se deseja verificar se já cursou;\n    - *[int]* código do curso em que essa verificação será direcionada.\n  - ***Saída***:\n    - *[boolean]* boleano sobre o aluno já ter cursado (e não cursar mais) o curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_CPF_USUARIO_JA_REGISTRADO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se existe algum usuário da tabela especificada com o cpf especificado.***\n  - ***Entrada***:\n    - *[text]* cpf do usuário;\n    - *[text]* tabela do usuário.\n  - ***Saída***:\n    - *[boolean]* booleano sobre existir algum usuário da tabela especificada com o cpf especificado.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_EMAIL_USUARIO_JA_REGISTRADO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se existe algum usuário da tabela especificada com o email especificado.***\n  - ***Entrada***:\n    - *[text]* email do usuário;\n    - *[text]* tabela do usuário.\n  - ***Saída***: [boolean] booleano sobre existir algum usuário da tabela especificada com o email especificado.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_EXISTENCIA_ALUNOS_CURSANDO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se existe algum aluno cursando o curso especificado.***\n  - ***Entrada***:\n    - *[int]* código do curso.\n  - ***Saída***:\n    - *[boolean]* booleano sobre existir algum aluno cursando o curso especificado.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_POSSIBILIDADE_DELETE_UPDATE_NO_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Entrada***:\n    - *[int]* código do curso.\n  - ***Casos de exceções***:\n    - curso publicado;\n    - existência de alunos cursando.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVALIDAR_DISCIPLINA\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n  \n  ***Verifica se a disciplina é válida (possui 3 videoaulas).***\n  - ***Entrada***:\n    - *[int]* código da disciplina.\n  - ***Saída***:\n    - *[boolean]* booleano sobre a disciplina ser válida.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVALIDAR_MODULO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se o módulo é válido (possui 3 disciplinas válidas).***\n  - ***Entrada***:\n    - *[int]* código do módulo.\n  - ***Saída***:\n    - *[boolean]* booleano sobre o módulo ser válido.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVALIDAR_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Verifica se o curso é válido (possui 3 módulos válidos).***\n  - ***Entrada***:\n    - *[int]* código do curso.\n  - ***Saída***:\n    - *[boolean]* booleano sobre o curso ser válido.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONFIGURAR_ACESSIBILIDADE_ALUNO_MODULO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Entrada***:\n    - *[int]* código do aluno;\n    - *[int]* código do curso.\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_SUFICIENTE_ASSISTIDO_PARA_AVALIAR\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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).***\n  - ***Entrada***:\n    - *[int]* código do aluno;\n    - *[int]* código do curso.\n  - ***Saída***:\n    - *[boolean]* booleano sobre o aluno poder avaliar o curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_SE_MODULOS_FICAM_ACESSIVEIS\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Entrada***:\n    - *[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.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVERIFICAR_VALIDADE_PRE_REQUISITO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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).***\n  - ***Entrada***:\n    - *[int]* código do modulo que será o módulo no pré-requisito;\n    - *[int]* código do modulo que será o módulo pré-requisito no pré-requisito.\n  - ***Saída***:\n    - *[boolean]* booleano sobre a possibilidade dos módulos se associarem entre si na tabela de pré-requisitos.\n\n\u003c/details\u003e\n\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eMain Functions\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eINSERIR_ALUNO_E_PROFESSOR\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Insere um usuário na sua tabela (existem as possibilidades de inserir aluno e professor).***\n  - ***Entrada***:\n    - *[text]* nome do usuário;\n    - *[text]* cpf do usuário;\n    - *[date]* data de nascimento do usuário;\n    - *[text]* email do usuário;\n    - *[text]* senha do usuário;\n    - *[text]* tabela do usuário.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eATUALIZAR_SALDO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Atualiza o saldo de um usuário a partir do valor a ser alterado, seu código e tabela.***\n  - ***Entrada***:\n    - *[float]* valor a ser alterado no saldo do usuário;\n    - *[int]* código do usuário;\n    - *[text]* nome da tabela do usuário.\n  - ***Casos de exceções***:\n    - nome da tabela inválido; código de usuário inválido.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eRECEBER_SALARIO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Faz o professor receber o salário adquirido pelas vendas dos seus curso.***\n  - ***Entrada***:\n    - *[int]* código do professor que irá receber o salário.\n  - ***Casos de exceções***:\n    - código de usuário inválido.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCOMPRAR_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Realiza a compra do curso: insere ou atualiza o aluno_curso, dependendo se o aluno já cursou o curso.***\n  - ***Entrada***:\n    - *[int]* código do aluno;\n    - *[int]* código do curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eAVALIAR_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Permite a avaliação do curso por parte do aluno.***\n  - ***Entrada***:\n    - *[int]* código do aluno_curso;\n    - *[float]* nota de avaliação para o curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria um curso unido a um professor.***\n  - ***Entrada***:\n    - *[int]* código do professor;\n    - *[text]* nome do curso;\n    - *[text]* descrição do curso;\n    - *[float]* preço do curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003ePUBLICAR_CURSO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Publica o curso.***\n  - ***Entrada***:\n    - *[int]* código do curso.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_MODULOS\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria módulos unidos a um professor.***\n  - ***Entrada***:\n    - *[int]* código do professor;\n    - *[text[]]* nomes dos módulos;\n    - *[text[]]* descrições dos módulos.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_PRE_REQUISITO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria um vínculo entre módulos na tabela pré-requisito.***\n  - ***Entrada***:\n    - *[int]* código do módulo;\n    - *[int]* código do módulo pré-requisito.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_DISCIPLINAS\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria disciplinas unidas a um módulo.***\n  - ***Entrada***:\n    - *[int]* código do módulo;\n    - *[text[]]* nomes das disciplinas;\n    - *[text[]]* descrições das disciplinas.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_VIDEO_AULAS\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria videoaulas unidas a disciplinas.***\n  - ***Entrada***:\n    - *[int]* código da disciplina;\n    - *[text[]]* títulos das videoaulas;\n    - *[text[]]* descrições das videoaulas;\n    - *[int[]]* durações das videoaulas.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eASSISTIR_VIDEO_AULA\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Faz o aluno assistir à videoaula (faz um vínculo aluno_video_assistido).***\n  - ***Entrada***:\n    - *[int]* código do aluno;\n    - *[int]* código da videoaula.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_QUESTAO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria uma questão unida a uma disciplina.***\n  - ***Entrada***:\n    - *[int]* código da disciplina;\n    - *[text]* texto da questão.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCORRIGIR_QUESTAO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Corrige uma questao_aluno com um texto que representa se a resposta está correta.***\n  - ***Entrada***:\n    - *[int]* código do vínculo questao_aluno corrigido;\n    - *[text]* resposta correta inserida.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCRIAR_QUESTIONARIO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria um questionário unido a uma disciplina.***\n  - ***Entrada***:\n    - *[int]* nome do questionário;\n    - *[int]* código da disciplina.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eVINCULAR_QUESTAO_A_QUESTIONARIO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Cria um vínculo entre a questão e o questionário na tabela questao_questionario.***\n  - ***Entrada***:\n    - *[int]* código do questionário vínculado;\n    - *[int]* código da questão vinculada.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eSUBMETER_RESPOSTA_DE_QUESTAO\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Faz o aluno submeter uma resposta para uma questão por meio do aluno_questao.***\n  - ***Entrada***:\n    - *[int]* código do aluno;\n    - *[int]* código da questão;\n    - *[text]* resposta para a questão.\n\n\u003c/details\u003e\n\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eTrigger Functions\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_USUARIO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Faz controle sobre as ações tomadas antes de ocorrer um insert, update ou delete em uma tabela aluno ou professor.***\n  - ***Casos de exceções***:\n    - idade menor que 18;\n    - cpf já registrado anteriormente;\n    - email já registrado anteriormente;\n    - saldo negativo;\n    - alteração de data de nascimento;\n    - alteração do email.\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_ALUNO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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).***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_PROFESSOR_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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).***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_CURSO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Casos de exceções***:\n    - código de professor inválido;\n    - curso ser publicado sem ter disponibilidade;\n    - código de curso inválido.\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_ALUNO_CURSO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Casos de exceções***:\n    - código de aluno inválido;\n    - código de curso inválido;\n    - curso não publicado;\n    - aluno envolvido nas alterações não estar cursando;\n    - não ter assistido videoaulas o suficiente para poder avaliar o curso;\n    - ter uma nota de avaliação fora do intervalo 0~5.\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_ALUNO_CURSO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Faz controle sobre as ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_curso.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_MODULO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_ALUNO_MODULO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_DISCIPLINA_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_VIDEO_AULA_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eCONTROLAR_EVENTOS_ALUNO_VIDEO_ASSISTIDO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***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.***\n  - ***Saída***:\n    - *[trigger]*.\n\n\u003c/details\u003e\n\n\n\u003c/details\u003e\n\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eTriggers\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela aluno.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_PROFESSOR_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela professor.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_PROFESSOR_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela professor.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_CURSO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas antes de ocorrer um insert, update ou delete em uma tabela curso.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_CURSO_BEFORE\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela curso.***  \n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_CURSO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_curso.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_MODULO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela módulo.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_MODULO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_modulo.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_DISCIPLINA_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela disciplina.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_VIDEO_AULA_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela videoaula.***\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e\u003cb\u003eEVENTOS_ALUNO_VIDEO_ASSISTIDO_AFTER\u003c/b\u003e\u003c/summary\u003e\u003cblockquote\u003e\n\n  ***Gatilho: para ações tomadas depois de ocorrer um insert, update ou delete em uma tabela aluno_video_assistido.***\n\n\u003c/details\u003e\n\n\n\n\u003c/details\u003e\n\n\n## License\nEste projeto está licenciado sob a licença MIT. Consulte o arquivo [LICENSE](LICENSE) para obter mais detalhes.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnelsonwenner%2Fdatabase-project-ead","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnelsonwenner%2Fdatabase-project-ead","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnelsonwenner%2Fdatabase-project-ead/lists"}