| Home | Escopo | Gerência | Processo | Design | Configuração | Arquitetura | Banco de Dados | Continuidade |
|---|
Sumário
- Modelo Entidade Relacionamento
- Visão Geral
- Entidades e Atributos
- Relacionamentos
- Documentação Complementar da Arquitetura de Dados
Modelo Entidade Relacionamento
Visão Geral
O esquema do banco de dados organiza todas as informações envolvidas nas operações do GAECO/MPRS. Ele representa desde a operação em si, passando pelos alvos, equipes, agentes, locais, evidências, formulários e registros específicos dos módulos MBA Digital, Compliance e Recupera.
O Target é o eixo central da modelagem, conectando formulários, evidências, reuniões, equipes e demais informações necessárias para a execução das operações.
Entidades e Atributos
Operation
Função: Representa a operação oficial (investigação) conduzida pelo órgão, centralizando os dados administrativos e judiciais.
Campos:
-
id: Identificador único da operação (UUID). -
name: Nome de código ou oficial da operação. -
description: Detalhes descritivos sobre o objetivo da operação. -
status: Estado atual (Planejamento, Em Progresso, Concluída, Cancelada). -
responsible_prosecutor_office: Promotoria ou órgão do Ministério Público responsável. -
responsible_prosecutor: Nome do promotor responsável. -
pic_number: Número do Procedimento Investigatório Criminal (PIC) ou inquérito. -
judicial_process: Número do processo judicial unificado. -
judicial_body: Órgão julgador (ex: 1ª Vara Criminal). -
judicial_authority: Nome do Juiz responsável. -
created_at: Data de criação do registro. -
updated_at: Data da última atualização.
Target
Função: Entidade central que representa o alvo da operação (pessoa ou local a ser abordado) e vincula logística e inteligência.
Campos:
-
id: Identificador único do alvo. -
id_operation: Referência à operação a qual este alvo pertence. -
id_location: Referência ao endereço do alvo. -
id_hospital: Referência ao hospital mais próximo. -
target_number: Número identificador tático do alvo. -
scheduled_date: Data/hora agendada para a abordagem. -
name: Nome completo do alvo (pessoa física). -
rg: Registro Geral (documento de identidade). -
cpf: Cadastro de Pessoas Físicas. -
parents: Filiação (pai e mãe). -
date_of_birth: Data de nascimento. -
briefing_location: Local onde será realizado o briefing da equipe. -
environment_description: Descrição do ambiente (ex: riscos, estrutura). -
relationships: Descrição de vínculos ou comparsas. -
observations: Observações gerais de inteligência ou segurança. -
warrant_url: Link para o arquivo digital do mandado. -
targeted_materials: Lista de materiais esperados para apreensão. -
mba_number: Número do Mandado de Busca e Apreensão. -
ended_at: Data/hora em que a ação no alvo foi finalizada.
Location
Função: Armazena dados geográficos e de endereço físico, geralmente residências ou locais de busca.
Campos:
-
id: Identificador único do local. -
owner: Nome do proprietário do imóvel. -
latitude: Coordenada geográfica (latitude). -
longitude: Coordenada geográfica (longitude). -
image_url: Link para foto da fachada ou mapa. -
address: Nome da rua/logradouro. -
postal_code: CEP. -
number: Número do imóvel. -
complement: Complemento (apto, bloco).
Hospital
Função: Pontos de referência médicos para suporte logístico e emergencial durante a operação.
Campos:
-
id: Identificador único do hospital. -
latitude: Coordenada geográfica. -
longitude: Coordenada geográfica. -
address: Endereço do hospital. -
postal_code: CEP. -
number: Número. -
complement: Complemento.
Agent
Função: Cadastro dos policiais e agentes envolvidos na operação.
Campos:
-
id: Identificador único do agente. -
name: Nome completo. -
ocupation: Cargo ou patente. -
role: Referência ao nível de permissão no sistema. -
institution: Instituição de origem (ex: PC, PF, PM). -
unit: Unidade de lotação. -
rg: Registro Geral. -
cpf: CPF (chave única). -
phone: Telefone de contato. -
password: Hash da senha de acesso.
Team
Função: Define a equipe tática designada para cumprir o mandado em um alvo específico.
Campos:
-
id: Identificador da equipe. -
id_target: Referência ao alvo da equipe. -
leader_id: Referência ao agente líder da equipe.
Team_Agent
Função: Tabela associativa que vincula os agentes às suas respectivas equipes.
Campos:
-
id: Identificador do vínculo. -
id_team: Referência à equipe. -
id_agent: Referência ao agente membro.
Form (Tabela Base)
Função: Registro genérico das ações e formalizações realizadas no local do alvo.
Campos:
-
id: Identificador único do formulário. -
id_target: Referência ao alvo relacionado. -
start_time: Hora de início da ação. -
end_time: Hora de término da ação. -
entry_type: Tipo de entrada (Forçada, Permitida, Ninguém).
Mba_Form (Estende Form)
Função: Detalhamento específico para cumprimento de Mandados de Busca e Apreensão.
Campos:
-
id: Referência ao ID da tabela Form. -
objective: Objetivo da busca. -
additional_info: Informações adicionais.
Compliance_Form (Estende Form)
Função: Detalhamento para cumprimento de ordens judiciais (prisões, conduções).
Campos:
-
id: Referência ao ID da tabela Form. -
issuance_date: Data de emissão da ordem. -
issuing_judge: Juiz emissor. -
arrest_observations: Observações sobre a detenção.
Recovery_Form (Estende Form)
Função: Registro específico para recuperação e sequestro de bens e ativos.
Campos:
-
id: Referência ao ID da tabela Form. -
asset_type: Tipo do bem (Veículo, Imóvel, etc.). -
asset_description: Descrição do bem. -
estimated_value: Valor estimado. -
asset_location: Local onde o bem estava. -
originating_process: Processo de origem.
Seized_Material (Tabela Base)
Função: Registro central de todas as evidências e materiais apreendidos.
Campos:
-
id: Identificador único do material. -
id_target: Referência ao alvo de origem. -
description: Descrição do item. -
type: Categoria do material (Eletrônico, Arma, etc.). -
found_location: Local específico onde foi encontrado. -
seal_number: Número do lacre da evidência. -
image_url: Foto da evidência.
Seized_Money (Estende Seized_Material)
Função: Detalhamento específico para apreensão de numerário.
Campos:
-
id: Referência ao ID da tabela Seized_Material. -
currency: Código da moeda (BRL, USD). -
amount: Valor total.
Seized_Drug (Estende Seized_Material)
Função: Detalhamento específico para apreensão de entorpecentes.
Campos:
-
id: Referência ao ID da tabela Seized_Material. -
drug_type: Tipo da droga. -
amount: Quantidade ou peso.
Meeting
Função: Registro de briefings ou reuniões preparatórias vinculadas a um alvo.
Campos:
-
id: Identificador único da reunião. -
id_target: Referência ao alvo. -
location: Local da reunião. -
scheduled_date: Data e hora agendada.
Role & Permissions
Função: Controle de Acesso Baseado em Funções (RBAC) para usuários do sistema.
Campos (Role):
-
id: ID do perfil. -
title: Nome do perfil. -
description: Descrição do perfil.
Campos (Permission):
-
id: ID da permissão. -
title: Nome da permissão. -
description: Descrição da permissão.
Campos (Role_Permissions):
-
id_role: ID do perfil. -
id_permission: ID da permissão vinculada.
Relacionamentos
-
Operation (1) — (N) Target
-
Location (1) — (N) Target
-
Hospital (1) — (N) Target
-
Target (1) — (N) seized_material
-
Target (1) — (N) seized_drug
-
Target (1) — (N) seized_money
-
Target (1) — (N) meeting
-
Target (1) — (1) mba_form
-
Target (1) — (1) compliance_form
-
Target (1) — (1) recovery_form
-
Team (1) — (N) team_agent
-
Agent (1) — (N) team_agent
Documentação Complementar da Arquitetura de Dados
Escolha do PostgreSQL
O PostgreSQL foi adotado devido à sua confiabilidade, suporte ACID e robustez em cenários de missão crítica. Entre os benefícios:
- integridade transacional
- tipos avançados: JSONB, enums, arrays
- extensões úteis: PostGIS, pgcrypto
- compatibilidade com Hibernate e Docker
Escolha do DBeaver
Ferramenta de gerenciamento utilizada durante o desenvolvimento:
- interface intuitiva
- geração de diagramas ER
- execução de scripts SQL
- importação/exportação de dados
- suporte a SSL e armazenamento seguro de credenciais
Dockerização do Banco
- volumes garantem persistência
- containers isolam comunicação
- scripts de inicialização automatizam setup
- permite reprodutibilidade entre máquinas
Integração com Hibernate (ORM)
Benefícios da adoção do Hibernate/JPA:
- mapeamento direto das entidades
- queries com JPQL e Criteria API
- validação do schema
- suporte a lazy loading e batching
- integração com ferramentas de migração (Flyway/Liquibase)
