Cardinalidad e integridad referencial

La configuración de una fuente de datos, independientemente de cómo combine los datos, requiere comprender la estructura de datos de cada tabla y cómo se pueden combinar. Hay varios elementos clave que deben tenerse en cuenta: 

  • Nivel de detalle: cuán detallados son los datos, su granularidad. Esto se puede considerar como responder a la pregunta "¿qué define una fila?". Para obtener más información sobre la granularidad, consulte Estructurar datos para análisis
  • Campo compartido: debe haber al menos un campo que se pueda utilizar para formar el vínculo entre tablas. Para una unión, estos campos definen la cláusula de unión. En tablas relacionadas, establecen la relación.
  • Cardinalidad: cuántos valores únicos hay para el campo compartido (unicidad). Para obtener más información, consulte la sección siguiente.
  • Integridad referencial: se garantiza que un valor de una tabla tiene una coincidencia en la otra tabla. En otras palabras, no puede haber un registro en una tabla que no tenga un registro correspondiente en la otra tabla. Para obtener más información, consulte la siguiente sección.

Cardinalidad

La cardinalidad en una sola columna o campo se refiere a cómo son los valores únicos. Una baja cardinalidad significa que solo hay unos pocos valores únicos (como en un campo para el color de ojos). Una alta cardinalidad significa que hay muchos valores únicos (como en un campo para números de teléfono).

La cardinalidad entre tablas es similar, pero se refiere a si una fila de una tabla podría vincularse con más de una fila de otra tabla. (Es importante recordar que la cardinalidad no aborda si faltan datos en cualquiera de las tablas. La ausencia de datos que faltan es integridad referencial. Aunque estos conceptos funcionan juntos, son dos atributos diferentes de la relación).

Las opciones son de uno a uno, uno a varios, varios a uno o varios a varios.

Uno a uno

  • Definición: cada valor del campo compartido de una tabla está relacionado como máximo con un valor en el campo compartido de la otra tabla. 
  • Abreviatura: 1:1

Ejemplo: cada coche tiene su propia matrícula y una matrícula es específica de un coche individual. La relación coche-matrícula es de uno a uno.

Tenga en cuenta que incluso si un coche no está registrado o un número de matrícula aún no se ha asignado a un coche, esa discrepancia se describe por la integridad referencial. Un coche solo puede tener una matrícula y una matrícula solo se puede asignar a un coche, por lo que la cardinalidad sigue siendo uno a uno.

 

Uno a varios o varios a uno

  • Definición: cada valor del campo compartido de una tabla se puede asociar a varias filas de la otra tabla (ese valor se repite en la otra tabla).
  • Abreviatura: m:1 o 1:m
  • El orden de las tablas determina si es de varios a uno o de uno a varios (similar a las uniones izquierda y derecha).

Ejemplos: muchos empleados tienen el mismo superior. La relación entre empleados y superior es de varios a uno. La relación entre superior y empleados es de uno a varios.

 

Varios a varios

  • Varios valores del campo compartido en una tabla pueden estar relacionados con varias filas de la otra tabla (los valores del campo compartido se pueden repetir en varias filas de cualquiera de las tablas).
  • Abreviado como m:m.
  • Esta es la configuración predeterminada si no se detecta ninguna otra configuración en la fuente de datos.

Ejemplos: un actor está en muchas películas y una película tiene muchos actores. El actor a la película es una relación de muchos a muchos. Se pueden comprar varios libros en la misma transacción y se puede comprar un libro varias veces. La relación entre ISBN y el ID de pedido es de varios a varios.

 

La cardinalidad se puede especificar en la configuración de Opciones de rendimiento. Para obtener más información, consulte Optimizar las consultas de relación mediante las opciones de rendimiento.

Integridad referencial

Hay un concepto relacionado llamado integridad referencial, lo que significa que una fila de una tabla siempre tendrá una fila coincidente en la otra tabla, según lo determinado por el valor de sus campos compartidos. Si la base de datos no contiene registros de automóviles sin matrículas o matrículas sin automóviles, esa relación tiene integridad referencial.

En Tableau, la integridad referencial se configura en cada lado de la relación. En la configuración de Opciones de rendimiento, Algunos registros coinciden significa que no hay (o no sabe si existe) integridad referencial. Todos los registros coinciden significa que hay integridad referencial. La configuración predeterminada es no dar por sentada la integridad referencial (algunos registros coinciden).

Para obtener más información, consulte Optimizar las consultas de relación mediante las opciones de rendimiento.

Póngase a prueba

¿Puede definir la cardinalidad y la integridad referencial de cada diagrama? ¿Qué significa esto con palabras? 

Ejemplo:

 

