Universidade Federal do Paraná

Laboratório de Banco de Dados

Descrição

Estruturação da base de dados do SAEB 2017 (Sistema de Avaliação da Educação Básica). Podendo esta base ser encontrada no seguinte link: http://portal.inep.gov.br/educacao-basica/saeb. As informações referentes aos dados, encontra-se no diretório Dicionário. A base de dados referente ao projeto, encontra-se no diretório LaboratorioBD/SAEB, onde estão distribuidos entre os arquivos partaa até partaf. Para os dados brutos no formato CSV, estes estão em LaboratorioBD/Data/Parts onde estão distribuidos entre os arquivos microdados_saeb_2017PARTaa até microdados_saeb_2017PARTah.

Ferramentas

Postgress, PgAdmin III+, Python 3.

Compactação dos Dados

Para concatenar os dados do diretório /SAEB, utilize o seguinte comando: ** $cat part* > file.zip **

Para concatenar os dados do diretório /Data/Parts, utilize o seguinte comando: ** $cat microdados_saeb_2017PART* > file.zip **

Metodologia

Passo 1

Download e descompactação da base de dados, no link apresentado na descrição.

Passo 2

Análise e estruturação dos dados, com base nas informações contidas no dicionário.

Passo 3

Decomposição dos dados, criação das tabelas seguindo a 3ª forma normal, relacionamento e diagramas SQL.

Passo 4

Para a inserção dos dados das tabelas normalizadas, foram utilizados os códigos apresentados diretório LaboratorioBD/Scripts/Inserts.

Passo 5

Importação dos dados presentes nos arquivos CSV, senguem esta ordem: TS_ITEM.csv, TS_ESCOLA.csv,TS_PROFESSOR.csv, TS_DIRETOR.csv, TS_ALUNOS_3EM_AG.csv, TS_ALUNOS_3EM_ESC.csv, TS_ALUNOS_5EF.csv, TS_ALUNOS_9EF.csv.

Foi utilizado o seguinte código em Python 3, contido no diretório Script/reduce_data.py para a filtragem dos dados e inserção dos mesmos em suas respectivas tabelas.

Para a importação dos dados, foram utilizados os seguintes campos apresentados pela tabela abaixo, utilizando seus respectivos arquivos de dados.

