数据仓库模式设计——如何改进模式模型

Data Warehouse schema design - how to improve schema model

我必须为旅行社创建数据仓库。我是第一次这样做。我已经学习了关于星型、雪花型和星座模式以及创建数据仓库的所有基础知识。想请问有什么地方可以改的更好,这个设计整体上好不好。

这是我的维度层次结构:

这是我现在取得的成就(在 MySQL Workbench 中创建模式):

以DimClient为例。你有一个很好的代理键。接下来您需要填写有关客户的所有信息(包括clientID),然后还包括地区、城市、地区和国家。当你拥有所有这些时,那个维度就完成了。

您 link 通过 ClientKey 在您的事实 table 中访问它,因此您需要将该密钥作为外键放入事实 table 中。

对你的其他维度进行类似的过程,填写维度和事实,你的状态就会很好。您不需要子维度来反映您的层次结构:维度是非规范化的。

编辑:这个问题最初是完全不同的,因此上面的答案与其原始形式相关。

这是基于修改后的问题的新答案。对于此设计,您可能需要注意许多事项。这里有一些提示,但不是完整列表:

  • 您的 DimTime 维度应该是什么粒度?通常你有一个 day/date 粒度的日期维度,但在你的 table 中它看起来像几周。

  • 如果这对于分析销售或满意度评论的时间很重要,您可以创建一个单独的时间维度。

  • 忠诚度事实似乎是一段时间内客户行为的总结——那应该是几周吗?如果是这样,您可以在周级别上增加一个维度

  • 为什么支付类型里面有秒数?这似乎不对——支付类型与一天中的秒数无关。也许这是您缺少的时间维度,付款类型应该分开?

  • 产品维度是否应该有区域层级?你是说产品在不同的城市就不一样了吗?你可能想再看一遍。

我相信还能找到其他建议,祝你课程顺利!