Share via


Mostrar relações muitos para muitos em Hierarquias Derivadas (Master Data Services)

Aplica-se a:SQL Server – Somente Windows Instância Gerenciada de SQL do Azure

As DHs (Hierarquias Derivadas) exibem relações um para muitos e, agora, também podem mostrar relações muitos para muitos.

Relações M2M (muitos-para-muitos)

Uma relação M2M entre duas entidades pode ser modelada com o uso de uma terceira entidade que forneça um mapeamento entre elas:

mds_hierarchies_manytomany

No exemplo acima, há uma relação M2M entre as entidades Employee e TrainingClass , fornecidas pela entidade de mapeamento ClassRegistration. Um funcionário pode ser registrado como um aluno em várias classes, e cada classe pode conter vários alunos.

Você pode criar uma hierarquia derivada que exiba, por exemplo, alunos por classe, ou inverta a relação e mostre classes agrupadas por alunos.

Observação

O SQL Server 2016 (13.x) introduziu a hierarquia derivada para relacionamentos do M2M. Esse recurso não estava disponível antes dessa versão.

Em primeiro lugar, vá para a página de gerenciamento Hierarquia Derivada e crie uma nova hierarquia derivada:

mds_hierarchies_add_derived_hierarchy

Em seguida, adicione níveis à nova hierarquia derivada, começando de baixo para cima. Neste exemplo, queremos mostrar alunos (funcionários) agrupados por classe. A entidade Employee é, portanto, o nível folha da hierarquia, e é adicionado primeiro:

mds_hierarchies_edit_derived_hierarchy_one

Na captura de tela acima, observe que a entidade Employee aparece sob Níveis Atuais no meio como o único nível. A hierarquia derivada Visualização à direita simplesmente mostra uma lista de todos os membros da entidade Employee . A seção Níveis Disponíveis à esquerda mostra quais níveis podem ser adicionados no nível superior atual (Funcionário). A maioria deles são DBAs (atributos baseados em domínio) na entidade Funcionário , incluindo o DBA Departamento .

A partir do SQL Server, há um novo tipo de nível que modela as relações M2M, por exemplo: Classe (mapeado por meio de ClassRegistration.Student). O nome do nível é mais detalhado do que os outros de modo a refletir as informações extras necessárias para descrever inequivocamente a relação de mapeamento. Arraste e solte esse nível no nível Employee na seção Níveis Atuais :

mds_hierarchies_edit_derived_hierarchy_two

Agora a visualização mostra os funcionários agrupados por classes de treinamento para as quais eles foram registrados. Como essa é uma relação M2M, cada membro filho pode ter vários pais. No exemplo acima, o funcionário 6 {Hillman, Reinout N} foi registrado como um aluno em duas classes, 1 {Master Data Services 101} e 4 {Career-Limiting Moves}.

Essa relação de mapeamento também pode ser exibida de forma invertida, agrupando classes por aluno:

mds_hierarchies_available_entities_and_hierarchies

Novamente, vemos como um filho pode aparecer em mais de um pai: classe de treinamento 1 {Master Data Services 101} aparece em 6 {Hillman, Reinout N} e 40 {Ford, Jeffrey L}.

Os membros da entidade de mapeamento ClassRegistration não aparecem em qualquer lugar na hierarquia derivada. Eles são usados simplesmente para definir as relações entre os membros pai e filho na hierarquia.