Si establecemos la tabla izquierda como libros y la tabla derecha como autores vinculados por el ID de autor, traduzca el diagrama en palabras: 

  • Un libro puede tener varios autores (los registros morados muestran una fila en la tabla de libros a la izquierda correspondiente a varios registros en la tabla de autores a la derecha).
  • Ningún autor tiene más de un libro (cada registro de autor a la derecha lleva solo un registro de libro a la izquierda).
  • No hay libros sin autores (ningún registro de la izquierda no corresponde a un registro de la derecha).
  • Algunos autores pueden no tener libros (el registro de autor gris de la derecha no tiene ningún registro de libro correspondiente a la izquierda).

Haga clic en cada sección a continuación para expandirla.

Compruebe sus conocimientos

Solución

¿Por qué importa?

La configuración correcta de la cardinalidad o la configuración de integridad referencial puede aumentar el rendimiento mediante la optimización de consultas. Las configuraciones incorrectas, sin embargo, pueden dar lugar a problemas de agregación debido a la pérdida o duplicación de datos. La configuración predeterminada de la opción de rendimiento es Varios para la cardinalidad y Algunos registros coinciden para la integridad referencial. Estos solo deben ajustarse si está seguro de las características correctas de sus datos.

Para obtener más información sobre cómo Tableau controla cada configuración, consulte Qué significan los ajustes de cardinalidad e integridad referencial.

Un ejemplo en Tableau

Vamos a explorar lo que sucede cuando la cardinalidad se configura incorrectamente.

Nota: En el ejemplo siguiente se utiliza un subconjunto de tablas del conjunto de datos El conjunto de datos Librería. Puede descargar el libro de trabajo para seguir el ejemplo o descargar los datos sin procesar para crear las fuentes de datos usted mismo. Las tablas utilizadas son Books, Info y Edition del archivo Bookshop.xlsx (conservando solo algunos campos) y LibraryProfile y Catalog del archivo BookshopLibraries.xlsx.

Las tablas Book e Info tienen una relación uno a uno: la tabla Info es, esencialmente, columnas adicionales para la tabla Book. Debido a esto, aunque podrían estar relacionados, tiene sentido unirlos para crear una nueva tabla lógica que tenga todas las columnas. Edition tiene una relación de varios a uno con esta tabla combinada, ya que puede haber varias ediciones para un solo libro, generalmente con diferentes formatos. (Tenga en cuenta que el diagrama siguiente muestra la relación de la tabla Book+Info a Edition, por lo que es de uno a varios).

Edition está relacionada con Catalog como una relación de uno a varios en ISBN. Las tablas Catalog y LibraryProfile están relacionadas de varios a varios en el identificador de biblioteca. El punto clave es que la tabla LibraryProfiles tiene varias filas por librería, una para cada tipo de trabajador (Bibliotecario, Asistente de biblioteca, Técnico de biblioteca). Para obtener más información sobre la estructura de estas tablas, consulte El conjunto de datos Librería.

La configuración correcta

Cuando la relación Catalog-LibraryProfile está configurada correctamente, podemos hacer una visualización simple que muestra el número de personal para cada librería para varios libros. Esta es una visualización tonta, pero es útil como ejemplo. Idle Hour Library tiene 130 empleados independientemente del libro del que estemos hablando. Hay tres valores para el tipo de trabajador, por lo que cada total se compone de tres registros: el número entre paréntesis.

Recuento de trabajadores por librería y título. (Los números entre paréntesis indican el número de registros de cada marca).

La configuración incorrecta: uno a uno

Cuando la relación se establece erróneamente como uno a uno, en la visualización, cada título de Catalog se empareja eficazmente con un solo registro de la tabla LibraryProfile (como se indica en el recuento de registros entre paréntesis).

Recuento de trabajadores por librería y título. (Los números entre paréntesis indican el número de registros de cada marca).

Arriba, podemos ver que cada biblioteca solo muestra su número mínimo de trabajadores. (Consulte los números en negrita en la visualización a continuación. El número más bajo de trabajadores es el número reflejado en el recuento de empleados).

Desglose de trabajadores por tipo y librería.

Para obtener más información sobre cómo las relaciones se convierten en uniones contextuales para una visualización, consulte Introducción al nuevo modelado de datos en Tableau(El enlace se abre en una ventana nueva) en el blog de Tableau.

La configuración incorrecta: usar uniones

Si bien hay maneras de solucionar este tipo de problema (las expresiones de nivel de detalle son comunes), unir tablas que tienen granularidad diferente o "muchas" en su cardinalidad puede causar duplicaciones. Aquí, los recuentos de trabajadores son precisos para los títulos que solo tienen un formato, pero para los libros que tienen dos formatos en la tabla Ediciones, esa duplicación se pasa también a los recuentos de trabajadores (tenga en cuenta los recuentos de registros entre paréntesis que son 6 en lugar de los 3 correctos).

Recuento de trabajadores por librería y título. (Los números entre paréntesis indican el número de registros de cada marca).

