Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • WimBelemDon
  • WikiWiki
  • Wiki
  • Banco de Dados

Last edited by Isabela Araujo Sep 10, 2025
Page history

Banco de Dados

Home Escopo Processo Design/Mockups Configuração Arquitetura Gerência Código BD Frontend Backend

Documentação do Schema do Banco de Dados

Visão Geral

Este documento descreve o schema do banco de dados para o sistema de gestão educacional. O sistema utiliza PostgreSQL como banco de dados principal e Prisma como ORM. O schema foi projetado para gerenciar usuários, estudantes, turmas, controle de frequência e atividades educacionais relacionadas, com foco em dados socioeconômicos e demográficos.

Configuração do Banco de Dados

  • Provedor do Banco: PostgreSQL
  • ORM: Prisma Client
  • Conexão: Variável de ambiente DATABASE_URL

Diagrama de Relacionamentos

Ages-Wimbelemdon__1_

Enumerações

UserStatus

Define os possíveis estados para usuários do sistema.

  • ATIVO - Usuário está ativo no sistema
  • INATIVO - Conta do usuário está desativada

StudentStatus

Define os possíveis estados para estudantes.

  • ATIVO - Estudante está matriculado e ativo
  • INATIVO - Estudante não está mais ativo (formado, transferido, etc.)

FrequencyStatus

Define o status de presença para controle de frequência.

  • PRESENTE - Estudante estava presente
  • AUSENTE - Estudante estava ausente

FormType

Define os tipos de formulários disponíveis no sistema.

  • PSICOLOGIA - Formulário de avaliação psicológica
  • SOCIAL - Formulário de avaliação social

Race (Raça)

Define as categorias de raça conforme classificação do IBGE.

  • BRANCA - Raça branca
  • PRETA - Raça preta
  • PARDA - Raça parda
  • AMARELA - Raça amarela
  • INDIGENA - Raça indígena
  • NA - Não se aplica ou não informado

Gender (Gênero)

Define as identidades de gênero reconhecidas pelo sistema.

  • MASCULINO - Gênero masculino
  • FEMININO - Gênero feminino
  • HOMEM_TRANS - Homem trans
  • MULHER_TRANS - Mulher trans
  • TRAVESTI - Travesti
  • NAO_BINARIO - Não binário
  • OUTRO - Outras identidades

SocialProgram (Programa Social)

Define os programas sociais governamentais.

  • BOLSA_FAMILIA - Programa Bolsa Família
  • BPC_LOAS - Benefício de Prestação Continuada
  • TARIFA_SOCIAL_ENERGIA - Tarifa Social de Energia Elétrica
  • AUXILIO_GAS - Auxílio Gás
  • PROGRAMA_ESTADUAL - Programas estaduais
  • PROGRAMA_MUNICIPAL_VIA_CRAS - Programas municipais via CRAS

EmploymentStatus (Situação de Emprego)

Define a situação empregatícia.

  • EMPREGADO - Pessoa empregada
  • DESEMPREGADO - Pessoa desempregada

SchoolYear (Ano Escolar)

Define os anos/séries escolares.

  • EDUCACAO_INFANTIL - Educação Infantil
  • FUNDAMENTAL_1 - Ensino Fundamental I (1º ao 5º ano)
  • FUNDAMENTAL_2 - Ensino Fundamental II (6º ao 9º ano)
  • ENSINO_MEDIO_1 - 1º ano do Ensino Médio
  • ENSINO_MEDIO_2 - 2º ano do Ensino Médio
  • ENSINO_MEDIO_3 - 3º ano do Ensino Médio
  • EJA - Educação de Jovens e Adultos

EducationLevel (Nível de Escolaridade)

Define os níveis de escolaridade.

  • NENHUM - Sem escolaridade
  • ALFABETIZADO - Alfabetizado
  • FUNDAMENTAL_INCOMPLETO - Ensino Fundamental Incompleto
  • FUNDAMENTAL_COMPLETO - Ensino Fundamental Completo
  • ENSINO_MEDIO_INCOMPLETO - Ensino Médio Incompleto
  • ENSINO_MEDIO_COMPLETO - Ensino Médio Completo
  • SUPERIOR_INCOMPLETO - Ensino Superior Incompleto
  • SUPERIOR_COMPLETO - Ensino Superior Completo
  • POS_GRADUACAO - Pós-graduação