Você pode editar a relação M2M modificando os membros da entidade de mapeamento, executando uma das ações a seguir. A relação M2M é somente leitura na página Gerenciador de Hierarquias Derivadas .

  • Modifique os membros da entidade de mapeamento na página Gerenciador de Entidades usando o suplemento Master Data Services para Excel ou usando os dados de preparo.

  • Arraste e solte os nós filho entre pais na página Gerenciador de Hierarquias Derivadas.

    Esse método modifica membros existentes quando possível e adiciona novos membros quando necessário. Membros existentes não são excluídos.

    Por exemplo, com a entidade de mapeamento ClassRegistration, ao mover um aluno para o nó não utilizado, o valor do atributo da classe do membro da entidade de mapeamento correspondente é alterado para nulo, e o membro não é excluído. De modo inverso, ao mover um aluno do nó não utilizado para alguma classe, se existir um membro de mapeamento correspondente ao aluno onde a classe seja nula, esse membro será modificado alterando a classe de nulo para o novo pai. Se esse tipo de membro não for encontrado, um será adicionado.

    Esse processo evita a exclusão do membro para impedir exclusão indesejada de dados de outro usuário, por exemplo, se a entidade de mapeamento contiver outros atributos além dos dois que definem a relação pai e filho. Os usuários devem fazer exclusões de modo explícito diretamente na entidade de mapeamento.

O novo nível M2M pode aparecer em qualquer lugar em uma hierarquia derivada em que um nível DBA (atributo baseado em domínio) é permitido. Um nível M2M pode estar no topo, como nos exemplos acima. Ele pode estar acima e/ou abaixo de um nível DBA, incluindo níveis recursivos. Ele pode estar abaixo de um nível Cap da Hierarquia Explícita (preterido). Várias relações M2M podem ser encadeadas na mesma hierarquia derivada.

Os níveis M2M podem estar ocultos, assim como outros níveis da hierarquia derivada.

Relação M2M no modelo de exemplo

Para obter uma demonstração de uma relação M2M, exiba a hierarquia derivada Clima da Região no modelo de exemplo Cliente incluído no Master Data Manager.

Como mostra a imagem a seguir, o nome do nível que modela essa relação é mds_Number1Climate (mapeado por meio de RegionClimate.Region). A mds_Number2Visualização mostra regiões agrupadas pelos tipos de climas aos quais estão associadas. Essa é uma relação M2M porque há regiões (membros filho) associadas a vários climas (pais). Por exemplo, mds_Number3APCR {Ásia-Pacífico} está associada a mds_Number4A{Tropical} e mds_Number5B{Seca}.

mds_M2MRelationship_Example_CustomerModel

Para obter instruções sobre como implantar o modelo de exemplo Cliente e outros modelos de exemplo incluídos no Master Data Manager, consulte Implantando dados e modelos de exemplo.

Relação um para muitos

Um membro de uma HD pode ser o pai de vários membros filho, mas, em geral, ele não pode ter mais de um pai (para ver as exceções, consulte Segurança do membro). Por exemplo, suponha que há duas entidades: Employee e Department, em que cada funcionário pertence a um único departamento. Essa relação é modelada adicionando à entidade Employee um DBA (atributo baseado em domínio) que faz referência à entidade Department:

mds_hierarchies_onetomany

Essa é uma relação um para muitos porque cada funcionário pertence a apenas um departamento, mas cada departamento pode ter vários funcionários. Uma hierarquia derivada pode ser criada exibindo funcionários por departamento:

mds_hierarchies_dh_screenshot

Segurança do membro

Uma hierarquia que permite a duplicação do membro (permite que um membro tenha mais de um pai) não pode ser usada para atribuir permissões de segurança do membro. Por exemplo:

  • Uma RDH (hierarquia derivada Recursiva) que não ancora recursões nulas (cada membro no nível recursivo aparece sob ROOT e seu pai recursivo).

  • Uma hierarquia derivada recursiva com um nível acima do nível recursivo (cada membro do nível recursivo aparece sob seu pai não recursivo e seu pai recursivo).

  • Uma hierarquia derivada com um nível M2M (um filho pode ser mapeado para muitos pais).

Coleções

As Coleções e Hierarquias Explícitas foram preteridas. O procedimento armazenado de conversão (udpConvertCollectionAndConsolidatedMembersToLeaf) converte membros da coleção em membros folha e cria Hierarquias Derivadas muitos para muitos para capturar informações de associação de coleção.

Confira também

Hierarquias derivadas (Master Data Services)