Volver a datos
Apéndice

INDEPAR-DATA-001

Apéndice para investigadores

INDEPAR

Febrero 2026

Sello INDEPAR INDEPAR-DATA-001
Sección 1

Introducción

El dataset INDEPAR-DATA-001 se distribuye como un archivo CSV plano (flat file) de 2,932 registros y 18 columnas. Esta estructura, conocida en teoría de bases de datos como relación universal, es conveniente para la distribución y portabilidad de datos, pero presenta redundancias y dependencias que el investigador debe comprender antes de utilizarlo en un sistema relacional o en análisis que requieran integridad referencial.

Este apéndice presenta un análisis formal de normalización del dataset hasta la Tercera Forma Normal (3NF), siguiendo la teoría relacional de Codd (1970) y sus extensiones por Boyce y Codd (1974). El objetivo es que el investigador pueda:

  • Identificar las dependencias funcionales presentes en los datos.
  • Comprender las redundancias inherentes a la estructura plana.
  • Diseñar un esquema relacional normalizado si requiere almacenar los datos en una base de datos.
  • Evitar anomalías de inserción, actualización y eliminación al manipular los datos.
Sección 2

La relación universal

El dataset se distribuye como una única relación R con el siguiente esquema:

R(fecha, afore, comision_sobre_saldo_pct, total_cuentas, trabajadores_registrados, trabajadores_asignados, trabajadores_imss, trabajadores_issste, rcv_imss_mdp, rcv_issste_mdp, ahorro_voluntario_mdp, recursos_administrados_mdp, recursos_registrados_mdp, vivienda_mdp, entradas_mdp, salidas_mdp, traspasos_cedidos, traspasos_recibidos)

La clave candidata de esta relación es el par compuesto:

K = {fecha, afore}

Es decir, la combinación de mes y administradora identifica de forma única cada registro. No existe un solo atributo que por sí mismo sea suficiente para distinguir cada tupla: hay múltiples registros por fecha (uno por cada AFORE) y múltiples registros por AFORE (uno por cada mes).

Cardinalidad observada:

  • |fecha| = 331 valores distintos (diciembre 1997 a junio 2025).
  • |afore| = 10 valores distintos.
  • |R| = 2,932 tuplas (no todos los meses tienen las 10 AFOREs, ya que algunas iniciaron operaciones después de 1997).
Sección 3

Dependencias funcionales

Una dependencia funcional X → Y establece que para todo par de tuplas t1 y t2 en R, si t1[X] = t2[X], entonces t1[Y] = t2[Y]. A continuación se identifican las dependencias funcionales presentes en el dataset.

3.1 Dependencias funcionales completas (de la clave)

Las siguientes dependencias son completas respecto a la clave K = {fecha, afore}, es decir, ningún subconjunto propio de K las determina:

{fecha, afore} → comision_sobre_saldo_pct
{fecha, afore} → total_cuentas
{fecha, afore} → trabajadores_registrados
{fecha, afore} → trabajadores_asignados
{fecha, afore} → trabajadores_imss
{fecha, afore} → trabajadores_issste
{fecha, afore} → rcv_imss_mdp
{fecha, afore} → rcv_issste_mdp
{fecha, afore} → ahorro_voluntario_mdp
{fecha, afore} → recursos_administrados_mdp
{fecha, afore} → recursos_registrados_mdp
{fecha, afore} → vivienda_mdp
{fecha, afore} → entradas_mdp
{fecha, afore} → salidas_mdp
{fecha, afore} → traspasos_cedidos
{fecha, afore} → traspasos_recibidos

Nota sobre comisiones: A primera vista, las comisiones de las AFOREs parecerían depender solo del año y la AFORE, ya que CONSAR las autoriza anualmente. Sin embargo, el análisis empírico del dataset revela que en 10 casos las comisiones cambian dentro del mismo año calendario (por ejemplo, Coppel pasó de 3.30% a 1.94% durante 2009). Por tanto, la dependencia funcional completa {fecha, afore} → comision es correcta; un atributo derivado como {ano, afore} no sería suficiente.

3.2 Dependencias transitivas

Se identifican las siguientes dependencias transitivas dentro de la relación, es decir, dependencias de la forma K → A → B donde A no es clave:

3.2.1 Cuentas totales como atributo derivado

Se observa empíricamente que:

total_cuentas = trabajadores_registrados + trabajadores_asignados

Esto constituye una dependencia funcional transitiva:

  • {fecha, afore} → {trabajadores_registrados, trabajadores_asignados}
  • {trabajadores_registrados, trabajadores_asignados} → total_cuentas