Entidades Principais

User (Usuário)

Representa usuários do sistema (professores, administradores, funcionários).

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do usuário
uidFirebase String Único UID de autenticação do Firebase
fullName String Obrigatório Nome completo do usuário
email String Único, Obrigatório Endereço de email do usuário
roleId Int Opcional, Chave Estrangeira Referência ao papel do usuário
addressId Int Obrigatório, Chave Estrangeira Referência ao endereço do usuário
createdAt DateTime Padrão: now() Data/hora de criação da conta
status UserStatus Padrão: ATIVO Status atual do usuário

Relacionamentos:

  • role: Muitos-para-Um com Role (opcional)
  • address: Muitos-para-Um com Address (obrigatório)
  • classes: Um-para-Muitos com Class (como professor)

Student (Estudante)

Representa estudantes no sistema educacional com informações socioeconômicas.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do estudante
addressId Int Opcional, Chave Estrangeira Referência ao endereço do estudante
fullName String Obrigatório Nome completo do estudante
dateOfBirth DateTime Opcional, Apenas data Data de nascimento do estudante
registrationNumber String Único, Obrigatório Número de matrícula do estudante
enrollmentDate DateTime Padrão: now(), Apenas data Data inicial da matrícula
disenrollmentDate DateTime Opcional, Apenas data Data quando o estudante saiu
status StudentStatus Padrão: ATIVO Status atual do estudante
levelId Int Opcional, Chave Estrangeira Referência ao nível do estudante
socialName String Opcional Nome social do estudante
race Race Opcional Raça/cor do estudante
schoolName String Opcional Nome da escola que frequenta
schoolShift String Opcional Turno escolar (manhã, tarde, noite)
schoolYear SchoolYear Opcional Ano/série escolar
socialPrograms SocialProgram Opcional Programa social que participa
gender Gender Opcional Identidade de gênero
employmentStatus EmploymentStatus Opcional Situação empregatícia
gradeGap Boolean Opcional Indica se há defasagem escolar

Relacionamentos:

  • address: Muitos-para-Um com Address (opcional)
  • level: Muitos-para-Um com Level (opcional)
  • family: Um-para-Muitos com FamilyMember
  • frequencies: Um-para-Muitos com Frequency
  • classes: Muitos-para-Muitos com Class (através de Enrollment)
  • answers: Um-para-Muitos com Answer
  • docs: Um-para-Muitos com Doc

Address (Endereço)

Representa endereços físicos para usuários, estudantes e familiares.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do endereço
cep String VarChar(9) Código postal brasileiro (CEP)
street String Obrigatório Nome da rua
number String Opcional, VarChar(10) Número da residência
complement String Opcional Complemento do endereço
neighborhood String Obrigatório Bairro
city String Obrigatório Nome da cidade
state String VarChar(2) Sigla do estado

Relacionamentos:

  • users: Um-para-Muitos com User
  • students: Um-para-Muitos com Student
  • familyMembers: Um-para-Muitos com FamilyMember

Estrutura Educacional

Role (Papel)

Define papéis de usuários dentro do sistema.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do papel
name String Único, Obrigatório Nome do papel
description String Opcional Descrição do papel

Relacionamentos:

  • users: Um-para-Muitos com User

Level (Nível)

Representa níveis educacionais ou séries.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do nível
name String Único, Obrigatório Nome do nível
description String Opcional Descrição do nível

Relacionamentos:

  • students: Um-para-Muitos com Student
  • classes: Um-para-Muitos com Class

Activity (Atividade)

Representa diferentes tipos de atividades educacionais.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da atividade
name String Único, Obrigatório Nome da atividade

Relacionamentos:

  • classes: Um-para-Muitos com Class

Class (Turma)

Representa turmas/cursos dentro do sistema.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da turma
name String Obrigatório Nome da turma
activityId Int Obrigatório, Chave Estrangeira Referência à atividade associada
levelId Int Obrigatório, Chave Estrangeira Referência ao nível da turma
state String Obrigatório Estado/status da turma

