Cardinalidade e integridade referencial

Configurar uma fonte de dados, independentemente de como você agrupar os dados, requer entender a estrutura de dados de cada tabela e como eles podem ser combinados. Existem vários elementos-chave que devem ser considerados: 

  • Nível de detalhes: quão detalhados são os dados — a granularidade. Isso pode ser como responder à pergunta "o que define uma linha?". Para obter mais informações sobre granularidade, consulte Dados de estrutura para análise
  • Campo compartilhado: deve haver pelo menos um campo que possa ser usado para formar o vínculo entre as tabelas. Para uma união, esses campos definem a cláusula de união. Em tabelas relacionadas, eles estabelecem o relacionamento.
  • Cardinalidade: quantos valores, ou quantos valores únicos, existem para o campo compartilhado (singularidade). Para obter mais informações, consulte a próxima seção.
  • Integridade Referencial: é garantido que um valor em uma tabela tenha uma correspondência em outra tabela. Em outras palavras, não pode haver um registro em uma tabela que não tenha um registro correspondente na outra tabela. Para obter mais informações, consulte abaixo.

Cardinalidade

Cardinalidade em uma única coluna ou campo refere-se à exclusividade dos valores. Baixa cardinalidade significa que há apenas alguns valores únicos (como em um campo para a cor dos olhos). Alta cardinalidade significa que há vários valores únicos (como em um campo para números de telefone).

A cardinalidade entre as tabelas é semelhante, mas refere-se a se uma linha de uma tabela poderia ser vinculada a mais de uma linha em outra tabela. (É importante lembrar que a cardinalidade não aborda se faltam dados em alguma das tabelas. Ter ausência de dados faltantes é integridade referencial. Embora esses conceitos trabalhem juntos, são dois atributos diferentes da relação.)

A cardinalidade das relações é apresentada como de um para um, um para muitos, muitos para um ou muitos para muitos.

Um para um

  • Definição: cada valor do campo compartilhado em uma tabela está relacionado a no máximo um valor no campo compartilhado na outra tabela. 
  • Abreviação: 1:1

Exemplo: cada carro tem sua própria placa e uma placa é específica para um carro individual. Carro para placa é um para um.

Observe que mesmo que um carro não esteja registrado ou um número de placa ainda não tenha sido atribuído a um carro, essa discrepância é descrita pela integridade referencial. Um carro só pode ter uma placa, e uma placa só pode ser atribuída a um carro, então a cardinalidade permanece um para um.

 

Um para muitos e muitos para um

  • Definição: cada valor do campo compartilhado em uma tabela pode estar relacionado a várias linhas da outra tabela (esse valor é repetido na outra tabela).
  • Abreviação: m:1 ou 1:m
  • A ordem das tabelas determina se é de muitos para um ou de um para muitos (semelhante às uniões esquerda e direita).

Exemplos: muitos funcionários têm o mesmo gerente. Funcionários para gerente é muitos para um Gerente para funcionário é um para muitos.

 

Muitos para muitos

  • Vários valores do campo compartilhado em uma tabela podem estar relacionados a várias linhas na outra tabela (valores do campo compartilhado podem ser repetidos em várias linhas em qualquer tabela).
  • Abreviado como m:m.
  • Esta será a configuração padrão se nenhuma outra configuração for detectada na fonte de dados.

Exemplos: um ator está em muitos filmes e um filme tem muitos atores. Ator para filme é muito para muitos. Vários livros podem ser comprados na mesma transação e um livro pode ser comprado várias vezes. ISBN para ID de pedido é muito para muitos.

 

A cardinalidade pode ser especificada nas configurações de Opções de desempenho. Para obter mais informações, consulte Otimizar consultas de relações usando opções de desempenho.

Integridade referencial

Há um conceito relacionado chamado integridade referencial, o que significa que uma linha em uma tabela sempre terá uma linha correspondente na outra tabela, determinada pelo valor de seus campos compartilhados. Se o banco de dados não contiver registros de carros sem placas ou placas sem carros, essa relação tem integridade referencial.

No Tableau, a integridade referencial é configurada em cada lado da relação. Nas configurações de Opções de desempenho, Alguns registros correspondemsignifica que não há (ou você não sabe se há) integridade referencial. Todos os registros correspondemsignifica que há integridade referencial. A configuração padrão é não assumir a integridade referencial (Alguns registros correspondem).

Para obter mais informações, consulte Otimizar consultas de relações usando opções de desempenho.

Teste a si mesmo

Você pode definir a cardinalidade e integridade referencial de cada diagrama? O que isso significa em palavras? 

Exemplo:

 