Tabela Banco de Dados Arquivo de Dados Campos Utilizados
item TS_ITEM.csv id_serie
tipo_prova
disciplina
id_serie_item
id_bloco
id_posicao
id_item descritor_habilidade
gabarito
escola TS_ESCOLA.csv id_prova_brasil
id_uf
id_municipio
id_escola
id_dependencia_adm
id_localizacao
pc_formacao_docente_inicial
pc_formacao_docente_final
pc_formacao_docente_medio
nivel_socio_economico
nu_matriculados_censo_5ef
nu_presentes_5ef
taxa_participacao_5ef
nivel_0_lp5
nivel_1_lp5
nivel_2_lp5
nivel_3_lp5
nivel_4_lp5
nivel_5_lp5
nivel_6_lp5
nivel_7_lp5
nivel_8_lp5
nivel_9_lp5
nivel_0_mt5
nivel_1_mt5
nivel_2_mt5
nivel_3_mt5
nivel_4_mt5
nivel_5_mt5
nivel_6_mt5
nivel_7_mt5
nivel_8_mt5
nivel_9_mt5
nivel_10_mt5
nu_matriculados_censo_9ef
nu_presentes_9ef
taxa_participacao_9ef
nivel_0_lp9
nivel_1_lp9
nivel_2_lp9
nivel_3_lp9
nivel_4_lp9
nivel_5_lp9
nivel_6_lp9
nivel_7_lp9
nivel_8_lp9
nivel_0_mt9
nivel_1_mt9
nivel_2_mt9
nivel_3_mt9
nivel_4_mt9
nivel_5_mt9
nivel_6_mt9
nivel_7_mt9
nivel_8_mt9
nivel_9_mt9
nu_matriculados_censo_3em
nu_presentes_3em
taxa_participacao_3em
nivel_0_lp3
nivel_1_lp3
nivel_2_lp3
nivel_3_lp3
nivel_4_lp3
nivel_5_lp3
nivel_6_lp3
nivel_7_lp3
nivel_8_lp3
nivel_0_mt3
nivel_1_mt3
nivel_2_mt3
nivel_3_mt3
nivel_4_mt3
nivel_5_mt3
nivel_6_mt3
nivel_7_mt3
nivel_8_mt3
nivel_9_mt3
nivel_10_mt3
media_5ef_lp
media_5ef_mt
media_9ef_lp
media_9ef_mt
media_3em_lp
media_3em_mt
in_preenchimento_questionario
professor TS_PROFESSOR.csv id_prova_brasil
id_uf
id_municipio
id_escola
id_dependencia_adm
id_localizacao
id_turma
co_professor
id_serie
in_preenchimento_questionario
diretor TS_DIRETOR.csv id_prova_brasil
id_uf
id_municipio
id_escola
id_dependencia_adm
id_localizacao
in_preenchimento_questionario
alunos TS_ALUNO_3EM_AG.csv
TS_ALUNO_3EM_ESC.csv
TS_ALUNO_5EF.csv
TS_ALUNO_9EF.csv
id_prova_brasil
id_regiao
id_uf
id_municipio6
id_area
id_escola6
id_dependencia_adm
id_localizacao
id_turma
id_turno
id_serie
id_aluno
in_situacao_censo
in_preenchimento_prova
in_presenca_prova
id_caderno
id_bloco_1
id_bloco_2
tx_resp_bloco_1_lp2
tx_resp_bloco_2_lp2
tx_resp_bloco_1_mt2
tx_resp_bloco_2_mt2
in_proficiencia
in_prova_brasil
estrato_aneb
peso_aluno_lp
peso_aluno_mt
proficiencia_lp
erro_padrao_lp
proficiencia_lp_saeb
erro_padrao_lp_saeb
proficiencia_mt
erro_padrao_mt
proficiencia_mt_saeb
erro_padrao_mt_saeb
in_preenchimento_questionario

Passo 6

Para a inserção destes dados, foi utilizado a opção de import automático dos arquivos de dados no PgAdmin.

Os dados de respostas dos formulários contidos nos mesmos arquivos também foram separados em um novo arquivo, utilizando o código, presente no seguinte arquivo: filter.py

Passo 7

Os questionários respondidos por professores, diretores, alunos e escolas(Responsável pela escola) possuem o mesmo padrão de respostas, mudando apenas o conteúdo das questões e a quantidade das mesmas.

Portanto foi criado a tabela "questionario_geral" que possui uma chave primária única além de 125 campos paras as questões que possuem o seguinte padrão <q001, q002, ... , q125>. Além dessa tabela foram criadas tabelas específicas para cada uma das tabelas citadas inicialmente, essas tabelas possuem o seguinte padrão, uma chave primária, uma chave estrangeira referenciando questionario_geral, e outra chave referenciando sua tabela nativa(escola, aluno, professor, diretor, ...).

O script de criação da tabela de questionário geral encontra-se no seguinte arquivo: Questionario_Geral.sql.

O script de criação dos questionários específicos estão especificados aqui: Questionario_Aluno, Questionario_Diretor, Questionario_Escola, Questionario_Professor.

Para inserção dos dados das tabelas, primeiramente foi feito a filtragem dos dados desses arquivos, usando o código em python descrito no seguinte arquivo: reduce_data.py, e então foram importados os dados primeiramente para a tabela questionario_geral usando a importação automática de arquivo csv do pgAdmin.

Passo 8

Com os dados já inseridos na tabela questionario_geral é necessário a inserção dos dados nas tabelas específicas. Pra isso foi utilizado os seguintes scripts: questionario_aluno.sql, questionario_diretor.sql, questionario_escola.sql, questionario_professor.sql.