在维度建模中建模基线,投影或目标的最佳方法是什么?

时间:2016-06-16 16:28:22

标签: sql entity-relationship dimensional-modeling star-schema fact

我正在设计我的第一个真正的Kimball风格的星型模式维度模型。我已经浏览了很多书,而且我已经通过Adamson的 Star Schema - The Complete Reference (我觉得它比Kimball书更实用,更直接)。我无法找到这个问题的答案。请帮忙!对文章或书籍的引用可以。

在维度建模中,对事实与其对应的基线,投影或目标之间的关系进行建模的规范方法是什么?

例如,假设对于公司A,在2016年,其实际销售额为100万美元。这显然是事实。

另外假设,在2014年,该公司预计2016年的销售额为120万美元,而在2015年,该公司预计2016年的销售额为110万美元。

但事实证明,2014年(较旧)的预测是必须衡量2016年销售额的预测。换句话说,我们需要明确指定实际销售额与其相关预计销售额估算值之间的关系。所以“钻穿”是行不通的,因为我们不确定哪些预测是正确的比较。

基本上,似乎一个事实需要与另一个事实明确相关,这个事实(根据文献)是禁止的吗?

那么这些实现中的哪一个是规范最好的?

  1. 创建 fact_sales fact_sales_projection (同一粒度)。在fact_sales中包含sales_projection_key,基本上将事实与事实联系起来(据说这不是一个好主意)。

  2. 创建 fact_sales dim_sales_projection (同一粒度),因此请调用投影维度,即使它们包含与其支持的事实相同的数字。再次在fact_sales中包含sales_project_key,但现在没关系,因为在语义上,它是一个维度。

  3. 只需使用名为 SalesType 的维度创建 fact_sales 即“实际”或“预计”。将实际销售额和预计销售额包括在同一个表中,并使用从“实际”销售记录到正确“预计”销售记录的自联接密钥。

  4. 只需创建 fact_sales ,但添加其他包含投影和实际销售额的事实列。这将导致投影数据的大量重复,但确保实际数据与“重要”的投影并排保存。

  5. 其中,我很确定#3 不是最佳解决方案。关于#1,#2还是#4是否最好,我已经很好了,虽然(对我而言)#1似乎比#2更好。

    任何输入都表示赞赏。另外,我不完全清楚这种类型的问题对于“Stack Overflow”论坛或“数据库管理员”论坛是否更好?

0 个答案:

没有答案