Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W 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
  • Vincula
  • Wiki
  • Wiki
  • Banco de Dados

Banco de Dados · Changes

Page history
Update Banco de Dados authored Nov 03, 2025 by Flávia Carvalho Tavaniello's avatar Flávia Carvalho Tavaniello
Hide whitespace changes
Inline Side-by-side
Banco-de-Dados.md
View page @ 2d0ec60b
| [Home](home) | [Convenções e Diretrizes](Convenções e Diretrizes) | [Tecnologias](Tecnologias) | [Banco de dados](Banco de Dados) | | [Home](home) | [Convenções e Diretrizes](Convenções e Diretrizes) | [Tecnologias](Tecnologias) | [Banco de dados](Banco de Dados) |
| --- | --- | --- | --- | | --- | --- | --- | --- |
O banco de dados escolhido foi o PostgreSQL que roda dentro de um container Docker, o que garante que todos os desenvolvedores possuam o mesmo ambiente. Foi escolhido o banco de dados relacional devido a integridade e coesão que os dados devem apresentar entre si para que sejam utilizados e manipulados ao longo da aplicação. Além disso, a nível de código, foi utilizada a biblioteca SQLAlchemy, responsável por facilitar o mapeamento das entidades como classes de Python. Para o banco de dados do projeto Vincula, foram unidos dois sistemas de banco de dados: PostgreSQL e Neo4J. Ambos rodam dentro de um container Docker, o que garante que todos os desenvolvedores possuam o mesmo ambiente. Foi escolhido o banco de dados relacional devido a integridade e coesão que os dados devem apresentar entre si para que sejam utilizados e manipulados ao longo da aplicação. Foi somado a ele um banco de dados não relacional, o Neo4J, que é um banco de dados orientado a grafo, o que facilita a criação dos grafos de vínculos entre os dados de uma investigação. Além disso, a nível de código, foi utilizada a biblioteca SQLAlchemy, responsável por facilitar o mapeamento das entidades como classes de Python.
Em relação a modelagem, existem oito tabelas que se relacionam no projeto conforme a imagem abaixo. Em relação a modelagem, existem cinco tabelas no banco de dados relacional e mais duas entidades centrais para o banco não relacional que se interconectam no projeto conforme a imagem abaixo.
![BANCO_VINCULA__1_](uploads/9a6726e421cdfec119af3238b2f304b0/BANCO_VINCULA__1_.jpeg) ![BANCO_VINCULA__3_](uploads/13226be508fd8fa00a1189ca7fb517b5/BANCO_VINCULA__3_.jpeg)
### Tabelas PostgreSQL:
- **User:** armazena as informações sobre os usuários da aplicação. Possui campo de _id _(chave primária), _name_, _password_ e _role_(indica o cargo do usuário no sistema e vai ser usado para níveis de permissão na aplicação) - **User:** armazena as informações sobre os usuários da aplicação. Possui campo de _id _(chave primária), _name_, _password_ e _role_(indica o cargo do usuário no sistema e vai ser usado para níveis de permissão na aplicação)
![image](uploads/1620d5811634f52ee7dad053519246bf/image.png)
- **Case:** armazena as informações de cada caso a ser investigado. Possui campo de _id _(chave primária), _case_number _(utilizado pelo MP para identificar um caso), _name_, _description_, _status_, _creation_date_, _update_date_ e _owner_ (indica quem é o dono do caso, pois é uma chave estrangeira para a tabela de User). - **Case:** armazena as informações de cada caso a ser investigado. Possui campo de _id _(chave primária), _case_number _(utilizado pelo MP para identificar um caso), _name_, _description_, _status_, _creation_date_, _update_date_ e _owner_ (indica quem é o dono do caso, pois é uma chave estrangeira para a tabela de User).
![image](uploads/faec0382812368ac75ce2210051b6f4a/image.png)
- **Archive:** armazena as informações dos arquivos submetidos pelo usuário para poderem compor o caso. Possui campo de _id_ (chave primária), _url_ (vai indicar o arquivo em si), _creation_date_ e _case_id_ (relaciona o arquivo com o caso do qual faz parte)
- **Suspect:** são as pessoas suspeitas de um caso. Possui _id_ (chave primária), _name_, _cpf_cnpj_, _phone_number_ e _case_id_ (para poder relacionar o registro com o caso do qual faz parte) - **Suspect:** são as pessoas suspeitas de um caso. Possui _id_ (chave primária), _name_, _cpf_cnpj_, _phone_number_ e _case_id_ (para poder relacionar o registro com o caso do qual faz parte)
![image](uploads/63fceebf8dcd9d4158cdd5a8c90b1fb6/image.png)
- **Analyzed_person:** é uma tabela auxiliar para armazenar os dados de pessoas ou empresas citadas ao longo dos arquivos de fontes externas, como o simba, sittel e o rif. Possui atributo de _id_ (chave primária), _cpf_cnpj_, _name_, _phone_, _address_. - **Archive:** armazena as informações dos arquivos submetidos pelo usuário para poderem compor o caso. Possui campo de _id_ (chave primária), _url_ (vai indicar o arquivo em si), _creation_date_ e _case_id_ (relaciona o arquivo com o caso do qual faz parte)
![image](uploads/6eed2065c14340b8a3c5bd8601f2a0c2/image.png)
- **Data_simba_detailed_extract:** armazena as informações provenientes do SIMBA. Possui atributo de _id_ (chave primária), _fk_analysed_person_ (chave estrangeira para tabela de analyzed_person), _name_ e _fk_archive_id_ (chave estrangeira para a tabela de Archive).
- **Data_sittel:** armazena as informações provenientes do SITTEL. Possui atributo de _id_ (chave primária), _originating_number_ (número que fez a ligação), _destination_number_ (número que recebeu a ligação), _fk_subscriber_origin_ (relaciona na tabela de analyzed_person quem é o dono da linha que fez a ligação), _fk_assigned_origin_ (relaciona na tabela de analyzed_person quem foi a pessoa que de fato fez a ligação), _fk_subscriber_destination_ (relaciona na tabela de analyzed_person quem é o dono da linha que recebeu a ligação), _fk_assigned_destination_ (relaciona na tabela de analyzed_person quem é que de fato recebeu a ligação), _fk_archive_id_ (chave estrangeira para a tabela de Archive).
- **Data_riffs:** armazena as informações provenientes do RIF. Possui atributo de _id_ (chave primária), _indexer_, _rif_number_, _name_involved_, _fk_analysed_person_ (chave estrangeira para tabela de analyzed_person), _type_envolved_, _fk_archive_id_ (chave estrangeira para a tabela de Archive).
![image](uploads/6365b97327273ee5e02ba2b57e9b66c6/image.png)
![image](uploads/37f3841790a1f60d7b60bc265a2b8236/image.png)
![image](uploads/64f4cdc899e3ab7305b0a05430ec565d/image.png)
![image](uploads/692e884479e8e46e89258769368cefbe/image.png)
![image](uploads/df0041ec3051bce621f5e35d265f7dd6/image.png)
- **User_Case:** é uma tabela auxiliar para identificar quais usuário estão presentes em qual caso, com atributo de ID (chave primária), case_id (chave estrangeira para a tabela de casos), user_id (chave estrangeira para a tabela de usuários) e creation_date (registro de qual essa ligação foi feita).
### Entidades Neo4J:
- **Case:** é um nó que representa um caso investigativo. Cada caso é identificado pelo seu case_number, e inclui informações sobre: origem (tipo do arquivo: SIMBA, SITTEL ou RIF), lista de arquivos nos quais o caso foi identificado (file_name[]), e identificador do caso no sistema relacional (vincula_case_id), que corresponde diretamente ao campo CASE.id no PostgreSQL.
- **Person:** é um nó representa um sujeito envolvido nos casos, podendo ser uma pessoa física ou jurídica. Cada nó de pessoa inclui atributos como: identity (CPF, CNPJ), name (nome do titular, investigado ou entidade), phone_number[] (número de telefone encontrado nos dados), e file_name[] (arquivos em que a pessoa aparece), e vincula_case_id (referência ao caso correspondente no sistema relacional).
- **Involved_in:** é uma aresta que conecta entidades do grafo e indica a relação de envolvimento de uma pessoa em um caso.
\ No newline at end of file
Clone repository
  • Arquitetura
  • Banco de Dados
  • Convenções e Diretrizes
  • Designs e Mockups
  • Tecnologias
  • Home