Migração da base de dados
Documentação referente a migração da base de dados
Este documento tem como objetivo, apresentar informações básicas e técnicas para auxiliar os tribunais na migração dos dados para a base de dados intermediária criada pela equipe da plataforma socioeducativa .
Migração de banco de dados é o uso de um serviço de migração de banco de dados para migrar dados de um banco de origem para um ou mais bancos de destino. Quando uma migração é concluída, o conjunto de dados nos bancos de dados de origem passa a residir totalmente no banco de destino, embora possivelmente de maneira reestruturada.
O fluxo do processo se dará da seguinte forma, cada tribunal ficará responsável por criar sua própria base de dados com base nas informações descritas neste documento, migrar os dados obedecendo a estrutura definida e enviar o dump do banco de dados para o local estabecido pela equipe da plataforma socioeducativa. Os dados por sua vez serão validados e caso nenhuma inconsistência seja encontrada, os mesmos serão enviados para a base oficial Socioeducativo. Havendo qualquer inconsistência, será gerando um relatório de erros e disponibilizado aos tribunais.
O processo de migração da base de dados será realizado conforme o diagrama a seguir:


As seguintes informações serão abordadas neste documento:
- Terminologia;
- Banco de dados utilizado;
- Estrutura da base de dados de destino;
- Dicionário de dados com informações detalhadas dos campos;
- Verificação de integridade e relatório de erros.
Terminologia
A seguir a definição dos principais termos utilizados neste documento:
- Migração de banco de dados - Transferência dos dados de bancos de origem para banco de destino, com o objetivo de alimentar e continuar o armazenamento em outro ambiente. A migração possivelmente transforma os dados durante a transferência;
- Tribunal - Instituição jurídica responsável por transferir os dados de suas bases para base da plataforma socioeducativa;
- Base de dados intermediária - Banco de dados que receberá as informações dos tribunais e realizará as validações para que posteriormente seja migrado para a base da plataforma;
- Base de dados socioeducativo - Banco de dados oficial que receberá os dados após a validação da base intermediária;
Banco de dados utilizado
O banco de dados utilizado pela plataforma socioeducativa é o PostgreSQL em ambiente docker na versão 13-alpine
version: "3.3"
services:
db-postgres:
image: postgres:13-alpine
container_name: db-postgres
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=database
ports:
- "5432:5432"
networks:
- db-network
networks:
db-network:
driver: bridge
Link da documentação do PostgreSQL e do Docker para mais detalhes.
Após criação do database, executar o script para a criação das tabelas.
Estrutura da base de dados de destino
O diagrama de ER abaixo demonstra quais são as entidades, atributos e seus relacionamentos:


