Estou desenhando uma base de dados que deve relacionar os usuários com sua divisão administrativa para fins estatísticos, considerando que cada país tem seu próprio tipo de divisão. O Chile, por exemplo, está dividido em regiões que estão divididas em províncias que estão divididas em comunas, enquanto Angola está dividida em províncias que estão divididas em municípios que estão divididos em comunas. Achei que uma solução poderia ser ter uma coluna chamada first_administrative_division
na user
tabela, que vai se referir a uma
first_administrative_division
tabela, que vai ter uma
second_administrative_division
coluna que vai se referir a uma
third_administrative_division
tabela que vai ter uma coluna que vai se referir à country
tabela. Mas lendo
isso
Não constatei apenas que existem países que possuem apenas duas divisões administrativas, e em outros casos, quatro; alguns casos são ainda mais complexos, como Argentina e Brasil, que possuem diferentes tipos de divisões internas, divididas de formas distintas. Então, eu estou chorando agora.
Não quero cobrir o mundo inteiro, os países serão adicionados à medida que forem necessários. É possível modelar tal coisa?
Obrigado de antemão.
Uma maneira de armazenar diferentes níveis de hierarquia é criando uma tabela hierárquica:
Então você pode criar suas divisões e listá-las adequadamente. Isso permite que você atribua com flexibilidade as divisões e as divisões pai.
Os benefícios são que diferentes níveis de hierarquia podem ser atribuídos neste projeto para diferentes divisões de nível superior. As pessoas podem ser associadas a qualquer nível de hierarquia.
O desafio é criar uma função ou procedimento armazenado definido pelo usuário ou utilizar estruturas de dados hierárquicos (por exemplo , Hierarchy ID do SQL Server ) para extrair diferentes informações para os estatísticos. Por exemplo:
Observe que a hierarquia de Angola tem 4 níveis de profundidade e Dick está funcionando em 1 nível acima do nível mais baixo. As estatísticas podem ser geradas por diferentes profundidades.
A estrutura de data warehouse desnormalizada também pode ser usada, como você mencionou na pergunta. Em uma tabela dimensional, adicione o nome do vendedor e atribua os campos level1, level1type, level2, level2type etc. O nível 1 de Tom seria Chile e o tipo seria Country. O nível 2 seria a Região-A e o tipo seria a Região, etc. Esse tipo de estrutura pode ser fácil para a extração de dados se os estatísticos estiverem procurando aprimorar o nível 1 ou 2 ou algo semelhante. Acabamos de aumentar a complexidade de adicionar mais colunas à medida que descobrimos a hierarquia de diferentes países, mas o benefício é que os dados são fáceis de visualizar. Uma instrução select simples pode nos ajudar a entender como Tom está funcionando.
Sente-se com estatísticos e descubra o que eles gostam de ver e como gostariam de usar os dados. Com base nas ideias deles, você poderá construir um sistema melhor, talvez um híbrido.