Se definirmos a tabela esquerda como livros e a tabela direita como autores vinculados à ID do autor, traduza o diagrama em palavras: 

  • Um livro pode ter vários autores (os registros roxos mostram uma linha na tabela do livro à esquerda correspondente a vários registros na tabela do autor à direita).
  • Nenhum autor tem mais de um livro (cada registro de autor à direita leva a apenas um registro de livro à esquerda).
  • Não há livros sem autores (nenhum registro à esquerda não corresponde a um registro à direita).
  • Alguns autores podem não ter livros (o registro de autor cinza à direita não tem registro de livro correspondente à esquerda.)

Clique em cada seção abaixo para expandi-la.

Verifique seus conhecimentos

Solução

Por que isso importa?

Configurar corretamente as definições de cardinalidade ou integridade referencial pode aumentar o desempenho através da otimização da consulta. No entanto, configurações incorretas podem levar a problemas de agregação devido à perda ou duplicação de dados. As configurações padrão de opção de desempenho são Muitas para cardinalidade e Alguns registros correspondemà integridade referencial. Elas só devem ser ajustadas se você tiver certeza das características corretas de seus dados.

Para obter mais informações sobre como o Tableau lida com cada configuração, consulte O que significam as configurações de Cardinalidade e Integridade referencial.

Um exemplo no Tableau

Vamos explorar o que acontece quando a cardinalidade é configurada de forma inadequada.

Observação: o exemplo a seguir usa um subconjunto de tabelas do O conjunto de dados Bookshop. Você pode baixar a pasta de trabalho para acompanhar ou baixar os dados brutos e criar as fontes de dados você mesmo. As tabelas utilizadas são Livros, Informações e Edição de Bookshop.xlsx (mantendo apenas alguns campos) e Perfil de biblioteca e Catálogo de BookshopLibraries.xlsx.

As tabelas Livro e Informações têm uma relação de um para um — a informação é essencialmente colunas adicionais para a tabela Livro. Por causa disso, embora possam estar relacionadas, faz sentido uni-las para criar uma nova tabela lógica que tenha todas as colunas. Edição tem um relação de muitos para um com esta tabela combinada, pois pode haver várias edições para um único livro, geralmente com formatos diferentes. (Observe que o diagrama abaixo mostra a relação da tabela Livro+Informações com a Edição, por isso é de um para muitos.)

A edição está relacionada ao Catálogo como uma relação de um para muitos no ISBN. As tabelas Catálogo e Perfil de Biblioteca estão relacionadas a muitos para muitos em ID de Biblioteca. O ponto-chave é que a tabela Perfis de biblioteca tem várias linhas por biblioteca, uma para cada tipo de funcionário (Bibliotecário, Assistente de biblioteca, Técnico de biblioteca). Para obter mais informações sobre a estrutura dessas tabelas, consulte o O conjunto de dados Bookshop.

As configurações certas

Quando a relação Catálogo-Perfil de biblioteca é configurada corretamente, podemos fazer uma visualização simples que mostra o número de funcionários para cada biblioteca em relação a vários livros. Esta é uma visualização simples de criar, mas é útil para ilustrar o ponto. A Biblioteca Hora Ociosa tem 130 funcionários, independentemente de qual livro estamos falando. Existem três valores para o tipo de pessoal, de modo que cada total seja composto de três registros — o número entre parênteses.

Contagem de funcionários por biblioteca e título. (Números entre parênteses indicam o número de registros em cada marca.)

As configurações erradas: um para um

Quando a relação é erroneamente definida como um para um, na visualização de cada título de Catálogo é efetivamente emparelhado com apenas um registro da tabela Perfil de biblioteca (como indicado pela contagem de registros entre parênteses).

Contagem de funcionários por biblioteca e título. (Números entre parênteses indicam o número de registros em cada marca.)

Acima, podemos ver que cada biblioteca exibe apenas o número mínimo de funcionários. (Consulte os números em negrito na visualização abaixo. O menor número de funcionários é o número refletido na visualização Contagem de pessoal.)

Divisão de pessoal por tipo e biblioteca.

Para obter mais informações sobre como as relações se tornam contextuais para uma visualização, consulte Apresentação da nova modelagem de dados no Tableau(O link abre em nova janela) no blog Tableau.

O cenário errado: união de colunas

Embora existam maneiras de contornar esse tipo de problema — como, por exemplo, as expressões de nível de detalhes — unir tabelas que têm granularidade diferente ou "muitas" em sua cardinalidade pode causar duplicação. Neste exemplo, a contagem de funcionários é precisa para títulos com apenas um formato, mas para os livros que têm dois formatos na tabela Edições, essa duplicação é passada para a contagem de funcionários também (observe que as contagens de registro entre parênteses são 6 em vez do correto 3).

Contagem de funcionários por biblioteca e título. (Números entre parênteses indicam o número de registros em cada marca.)