Dicionário de dados com informações detalhadas dos campos
Nessa seção é possível verificar o dicionário de dados com as tabelas, campos, tipos, tamanhos e campos correspondentes entre a base de migração e a do socioeducativo.
tb_adolescente
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_adolescente | int8 | obrigatório | Não se aplica |
| cartorio_certidao_nascimento | varchar(40) | opcional | socioeducativo.tb_documento_certidao_nascimento.cartorio_cert_nasc |
| folha_certidao_nascimento | varchar(12) | opcional | socioeducativo.tb_documento_certidao_nascimento.folha_cert_nasc |
| livro_certidao_nascimento | varchar(12) | opcional | socioeducativo.tb_documento_certidao_nascimento.livro_cert_nasc |
| numero_certidao_nascimento | varchar(40) | opcional | socioeducativo.tb_documento_certidao_nascimento.numero |
| numero_cpf | varchar(11) | opcional | socioeducativo.tb_documento_cpf.numero |
| data_nascimento | date | obrigatório | socioeducativo.tb_adolescente.data_nascimento |
| data_nascimento_presumida (sim ou não) | varchar(1) -> S ou N | obrigatório | socioeducativo.tb_adolescente.data_nascimento_presumida |
| identidade_genero (enum) ! | varchar(18) | obrigatório | socioeducativo.tb_adolescente.identidade_de_genero |
| naturalidade | varchar(80) | opcional | socioeducativo.tb_adolescente.naturalidade |
| nome | varchar(150) | obrigatório | socioeducativo.tb_adolescente.nome |
| sobrenome | varchar(150) | obrigatório | socioeducativo.tb_adolescente.sobrenome |
| nome_mae | varchar(150) | opcional | socioeducativo.tb_adolescente.nome_mae |
| nome_pai | varchar(150) | opcional | socioeducativo.tb_adolescente.nome_pai |
| nome_social | varchar(150) | opcional | socioeducativo.tb_adolescente.nome_social |
| orientacao_sexual (enum) ! | varchar(19) | obrigatório | socioeducativo.tb_adolescente.orientacao_sexual |
| possui_nome_social (sim ou não) | varchar(1)-> S ou N | obrigatório | socioeducativo.tb_adolescente.possui_nome_social |
| raca_cor (enum) ! | varchar(20) | obrigatório | socioeducativo.tb_adolescente.raca_cor |
| data_expedicao_rg | date | opcional | socioeducativo.tb_documento_rg.data_exp_rg |
| estado_rg | varchar(2) | opcional | socioeducativo.tb_documento_rg.estado_rg |
| numero_rg | varchar(40) | opcional | socioeducativo.tb_documento_rg.numero |
| orgao_expedidor_rg | varchar(10) | opcional | socioeducativo.tb_documento_rg.orgao_exp_rg |
| sexo_biologico (enum) ! | bpchar(1)->F,M ou I | obrigatório | socioeducativo.tb_adolescente.sexo_biologico |
tb_tribunal_sistema
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_tribunal_sistema | int8 | obrigatório | não se aplica |
| nome_sistema | varchar(100) | obrigatório | socioeducativo.tb_tribunal_sistema.nome |
| url_sistema | varchar(150) | obrigatório | socioeducativo.tb_tribunal_sistema.url |
| tr_tribunal | bpchar(2) | obrigatório | socioeducativo.tb_tribunal.tr |
| nome_tribunal | varchar(150) | obrigatório | socioeducativo.tb_tribunal.nome |
| app_name | varchar(50) | obrigatório | socioeducativo.tb_tribunal_sistema.app_name |
| seguimento_poder_judiciario | int4 | obrigatório | socioeducativo.tb_tribunal_sistema.segmento_poder_judiciario |
| grau_justica | int4 | obrigatório | socioeducativo.tb_tribunal_sistema.grau_justica |
tb_processo
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_processo | int8 | obrigatório | não se aplica |
| id_tribunal_sistema | int8 | obrigatório | não se aplica |
| numero_processo | varchar(20) | obrigatório | socioeducativo.tb_processo.numr_processo |
| orgao (Nome da vara) | varchar(150) | obrigatório | socioeducativo.tb_processo.orgao |
| nome_jurisdicao | varchar(150) | obrigatório | socioeducativo.tb_processo.nome_jurisdicao |
| codigo_origem_jurisdicao | varchar(4) | obrigatório | socioeducativo.tb_processo.codigo_origem_jurisdicao |
| tipo_processo (enum) ! | varchar(50) | obrigatório | socioeducativo.tb_processo.tipo_processo |
| situacao_processo (enum) ! | varchar(40) | obrigatório | socioeducativo.tb_processo.situacao_processo |
| id_processo_referencia | int8 | opcional | socioeducativo.tb_processo.processo_referencia |
| nome_magistrado_responsavel | varchar(250) | obrigatório | socioeducativo.tb_usuario.nome |
| cpf_magistrado_responsavel | varchar(11) | obrigatório | socioeducativo.tb_usuario.cpf |
| nome_serventuario_responsavel | varchar(250) | obrigatório | socioeducativo.tb_usuario.nome |
| cpf_serventuario_responsavel | varchar(11) | obrigatório | socioeducativo.tb_usuario.cpf |
| data_inicio_medida | timestamp | opcional | socioeducativo.tb_cumprimento_medida.data_ingresso_programa |
| ingresso_programa (Sim ou Não) | bpchar(2) -> S, N ou NI | opcional | socioeducativo.tb_cumprimento_medida.ingresso_programa |
| nome_unidade_atendimento_socioeducativo | varchar(150) | opcional | cniups.tb_unidade.nome_estabelecimento |
tb_processo_parte
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_processo | int8 | obrigatório | não se aplica |
| id_adolescente | int8 | obrigatório | não se aplica |
tb_processo_ato_infracional
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_processo | int8 | obrigatório | não se aplica |
| cod_tpu_ato_infracional | varchar(5) | obrigatório | socioeducativo.tb_ato_infracional.cod_tpu |
| descricao | varchar(200) | obrigatório | socioeducativo.tb_ato_infracional.descricao |
| data_fato | date | opcional | socioeducativo.tb_ato_infracional.data_fato |
| local_fato | varchar(150) | opcional | socioeducativo.tb_ato_infracional.local_fato |
tb_processo_medida_socioeducativa
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_processo | int8 | obrigatório | não se aplica |
| cod_tpu_medida | int8 | obrigatório | socioeducativo.tb_medida_socioeducativa.cod_tpu |
tb_ultima_guia_ativa
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_guia | int8 | obrigatório | não se aplica |
| id_processo_apuracao | int8 | obrigatório | não se aplica |
| id_processo_execucao | int8 | opcional | não se aplica |
| id_adolescente | int8 | obrigatório | não se aplica |
| origem_guia (enum origemguia) ! | varchar(40) | obrigatório | socioeducativo.tb_guia.origem_guia |
| data_emissao | timestamp | obrigatório | socioeducativo.tb_guia.data_emissao |
| houve_internacao_provisoria (sim ou não) | varchar(1) -> S ou N | opcional | socioeducativo.tb_guia.houve_internacao_provisoria |
| data_inicio_internacao_provisoria | date | opcional | socioeducativo.tb_guia.data_inicio_internacao |
| data_fim_internacao_provisoria | date | opcional | socioeducativo.tb_guia.data_fim_internacao |
| tipo_guia (enum) ! | varchar(40) | obrigatório | socioeducativo.tb_guia.tipo_guia |
| data_sentenca | date | opcional | socioeducativo.tb_guia.data_sentenca |
| data_transito_julgado | date | opcional | socioeducativo.tb_guia.data_transito_julgado |
| dias_prazo (somente para guia de internação-sanção) | int4 | opcional | socioeducativo.tb_guia.prazo |
| data_decisao_internacao_sancao (somente para guia de internação-sanção) | date | opcional | socioeducativo.tb_guia.data_decisao_internacao_sancao |
| data_decisao_unificao_medidas (somente para guia unificadora) | date | opcional | socioeducativo.tb_guia.data_decisao_unificacao_medidas |
| houve_apreensao_flagrante | varchar(1) -> S ou N | opcional | socioeducativo.tb_guia.houve_apreensao_flagrante |
| data_apreensao_flagrante | date | opcional | socioeducativo.tb_guia.data_apreensao_flagrante |
| data_acordao | date | opcional | socioeducativo.tb_guia.data_acordao |
| id_guia_unificadora | int8 | opcional | socioeducativo.tb_guia.id_guia (auto relacionamento) |
tb_documentos_instruir_guia
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_documento_sistema_origem | int8 | obrigatório | socioeducativo.tb_documento_instruir_guia.id_doc_autos |
| id_processo | int8 | obrigatório | não se aplica |
| id_guia | int8 | obrigatório | não se aplica |
| id_tipo_documento_associado | int8 | obrigatório | socioeducativo.tb_tipo_documento_associado.id_tipo_documento_associado |
tb_tipo_documento_associado
| Nome Coluna | Tipo/Tamanho | obrigatoriedade | Campo correspondente |
|---|---|---|---|
| id_tipo_documento_associado | int8 | obrigatório | socioeducativo.tb_tipo_documento_associado.id_tipo_documento_associado |
| descricao | varchar(50) | obrigatório | socioeducativo.tb_tipo_documento_associado.descricao |
Verificação de integridade e relatório de erros
Será realizada uma verificação de integridade durante a migração do banco de dados e sua consistência. Essa verificação garante que cada item de dados seja migrado apenas uma vez, que os conjuntos de dados nos bancos de origem e destino sejam idênticos e que a migração seja concluída. Dependendo das regras de modificação de dados, é possível que um item de dados seja extraído, mas não inserido no banco de dados de destino. Caso isso ocorra, será gerado um relatório contendo o motivo do erro e disponibilizado para que o tribunal responsável posso tomar as devidas providências necessárias para o reprocessamento.
Exemplo de relatório de erros
