Introdução

Concluído

Quando os dados são modelados no Microsoft Dataverse, tabelas separadas são usadas para representar objetos e conceitos distintos. As organizações podem usar mais tabelas para proteger informações específicas, evitar a repetição de dados, descrever outras propriedades ou facilitar o relatório. Como os objetos da vida real estão relacionados entre si, os relacionamentos são usados no Dataverse para vincular linhas de uma tabela a outra. Além disso, os relacionamentos podem fornecer restrições e comportamentos que se aplicam quando as ações são executadas nos registros.

Basicamente, as tabelas e os relacionamentos do Dataverse podem funcionar em conjunto para transmitir a mensagem de seus dados. Ao construir uma boa experiência do usuário em um aplicativo de tela do Microsoft Power Apps usando as tabelas e os relacionamentos, convém ocultar complexidades desnecessárias do modelo de dados. Para realizar essa tarefa, as fórmulas e o uso de dados devem lidar com eficiência com as tabelas usando os relacionamentos. Este módulo examinará como usar os diferentes tipos de relacionamentos que o Dataverse oferece.

Cenário: espaços de trabalho compartilhados da Contoso

Este módulo usará um cenário de negócios comum para demonstrar como relacionamentos do Dataverse funcionam com aplicativos de tela. A Contoso, como muitas empresas, tem vários locais e permite que os funcionários trabalhem em casa. Ocasionalmente, esses funcionários precisam ir ao escritório e necessitarão de uma mesa para usar durante a visita. Anteriormente, a Contoso instruía os funcionários a percorrer o escritório ao chegar para encontrar uma mesa disponível. Desde então, a empresa descobriu que esse sistema de espaço de trabalho compartilhado, às vezes chamado de compartilhamento de mesa, criou desafios para licenciamento e suporte de TI. Como resultado, a empresa planeja criar uma solução que os funcionários possam usar e que lhes permita exibir as mesas disponíveis e reservar uma com antecedência. A equipe que está criando a solução identificou as tabelas a seguir como parte do modelo de dados do Dataverse.

Nome da tabela Descrição
Local Essa tabela representará os edifícios individuais e conterá colunas como endereço e número de telefone. Cada local terá uma pessoa de contato principal.
Mesa Essa tabela representa a mesa real que uma pessoa pode reservar. As mesas estão em um local específico.
Recurso de mesas Mesas diferentes têm recursos diferentes. Por exemplo, algumas mesas podem ter um viva-voz e outras podem estar em uma sala. Será incluída uma lista padrão de recursos de mesa, e cada mesa poderá ter um ou mais desses recursos.
Usuário Os usuários representam pessoas que podem reservar a mesa ou ser o contato principal de um local.
Reserva Essa tabela representa a reserva para uma pessoa usar uma mesa específica em um local específico em um slot de tempo específico.

Tipos de relacionamentos do Dataverse

Quando você cria um relacionamento entre tabelas, o tipo de relacionamento define as restrições de cardinalidade de cada lado do relacionamento. O Dataverse dá suporte a relacionamentos um para muitos e muitos para muitos.

Relacionamento um para muitos

O relacionamento um para muitos (que também é chamado de 1:N ou pai-filho) inclui uma tabela principal (pai), em que você pode associar uma linha individual a muitas linhas da tabela relacionada (filho) usando uma coluna de pesquisa no tabela relacionada (filho). A linha principal é chamada de pai, e as linhas da tabela relacionadas são chamadas de linhas filho. Você pode associar uma linha filho a apenas uma linha pai.

Um relacionamento um para muitos também é conhecido como relacionamento de muitos para um (ou N:1), em que você usará o relacionamento começando com o filho apontando para o pai. É a mesma definição de relacionamento físico, mas de um ângulo diferente. Em um aplicativo de tela, se você estiver trabalhando com o registro filho e quiser exibir uma propriedade do pai, use a propriedade de navegação de relacionamento muitos para um na linha filho.