El atributo total_cuentas es derivable a partir de otros atributos no clave. Su presencia en la relación introduce redundancia: si se modifica trabajadores_registrados sin actualizar total_cuentas, se genera una inconsistencia. Esta es la anomalía de actualización clásica que la normalización busca eliminar.

3.2.2 Recursos registrados como atributo derivado

De forma análoga, los recursos registrados en el SAR son una composición de otros campos:

recursos_registrados_mdp ≈ recursos_administrados_mdp + vivienda_mdp + [bono ISSSTE] + [recursos en Banxico]

La relación no es exacta porque dos componentes (bono de pensión ISSSTE y recursos depositados en Banco de México) no están presentes como columnas individuales en el dataset. Esto representa una dependencia transitiva parcialmente observable: el investigador puede verificar que recursos_registrados ≥ recursos_administrados + vivienda, pero la diferencia corresponde a componentes no incluidos en el archivo plano.

3.3 Resumen de dependencias

Tabla 1. Dependencias funcionales identificadas

Tipo Determinante Dependiente Implicación
Completa {fecha, afore} comision_sobre_saldo_pct Cumple 2NF
Completa {fecha, afore} trabajadores_registrados Cumple 2NF
Completa {fecha, afore} trabajadores_asignados Cumple 2NF
Completa {fecha, afore} recursos_administrados_mdp Cumple 2NF
Transitiva {trab_reg, trab_asig} total_cuentas Viola 3NF
Transitiva parcial {rec_admin, vivienda, ...} recursos_registrados_mdp Viola 3NF
Sección 4

Primera Forma Normal (1NF)

Una relación está en 1NF si y solo si:

  1. Todos los atributos contienen valores atómicos (no hay conjuntos, listas ni estructuras anidadas).
  2. No hay grupos repetitivos.
  3. Existe una clave primaria que identifica de forma única cada tupla.

Evaluación del dataset

Tabla 2. Evaluación de 1NF

Criterio Resultado Observación
Valores atómicos Cumple Cada celda contiene un único valor numérico o texto. No hay listas ni valores compuestos.
Sin grupos repetitivos Cumple No hay columnas como recurso_1, recurso_2, ..., recurso_n. Cada tipo de recurso tiene su propia columna con semántica distinta.
Clave primaria definida Cumple K = {fecha, afore} identifica de forma única cada registro. No se observan duplicados.

Conclusión: El dataset INDEPAR-DATA-001 cumple con la Primera Forma Normal (1NF).

Sección 5

Segunda Forma Normal (2NF)

Una relación está en 2NF si y solo si:

  1. Está en 1NF.
  2. Todo atributo no clave depende funcionalmente de toda la clave primaria, no de un subconjunto propio de ella (no hay dependencias parciales).

La 2NF es relevante únicamente cuando la clave primaria es compuesta, como en nuestro caso donde K = {fecha, afore}.

Análisis de dependencias parciales

Para que exista una violación de 2NF, deberíamos encontrar algún atributo no clave que dependa solamente de fecha o solamente de afore.

Tabla 3. Análisis de dependencias parciales

Posible dependencia parcial Resultado Justificación
{afore} → comision? No La comisión de cada AFORE cambia a lo largo del tiempo. Una misma AFORE tiene distintas comisiones en distintas fechas.
{fecha} → comision? No En una misma fecha, cada AFORE tiene una comisión distinta.
{afore} → recursos? No Los recursos de cada AFORE cambian mes a mes.
{fecha} → recursos? No En una misma fecha, cada AFORE administra montos distintos.

Ningún atributo no clave depende de un subconjunto propio de la clave. Todos los atributos requieren conocer tanto la fecha como la AFORE para ser determinados.

Conclusión: El dataset cumple con la Segunda Forma Normal (2NF). No existen dependencias parciales.

Nota académica: el caso de las comisiones

Un análisis superficial podría sugerir que la comisión depende de {ano, afore} en lugar de {fecha, afore}, dado que CONSAR las autoriza con periodicidad anual. Sin embargo, el examen empírico del dataset revela que en al menos 10 combinaciones (ano, afore) la comisión varía dentro del mismo año. Esto ocurrió principalmente en 2008-2009, durante la transición del régimen de comisión sobre flujo al régimen sobre saldo. Por ejemplo:

  • Coppel 2009: inició el año en 3.30% y lo cerró en 1.94%.
  • Invercap 2009: inició en 2.48% y cerró en 1.93%.
  • Banamex 2009: inició en 1.84% y cerró en 1.75%.

