Alguns cenários para relacionamentos M: M em um modelo de armazém de dados
A maioria dos servidores OLAP e sistemas ROLAP tem um meio de lidar com estruturas de dados M: M agora, mas há algumas advertências sobre isso que você precisará prestar atenção. Se você implementar relacionamentos M: M, precisará ficar de olho na camada de relatórios e em quais ferramentas deseja apoiar.
Cenário 1: dimensão M: M em uma tabela de fatos
Um exemplo disso pode ser vários drivers em uma política de motor. Se você adicionar ou remover um driver, a transação de ajuste de política poderá ter um relacionamento com uma lista de drivers que mudam com o ajuste.
Opção 1 - M: M tabela de ponte de fatos do driver
Isso terá um volume bastante grande de dados, pois possui linhas de drivers x transações para uma determinada política. O SSAS pode consumir essa estrutura de dados diretamente, mas é mais lento consultar através de uma ferramenta ROLAP.
Se o seu relacionamento M: M for baseado em entidades específicas da linha de fatos (por exemplo, motoristas em um carro), isso também pode ser apropriado para uma ferramenta ROLAP, desde que sua ferramenta ROLAP suporte relacionamentos M: M (por exemplo, usando contextos no Business Objetos).
Opção 2 - Tabela de dimensões fictícias de 'combinações'
Se você estiver mapeando uma lista de códigos comuns para uma tabela de fatos (ou seja, as entidades vinculadas não são peculiares à linha de fatos), poderá adotar outra abordagem que reduzirá os volumes de dados. Um exemplo desse tipo de cenário são os códigos do CDI em uma visita de internação. Cada visita hospitalar terá um ou mais diagnósticos e / ou procedimentos do CDI listados contra ele. Os códigos ICD são globais.
Nesse caso, você pode criar uma lista distinta das combinações de códigos em cada caso. Faça uma tabela de dimensões com uma linha para cada combinação distinta e tenha uma tabela de links entre as combinações e as tabelas de referência para os próprios códigos ICD.
A tabela de fatos pode ter uma chave de dimensão para a dimensão 'combinações', e a linha de dimensão possui uma lista de referências aos códigos ICD reais. A maioria das ferramentas ROLAP pode consumir essa estrutura de dados. Se sua ferramenta funcionar apenas com um relacionamento M: M real, você poderá criar uma exibição que emule o relacionamento M: M entre o fato e a tabela de referência de codificação. Essa seria a abordagem preferida com o SSAS.
Vantagens da opção 1:
- Indexadas adequadamente, as consultas baseadas na seleção de linhas da tabela de fatos com um determinado relacionamento através da tabela M: M podem ser razoavelmente eficientes.
- Modelo conceitual ligeiramente mais simples
Vantagens da opção 2:
- O armazenamento de dados é mais compacto
- Você pode emular um relacionamento 1: M direto, apresentando as combinações em um formato legível por humanos como um código na dimensão 'combinações'. Isso pode ser mais útil em ferramentas de relatório mais difíceis que não têm suporte para relacionamentos M: M.
Cenário 2: relação M: M entre dimensões:
É mais difícil pensar em um caso de uso, mas é possível imaginar algo fora da assistência médica com os códigos do CDI novamente. Em um sistema de análise de custos, a visita hospitalar pode se tornar uma dimensão e terá relações M: M entre a visita (ou o episódio do consultor na fala do NHS) e os códigos.
Nesse caso, você pode configurar os relacionamentos M: M e, possivelmente, codificar uma renderização legível por humanos na dimensão base. Os relacionamentos podem ser feitos através de tabelas de links M: M diretas ou através de uma tabela de 'combinações' de pontes como antes. Essa estrutura de dados pode ser consultada corretamente por meio de objetos de negócios ou ferramentas ROLAP de melhor qualidade.
Em primeiro lugar, não consigo ver o SSAS sendo capaz de consumir isso sem levar o relacionamento até a tabela de fatos; portanto, você precisa apresentar uma visão do relacionamento M: M entre a codificação e a tabela de fatos linhas para usar o SSAS com esses dados.