La configuración incorrecta: asumir incorrectamente la integridad referencial

Decirle a Tableau que hay integridad referencial (todos los registros coinciden) cuando este no es el caso puede provocar que se eliminen valores. Aquí, estas dos visualizaciones son similares, pero la de la derecha es de una fuente de datos configurada para asumir la integridad referencial. Esa visualización ha perdido los valores nulos. Aunque esto puede estar bien en algunas circunstancias, es importante entender lo que representan esos valores nulos. Aquí, donde la visualización muestra el número de ediciones en cada librería, los valores nulos indican dos ediciones que están presentes en la tabla de edición pero no están en manos de ninguna librería. Esto podría ser un descuido importante, y es uno que se pasaría por alto al asumir incorrectamente la integridad referencial.

Explore el libro de trabajo y sus fuentes de datos para ver qué otros problemas pueden surgir de tablas combinadas incorrectamente.

Impactos en el rendimiento

Si la configuración incorrecta de estas opciones puede provocar que falten o se dupliquen los datos, ¿por qué Tableau permite que se cambien? En muchos casos, puede y debe dejar la configuración predeterminada: relacionar tablas en lugar de unirlas, dejar la cardinalidad como de varios a varios y no asumir la integridad referencial. Especialmente si usted no está seguro de cuál debe ser la configuración.

Sin embargo, la cardinalidad y la integridad referencial son Opciones de rendimiento porque puede haber implicaciones de rendimiento en los valores predeterminados. Si está seguro de la estructura de los datos, establecer la configuración correcta puede reducir la ejecución de la consulta para mejorar la velocidad.

Detrás de las cámaras

Nota: Esta sección utiliza analogías con otras técnicas de combinación de datos para proporcionar solo un marco conceptual. No es una descripción técnica de cómo Tableau utiliza la configuración de rendimiento para las relaciones.

Cardinalidad

La cardinalidad de la relación afecta cuando se produce la agregación. Esto se puede pensar en términos de mezcla. La combinación de datos consulta dos fuentes de datos de forma independiente. Cada fuente de datos se agrega según sea necesario al nivel de detalle deseado para la vista, independientemente de la otra fuente de datos. Para las relaciones, la configuración de cardinalidad afecta a si la agregación se produce antes o después de la combinación.

En el ejemplo anterior, el valor Muchos significa que el número de trabajadores de cada librería se agrega antes de combinar esos datos con la información del libro, asegurando así que cada libro tenga los números correctos. Cuando la cardinalidad se estableció incorrectamente en Uno, el número de trabajadores no se acumuló antes de que se combinara con los datos del libro, lo que llevó a valores incorrectos.

Tenga en cuenta que no solo se muestran los valores incorrectos, todos los valores se asignan al tipo de trabajador, a pesar de que se toman de los tres tipos de trabajadores. Establecer esta configuración de forma incorrecta puede provocar valores impredecibles e incorrectos. Este filtrado de resultados solo se produce cuando se utiliza un campo de otra tabla del otro lado de la relación establecida incorrectamente en la vista.

Sin embargo, si los valores son únicos, Tableau puede eliminar la agregación previa a la unión si optimiza la consulta.

Integridad referencial

Aunque la integridad referencial hace referencia a una configuración para las relaciones, se puede pensar en términos de tipos de unión. Una unión externa completa conservará todos los registros, independientemente de si hay o no una coincidencia en la otra tabla, pero a costa del rendimiento general. Si no está seguro de si los registros se perderían, una unión externa es más segura. Así es como se tratan las tablas cuando puede que no haya integridad referencial (algunos registros coinciden).

Una unión interna conservará solo los registros en los que haya una coincidencia de ambas tablas, quitando registros que no aparecen en cada tabla. Si sabe que una unión interna no eliminará los datos necesarios, es más eficiente. Si las opciones de rendimiento se establecen en Todos los registros coinciden, se asume la integridad referencial y se realizan uniones sin tener en cuenta los valores no coincidentes.

Una configuración de integridad referencial incorrecta puede tener un efecto similar a un filtro en los datos combinados, que elimina valores no coincidentes. Para obtener más información sobre el poder de conservar registros no coincidentes, consulte Hacer preguntas en varias tablas relacionadas en el blog de Tableau. Para obtener más información sobre los tipos de unión, consulte Combinar datos.

Mantener los valores predeterminados

Si el análisis tiene un rendimiento aceptable, se recomienda encarecidamente dejar la configuración predeterminada de la opción de rendimiento de varios a varios y no asumir la integridad referencial. El poder de las relaciones proviene de su capacidad para proporcionar resultados precisos y contextualmente apropiados basados en las tablas que se utilizan en el análisis. Al cambiar esta configuración, se elimina la flexibilidad semántica de las relaciones.

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!