Por padrão, uma única tabela é usada como principal, e a coluna de pesquisa sempre aponta para uma linha dessa tabela. O Dataverse também dá suporte a pesquisas de várias tabelas (ocasionalmente chamadas de pesquisas polimórficas), que permitem que um campo de pesquisa aponte para uma linha de uma das várias tabelas, fornecendo flexibilidade para modelos de dados mais complexos. Por exemplo, você pode configurar uma coluna de pesquisa de várias tabelas criando uma coluna do tipo de dados Cliente. Em seguida, você pode definir o valor de pesquisa do cliente para apontar para um contato ou para uma linha da tabela de contas. Em todas as tabelas de atividades (por exemplo, email, tarefa e assim por diante), a coluna correspondente pode apontar para qualquer tabela que esteja habilitada para rastreamento de atividades. Além disso, você pode usar o tipo de coluna Pesquisa de várias tabelas para configurar uma coluna de pesquisa personalizada de várias tabelas. Ao trabalhar com essas colunas de pesquisa de várias tabelas no Power Apps, você usará as funções IsType e AsType do Microsoft Power Fx para determinar a tabela principal e usar os dados.

No modelo de dados de exemplo do módulo, os relacionamentos um para muitos a seguir foram definidos para dar suporte ao cenário.

Tabela principal Tabela relacionada Descrição
Local Mesa Cada mesa tem um local.
Usuário Local Cada local tem um contato principal.
Usuário Reserva Usuário para o qual a mesa está reservada.
Mesa Reserva Cada reserva é para uma mesa específica.

Ao configurar um relacionamento um para muitos, você também pode configurar os comportamentos de relacionamento. Os comportamentos determinam o que deve acontecer quando a linha da tabela principal é excluída, atribuída, compartilhada, não compartilhada ou renovada. O comportamento padrão é a referência, que é configurada para remover o vínculo entre as duas tabelas quando a linha da tabela principal é excluída. Por exemplo, a tabela Local tem várias mesas e usa a configuração padrão; portanto, se o aplicativo de tela excluir uma linha de local, por padrão, todas as mesas associadas serão órfãs. Se o requisito de negócios for remover os registros de mesa associados quando um local for excluído, você poderá selecionar a função ForAll, que excluirá todos os registros de mesa associados primeiro. Uma opção melhor é configurar o tipo de comportamento dos pais para o relacionamento. Esse tipo de comportamento exclui automaticamente os registros associados quando o registro principal é excluído. Essa abordagem garante que não haja registros de mesa órfãos.

Quando você está criando um aplicativo de tela e usando tabelas relacionadas, saber como os comportamentos são configurados para esse relacionamento garante a implementação da lógica correta.

Relacionamento muitos para muitos

O relacionamento muitos para muitos (também chamado de N:N) inclui uma tabela oculta especial denominada tabela de relacionamentos, ocasionalmente chamada de tabela de interseção. Essa tabela mapeará como as várias linhas de uma tabela podem ser relacionadas às várias linhas de outra tabela. Relacionamentos muitos para muitos podem rastrear a associação, mas você não pode modificar a tabela de interseção para adicionar colunas personalizadas que descrevem o relacionamento.

Neste exemplo do módulo, Mesa e Recurso de Mesa teriam um relacionamento muitos para muitos. A lista de recursos de mesa seria compartilhada por todas as mesas, e cada mesa poderia ter um ou mais recursos associados. Relacionamentos muitos para muitos permitem que os usuários saibam que a mesa tem cadeiras, mas não permitem que você armazene quantas cadeiras cada mesa tinha.

O vídeo a seguir demonstra como criar relacionamentos entre tabelas.

Depois que você criar todas as tabelas e relacionamentos, o modelo de dados do cenário de exemplo deverá ser semelhante ao diagrama a seguir.

O restante deste módulo explora como trabalhar com esse modelo de dados em um aplicativo de tela.