Maria Gabriela Lustosa Oliveira - RA: 188504
Gabriel Cabral Romero Oliveira - RA: 247700
Flavia Juliana Ventilari dos Santos - RA: 260438
- Objetivo do Projeto
- Modelos
- Datasets Utilizados
- Estrutura do Repositório
- Tecnologias Utilizadas
- Como Executar o Projeto
- Resultado das Queries
Este repositório contém o Projeto 2 desenvolvido para a disciplina MC536 – Banco de Dados da Unicamp (1º semestre de 2025). Ele é uma continuação e refatoração do Projeto 1, no qual foi utilizada modelagem relacional em PostgreSQL.
Neste segundo projeto, os dados foram reorganizados para um banco de dados orientado a grafos, utilizando o Neo4j. Essa mudança permitiu explorar relações mais complexas entre as entidades (como cursos, instituições, áreas de atuação e empregos), possibilitando análises mais eficientes e sofisticadas, que a modelagem relacional não permite representar.
Houve a possibilidade de decidir entre três diferentes bancos de dados para realizar a refatoração indo do modelo relacional para um não relacional. Dentre MOngoDB, DuckDB e Neo4j, optamos pelo último. Isso se deu levando em consideração alguns aspectos:
-
Forma de armazenamento de arquivos: a organização dos dados em nós representando as entidades e arestas, os relacionamentos, é adequada ao cenário centrado em relacionamentos, os quais precisam ser modelados de forma eficiente. Uma vantagem da modelagem por grafos é justamente essa: geralmente conseguimos extrair informações mais relevantes das areas que dos nós.
-
Linguagem de processamento de consultas: o Neo4j usa a lingaugem Cypher, que é pensada para consultas em grafos. Sua sintaxe é adequada para percorrer caminhos e acessar relacionamentos complexos, o que é essencial para as queries propostas neste projeto, visto que envolvem conexões em vários níveis.
-
Processamento e controle de transações: há suporte à ACID (Atomicity, Consistency, Isolation, Durability), o que garante a integridade relacional das operações. Isso é importante para esse projeto, pois ele envolve a manipulação de dados interdependentes e sensíveis à consistência.
-
Mecanismos de recuperação e segurança: Neo4j tem suporte robusto a controle de acesso, logs transacionais e backups automáticos, além de funcionalidades específicas para auditoria e rastreamento de alterações nos dados.
Este projeto utiliza dados provenientes de duas principais fontes públicas nacionais: RAIS (Relação Anual de Informações Sociais) e Censo da Educação Superior (Inep), abrangendo o período de 2020 a 2023. Os dados foram selecionados e organizados de modo a possibilitar análises combinadas entre mercado de trabalho e formação acadêmica no Brasil.
- Dados do Censo da Educação Superior (Inep): indicadores_educacao.csv
- Dados RAIS sobre empregos e remuneração: rais_tabela4_joined.csv e rais_tabela6_joined.csv
- Arquivos pré-processados e compatibilizados para uso no Neo4j
- Incluem dados de 2021 e 2023, tanto para a Tabela 4 (empregos formais) quanto para a Tabela 6 (remuneração)
📦 projeto_2_MC536
├── 📁 datasets
│ ├── indicadores_educacao.csv
│ ├── rais_tabela4_joined.csv
│ ├── rais_tabela6_joined.csv
├── 📁 models
│ └── projeto_neo4j.svg
├── 📁 preprocessed_dataset
│ ├── indicadores_trajetoria_educacao_superior_2019_2023.csv
│ ├── RAIS_ano_base_2021_TABELA4.csv
│ ├── RAIS_ano_base_2021_TABELA6.csv
│ ├── RAIS_ano_base_2023_TABELA4.csv
│ └── RAIS_ano_base_2023_TABELA6.csv
├── 📁 python_files
│ ├── create_and_fill_database.py
│ ├── process_datasets.py
│ └── queries.py
├── 📁 queries
│ ├── query_1_result.csv
│ ├── query_2_result.csv
│ ├── query_3_result.csv
│ ├── query_4_result.csv
│ └── query_5_result.csv
├── requirements.txt
└── README.md
Banco de Dados: Neo4j>=5.10
Linguagem de Programação: Python==3.12.7
Bibliotecas Python:
pandas==2.2.3
numpy==2.2.5
neo4j==5.28.1
argparse==1.1
rapidfuzz==3.13.0
Ferramenta: Neo4j Desktop para visualização e execução de queries
git clone https://github.com/mariagabi-lustosa/projeto_2_MC536.git
cd projeto_2_MC536python -m venv venv
source venv/bin/activatepip install -r requirements.txtpython python_files/process_datasets.pyConfigure a URL, usuário e senha do seu banco Neo4j no script create_and_fill_database.py, e execute:
python python_files/create_and_fill_database.pypython python_files/queries.py| Query | Descrição |
|---|---|
query_1_result.csv No setor de agrupecuária, quais instituições oferecem cursos em áreas de atuação relacionadas a ele e qual o número de pessoas empregadas neste setor em cada município? |
Identifica regiões com maior empregabilidade para alunos de determinada área |
query_2_result.csv Procurando por um curso específico, buscamos quais são as instituições que oferecem-no e qual a média de remuneração do estado no qual ela está localizada |
Pode ajudar estudantes a escolher instituições em regiões com melhores perspectivas salariais, caso esse seja o objetivo. Saber a média salarial do estado como um todo é interessante pois muitas vezes as pessoas são graduadas em uma área e acabam migrando para outra ao se formarem ou ao longo da vida |
query_3_result.csv Em quais áreas de atuação os setores empregaram mais pessoas em 2023 no estado de São Paulo, com exceção de sua capital |
Relaciona formação acadêmica por área de atuação com a demanda do mercado local |
query_4_result.csv Quais cursos têm mais evasão nas instituições e de quais estados? |
Ajuda a identificar cursos críticos com alta evasão |
query_5_result.csv Qual a relação entre estados que tiveram queda na remuneração média e o aumento da taxa de desistência dos cursos de graduação? |
Ajuda a entender se a diminuição da remuneração média está correlacionada com o aumento da taxa de desistência dos cursos |
Este projeto é de uso acadêmico e está sujeito às diretrizes da disciplina MC536 da Unicamp oferecida no primeiro semestre de 2025.