Las bases de datos tienen mucha jerga, y la cardinalidad es una de esas palabras que la gente experimentada tiende a olvidar que no conocía hace tiempo. Pero si no la conoces -y se necesita un tiempo para sentirse realmente cómodo con la cardinalidad- es súper confuso cuando el DBA simplemente la suelta en medio de una frase sin frenar. No temas: La cardinalidad significa dos cosas en las bases de datos. Para nuestros propósitos, una importa mucho más que la otra. La definición de cardinalidad que importa mucho para el rendimiento de las consultas es la cardinalidad de los datos. El primer significado de la cardinalidad es cuando se diseña la base de datos, lo que se llama modelado de datos. En este sentido, la cardinalidad significa si una relación es uno-a-uno, muchos-a-uno, o muchos-a-muchos. La definición oficial de cardinalidad en los diccionarios no relacionados con las bases de datos es matemática: el número de valores de un conjunto. Cuando se aplica a las bases de datos, el significado es un poco diferente: es el número de valores distintos en una columna de la tabla, en relación con el número de filas de la tabla. Los valores repetidos en la columna no cuentan. Sin embargo, no solemos hablar de cardinalidad como un número. Es más común hablar simplemente de cardinalidad «alta» y «baja». Una gran cantidad de valores distintos es una cardinalidad alta; una gran cantidad de valores repetidos es una cardinalidad baja.Imagina una tabla de descripción de productos en una base de datos de comercio electrónico:La columna ProductID
va a ser de alta cardinalidad porque probablemente es la clave primaria de esa tabla, por lo que es totalmente única. Si hay mil filas en la tabla, habrá mil valores ProductID
diferentes. La columna Category
tendrá mucha repetición, y será de cardinalidad baja o media: quizás 50 o 100 valores Category
diferentes. Name
es probablemente de alta cardinalidad, a menos que haya más en esta tabla de lo que parece (como múltiples filas para diferentes colores de productos y otras variaciones).La cardinalidad impacta mucho en el rendimiento, porque influye en el plan de ejecución de la consulta. El planificador examinará las estadísticas de las columnas y las utilizará para averiguar, entre otras cosas, con cuántos valores es probable que coincida una consulta. Dependiendo de lo que encuentre, puede utilizar diferentes planes de ejecución de consultas para intentar obtener el mejor rendimiento. Así que la próxima vez que alguien diga «alta cardinalidad» en una frase sin detenerse, sabrás que realmente quiere decir «muchos valores diferentes». Y ahí lo tienes!