我正在研究星型模式,并试图找到数据库设计的最佳实践。
我有三个(此刻)维度表用于几个事实。大多数事实看似一样(意味着它们是一种不同类型的事实,但共享特征)。虽然共享度量不属于维度表(因为它们不是事实,而是在特定时刻产生逻辑测试/条件),但我想知道最佳实践是什么情况。
期待您对此主题的见解和论证。
答案 0 :(得分:0)
有点过于模糊,但这里有几个选项:
1)如果所有事实具有相同的粒度和度量,请考虑将它们全部保存在同一事实表中,同时保留事实类型维度;
2)通过虚拟立方体加入各种事实表。大多数OLAP工具应该允许这样的构造(例如,Mondrian做)
3)如果各种事实表具有相同的粒度但不同的度量,那么它们仍然可以组合,但是每种类型的事实都会贡献一组不同的事实表列(而不仅仅是行)
4)如果上述两种情况都不可能(例如,不同的粒度),您可能需要在较粗的颗粒水平(具有聚合)或更精细的颗粒水平(使用某种分配算法)重新组合它们,一起分析它们。
5)如果仍然无法做到这一点,您可能希望不将事实表本身组合在一起,而是在报告/仪表板级别组合查询,只合并聚合结果而不是原子数据库行。