Este hallazgo empírico confirma que la granularidad mensual de la clave es necesaria y que una clave {ano, afore} introduciría una violación de la definición de dependencia funcional.

Sección 6

Tercera Forma Normal (3NF)

Una relación está en 3NF si y solo si:

  1. Está en 2NF.
  2. Ningún atributo no clave depende transitivamente de la clave primaria. Es decir, no existe un atributo no clave A tal que K → A y A → B, donde B es otro atributo no clave.

Dicho de otra forma: todo atributo no clave debe depender de la clave, toda la clave y nada más que la clave.

6.1 Violación identificada: total_cuentas

Como se demostró en la Sección 3, el atributo total_cuentas es la suma de trabajadores_registrados y trabajadores_asignados. Formalmente:

{fecha, afore} → {trabajadores_registrados, trabajadores_asignados} → total_cuentas

Esto es una dependencia transitiva. El atributo total_cuentas no depende directamente de la clave sino a través de otros atributos no clave. Para alcanzar 3NF, este atributo derivado debería eliminarse de la relación (o calcularse dinámicamente en consultas).

6.2 Violación identificada: recursos_registrados_mdp

El atributo recursos_registrados_mdp es una composición que incluye recursos_administrados_mdp, vivienda_mdp y otros componentes no presentes en el dataset (bono de pensión ISSSTE, recursos en Banco de México). Esto constituye una dependencia transitiva parcialmente observable:

{fecha, afore} → {recursos_administrados_mdp, vivienda_mdp, ...} → recursos_registrados_mdp

6.3 Anomalías resultantes

Las dependencias transitivas generan tres tipos de anomalías:

Tabla 4. Anomalías por violación de 3NF

Anomalía Ejemplo en el dataset
Actualización Si se corrige trabajadores_registrados para una tupla pero no se actualiza total_cuentas, el registro se vuelve internamente inconsistente.
Inserción Al insertar una nueva tupla, se debe calcular total_cuentas correctamente o se introduce un dato erróneo. No hay restricción estructural que lo impida.
Eliminación No aplica de forma crítica en este caso, dado que el valor derivado no almacena información independiente que se perdería al eliminar la tupla.

Conclusión: El dataset no cumple con la Tercera Forma Normal (3NF) debido a la presencia de al menos dos atributos derivados que constituyen dependencias transitivas: total_cuentas y recursos_registrados_mdp.

Sección 7

Descomposición a 3NF

Para llevar el dataset a 3NF, se propone la siguiente descomposición sin pérdida (lossless-join decomposition) que preserva todas las dependencias funcionales:

R1: observacion_mensual (relación principal)

R1(fecha, afore, comision_sobre_saldo_pct, trabajadores_registrados, trabajadores_asignados, trabajadores_imss, trabajadores_issste, rcv_imss_mdp, rcv_issste_mdp, ahorro_voluntario_mdp, recursos_administrados_mdp, vivienda_mdp, entradas_mdp, salidas_mdp, traspasos_cedidos, traspasos_recibidos)

Clave primaria: {fecha, afore}

Se eliminan los dos atributos derivados:

  • total_cuentas se obtiene como: trabajadores_registrados + trabajadores_asignados
  • recursos_registrados_mdp se omite (contiene componentes no presentes en el dataset).

Vistas derivadas (views)

Los atributos eliminados pueden reconstruirse en tiempo de consulta. En SQL:

SELECT fecha, afore,
  trabajadores_registrados + trabajadores_asignados AS total_cuentas
FROM observacion_mensual;

Verificación de la descomposición

Tabla 5. Verificación de propiedades de la descomposición

Propiedad Resultado Justificación
Sin pérdida (lossless join) Cumple La descomposición no separa la relación en múltiples tablas, solo elimina columnas derivables. La reunión natural reconstruye el dataset original.
Preservación de dependencias Cumple Todas las dependencias funcionales no transitivas se mantienen en R1.
3NF Cumple No quedan dependencias transitivas. Todo atributo no clave depende directamente de K.
BCNF Cumple Todo determinante es superclave. No hay dependencias funcionales donde el determinante no sea clave candidata.
Sección 8

Esquema relacional extendido

Para un sistema de base de datos completo, el investigador podría considerar una descomposición más granular que separe las dimensiones del dominio. A continuación se presenta un esquema de referencia que, si bien va más allá de lo estrictamente necesario para alcanzar 3NF, sigue principios de modelado dimensional útiles para análisis:

Tabla de dimensión: afore