A definição errada: pressuposição incorreta da integridade referencial

Dizer ao Tableau que há integridade referencial (todos os registros correspondem) quando este não é o caso pode causar valores descartados. Aqui, essas duas vizualizações são semelhantes, mas a da direita é de uma fonte de dados configurada para assumir a integridade referencial. Aquela visualização perdeu os nulos. Embora isso possa ser bom em algumas circunstâncias, é importante entender o que esses nulos representam. Aqui, onde a visualização mostra o número de edições em cada biblioteca, os nulos indicam duas edições que estão presentes na tabela de edição, mas não são obtidos em nenhuma biblioteca. Isso pode ser um descuido importante e no qual seria ignorado ao assumir incorretamente a integridade referencial.

Explore a pasta de trabalho e suas fontes de dados para ver quais outros problemas podem surgir de tabelas combinadas incorretamente.

Impactos de desempenho

Se a configuração incorreta dessas configurações pode causar ausência ou duplicação de dados, por que o Tableau permite que elas sejam alteradas? Em muitos casos, você pode e deve deixar as configurações padrão: relacionar tabelas em vez de unir, deixar a cardinalidade como muitos para muitos e não assumir a integridade referencial. Especialmente se você não tem certeza de quais devem ser as configurações.

No entanto, a cardinalidade e a integridade referencial são opções de desempenho porque pode haver implicações de desempenho para os padrões. Se você tiver certeza sobre a estrutura de seus dados, definir as configurações corretas pode reduzir a execução da consulta para melhorar a velocidade.

Análise

Observação: esta seção usa analogias a outras técnicas de combinação de dados para fornecer apenas uma estrutura conceitual. Não é uma descrição técnica de como o Tableau usa as configurações de desempenho para relacionamentos.

Cardinalidade

A cardinalidade da relação afeta quando a agregação acontece. Isso pode ser pensado em termos de combinação. A combinação de dados consulta duas fontes de dados de forma independente. Cada fonte de dados é agregada, conforme necessário ao nível de detalhe desejado para a visualização, independentemente da outra fonte de dados. Para relações, a definição de cardinalidade afeta se a agregação acontece antes ou depois da união.

No exemplo acima, a configuração Muitos significa que o número de funcionários de cada biblioteca é agregado antes de combinar esses dados com as informações do livro, garantindo assim que cada livro tenha os números corretos. Quando a cardinalidade foi incorretamente definida para Um, o número de funcionários não foi agregado antes de ser combinado com os dados do livro, levando a valores incorretos.

Observe que não apenas os valores incorretos são mostrados, todos os valores são atribuídos aos à equipe do tipo Bibliotecários, apesar de serem obtidos dos três tipos de funcionários. A configuração inapropriada desta definição pode causar valores imprevisíveis e incorretos. Essa filtragem de resultados só acontece quando um campo de outra tabela do outro lado do relacionamento definido incorretamente é usado na exibição.

Se os valores forem únicos, no entanto, o Tableau será livre para remover a agregação de pré-união, se otimizar a consulta.

Integridade referencial

Embora a integridade referencial se refira a um cenário para relações, pode ser pensada em termos de tipos de união. Uma união externa completa manterá todos os registros, independentemente de haver ou não uma correspondência na outra tabela, mas afetará o desempenho. Se você não tem certeza se os registros seriam perdidos, uma união externa é mais segura. É assim que as tabelas são tratadas quando pode não haver integridade referencial (correspondência de alguns registros).

Uma união interna manterá apenas os registros onde há uma correspondência de ambas as tabelas, removendo os registros que não aparecem em cada tabela. Se você sabe que uma união interna não eliminará os dados necessários, ela é mais eficiente. Se as Opções de desempenho forem definidas para todos os registros corresponderem, a integridade referencial é assumida, e as adesões são realizadas sem considerar valores incomparáveis.

Uma configuração de integridade referencial incorreta pode ter um efeito semelhante ao filtro nos dados combinados, removendo valores incomparáveis. Para obter mais informações sobre o poder de reter registros incomparáveis, consulte Fazer perguntas em várias tabelas relacionadas no blog Tableau. Para obter mais informações sobre tipos de uniões, consulte Unir colunas de dados.

Manter os padrões

Se sua análise tiver um desempenho aceitável, encorajamos fortemente a deixar as configurações padrão de Opção de desempenho de muitos para muitos e não assumir a integridade referencial. O poder das relações vem de sua capacidade de fornecer resultados precisos e contextualmente apropriados, com base nas tabelas que são utilizadas na análise. A alteração dessas configurações remove a flexibilidade semântica das relações.

Agradecemos seu feedback!Seu feedback foi enviado. Obrigado!