Relacionamentos:

  • teacher: Muitos-para-Muitos com User
  • activity: Muitos-para-Um com Activity (obrigatório)
  • level: Muitos-para-Um com Level (obrigatório)
  • frequencies: Um-para-Muitos com Frequency
  • students: Muitos-para-Muitos com Student (através de Enrollment)

Frequência e Matrícula

Enrollment (Matrícula)

Tabela de junção gerenciando relacionamento muitos-para-muitos entre estudantes e turmas.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da matrícula
studentId Int Obrigatório, Chave Estrangeira Referência ao estudante
classId Int Obrigatório, Chave Estrangeira Referência à turma
enrollmentDate DateTime Padrão: now() Data da matrícula
endDate DateTime Opcional Data do fim da matrícula

Restrições:

  • Combinação única de studentId e classId

Relacionamentos:

  • student: Muitos-para-Um com Student (obrigatório)
  • class: Muitos-para-Um com Class (obrigatório)

Frequency (Frequência)

Rastreia a presença de estudantes nas turmas.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da frequência
studentId Int Obrigatório, Chave Estrangeira Referência ao estudante
classId Int Opcional, Chave Estrangeira Referência à turma
date DateTime Apenas data, Obrigatório Data do registro de presença
status FrequencyStatus Padrão: PRESENTE Status de presença
notes String Opcional Observações sobre a presença

Relacionamentos:

  • student: Muitos-para-Um com Student (obrigatório)
  • class: Muitos-para-Um com Class (opcional)

Família e Formulários

FamilyMember (Membro da Família)

Representa familiares ou responsáveis dos estudantes com informações socioeconômicas detalhadas.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do familiar
studentId Int Obrigatório, Chave Estrangeira Referência ao estudante
addressId Int Obrigatório, Chave Estrangeira Referência ao endereço
fullName String Obrigatório Nome completo do familiar
relationship String Obrigatório Parentesco com o estudante
phoneNumber String Obrigatório Número de telefone para contato
email String Opcional Email para contato
socialName String Opcional Nome social do familiar
race Race Opcional Raça/cor do familiar
gender Gender Opcional Identidade de gênero
educationLevel EducationLevel Opcional Nível de escolaridade
dateOfBirth DateTime Opcional, Apenas data Data de nascimento
socialPrograms SocialProgram Opcional Programas sociais que participa
employmentStatus EmploymentStatus Opcional Situação empregatícia

Relacionamentos:

  • student: Muitos-para-Muitos com Student
  • address: Muitos-para-Um com Address (obrigatório)

Form (Formulário)

Representa formulários disponíveis no sistema.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do formulário
submissionDate DateTime Padrão: now() Data de criação do formulário
type FormType Obrigatório Tipo do formulário
title String Obrigatório Título do formulário

Relacionamentos:

  • questions: Um-para-Muitos com Question

Question (Pergunta)

Representa perguntas pertencentes a formulários.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da pergunta
formId Int Obrigatório, Chave Estrangeira Referência ao formulário
statement String Obrigatório Texto da pergunta
isRequired Boolean Padrão: false Se a pergunta é obrigatória

Relacionamentos:

  • form: Muitos-para-Um com Form (obrigatório)
  • answers: Um-para-Muitos com Answer

Answer (Resposta)

Representa respostas de estudantes a perguntas específicas.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único da resposta
questionId Int Obrigatório, Chave Estrangeira Referência à pergunta
studentId Int Obrigatório, Chave Estrangeira Referência ao estudante
content String Obrigatório Conteúdo da resposta

Relacionamentos:

  • question: Muitos-para-Um com Question (obrigatório)
  • student: Muitos-para-Um com Student (obrigatório)

Documentos

Doc (Documento)

Representa documentos associados aos estudantes.

Campo Tipo Restrições Descrição
id Int Chave Primária, Auto-incremento Identificador único do documento
studentId Int Obrigatório, Chave Estrangeira Referência ao estudante
slug String Único, Obrigatório Identificador único do documento
type String Obrigatório Tipo do documento
name String Opcional Nome do documento
enrollmentDate DateTime Padrão: now() Data de cadastro do documento

Relacionamentos:

  • student: Muitos-para-Um com Student (obrigatório)
Clone repository
  • Banco de Dados
  • Escopo
  • Home
  • arquitetura
  • frontend
  • processo