dim_afore(afore_id PK, nombre, nombre_anterior, fecha_inicio_operaciones, fecha_fin_operaciones, status, absorbida_por, tipo)

Ejemplo: (7, 'principal', NULL, '1997-07-01', NULL, 'activa', NULL, 'privada')
Ejemplo: (18, 'metlife', NULL, '2005-02-24', '2018-05-07', 'fusionada', 'principal', 'privada')

Tabla de hechos: observacion_mensual

fact_observacion(fecha, afore_id FK, comision_sobre_saldo_pct, trabajadores_registrados, trabajadores_asignados, trabajadores_imss, trabajadores_issste, rcv_imss_mdp, rcv_issste_mdp, ahorro_voluntario_mdp, recursos_administrados_mdp, vivienda_mdp, entradas_mdp, salidas_mdp, traspasos_cedidos, traspasos_recibidos)

Clave primaria: {fecha, afore_id}

Este esquema permite:

  • Consultar el historial de fusiones y adquisiciones sin redundancia.
  • Agregar atributos a la dimensión AFORE (grupo financiero, país de origen, regulador) sin modificar la tabla de hechos.
  • Mantener integridad referencial mediante la clave foránea afore_id.
Sección 9

Consideraciones prácticas

9.1 Por qué se distribuye desnormalizado

El dataset se distribuye intencionalmente como un archivo plano (CSV) y no como un esquema normalizado por las siguientes razones:

  • Portabilidad: Un archivo CSV es legible por cualquier herramienta (Excel, R, Python, Stata, SPSS) sin necesidad de un motor de base de datos.
  • Reproducibilidad: El archivo plano corresponde directamente a las fuentes originales de CONSAR en datos.gob.mx, facilitando la verificación.
  • Convención del dominio: Los datasets abiertos de organismos públicos (CONSAR, INEGI, Banxico, FRED, Eurostat) se distribuyen universalmente como archivos planos.

9.2 Recomendaciones para el investigador

  • Si utiliza los datos en un sistema relacional (PostgreSQL, MySQL, SQLite), implemente la descomposición a 3NF descrita en la Sección 7.
  • Si trabaja en un entorno analítico (R, Python/pandas, Stata), el archivo plano es directamente utilizable. Los atributos derivados (total_cuentas, recursos_registrados_mdp) pueden servir como checksum para validar la integridad de los datos.
  • Si realiza series de tiempo, considere que los valores están en pesos nominales. El ajuste por inflación debe realizarse por separado utilizando el INPC publicado por INEGI.

9.3 Valores nulos

Los valores vacíos en el CSV representan datos no disponibles para ese periodo, no ceros. Las principales causas de valores nulos son:

  • comision_sobre_saldo_pct: Nulo antes de marzo 2008 (régimen de comisión sobre flujo).
  • trabajadores_issste: Nulo antes de diciembre 2008 (PensionISSSTE no existía).
  • entradas_mdp, salidas_mdp: Nulo antes de enero 2009 (serie no disponible).
  • Registros de AFOREs inexistentes: Azteca, Coppel, Invercap y PensionISSSTE tienen registros con valores nulos en los años anteriores a su fecha de inicio de operaciones.
Sección 10

Referencias

  1. Codd, E. F. (1970). A Relational Model of Data for Large Shared Data Banks. Communications of the ACM, 13(6), 377-387.
  2. Codd, E. F. (1974). Recent Investigations into Relational Data Base Systems. IBM Research Report RJ1385.
  3. Boyce, R. F. y Chamberlin, D. D. (1974). SEQUEL: A Structured English Query Language. Proceedings of the 1974 ACM SIGFIDET Workshop.
  4. Date, C. J. (2004). An Introduction to Database Systems. 8a edición. Addison-Wesley.
  5. Elmasri, R. y Navathe, S. B. (2016). Fundamentals of Database Systems. 7a edición. Pearson.
  6. CONSAR. Datos abiertos del Sistema de Ahorro para el Retiro. datos.gob.mx. Consultado en febrero de 2026.

Declaraciones

Conflictos de interés: INDEPAR declara la ausencia de conflictos de interés. INDEPAR no tiene relación comercial, financiera ni institucional con ninguna AFORE, entidad financiera o regulador mencionado en este documento.

Fuentes de datos: El dataset INDEPAR-DATA-001 fue construido íntegramente a partir de los datos abiertos publicados por CONSAR en datos.gob.mx.

Alcance: Este documento tiene carácter informativo y no constituye asesoría financiera, legal ni recomendación alguna.