我必须为旅行社创建数据仓库。我是第一次这样做。我已经学习了有关星形、雪花和星座模式以及创建数据仓库的所有基础知识。我想问问有什么可以改进的,这个设计总体上是否不错。
这是我的维度层次结构:
这是我现在所取得的成果(在 MySQL Workbench 中创建模式):
我必须为旅行社创建数据仓库。我是第一次这样做。我已经学习了有关星形、雪花和星座模式以及创建数据仓库的所有基础知识。我想问问有什么可以改进的,这个设计总体上是否不错。
这是我的维度层次结构:
这是我现在所取得的成果(在 MySQL Workbench 中创建模式):
以 DimClient 为例。你有一个很好的代理键。接下来,您需要填写有关客户的所有信息(包括 clientID),然后还包括地区、城市、地区和国家。当你拥有了所有这些时,那个维度就完成了。
您通过 ClientKey 在 Fact 表中链接到它,因此您需要将该键作为外键放入 Fact 表中。
对你的其他维度做一个类似的过程,把维度和事实都填好,你的状态就会很好。您不需要子维度来反映您的层次结构:维度是非规范化的。
编辑:这个问题最初是完全不同的,因此上面的答案与其原始形式相关。
这是基于修改后的问题的新答案。对于此设计,您可能需要查看许多内容。这里有一些提示,但不是完整的列表:
您的 DimTime 维度应该是什么粒度?通常,您在日期/日期粒度上有一个日期维度,但在您的表格中,它看起来像周。
如果这对于分析销售或满意度评价的时间很重要,您可以创建一个单独的时间维度。
忠诚度事实似乎是一段时间内客户行为的总结——应该是几周吗?如果是这样,您可以在周级别上获得额外的维度
为什么付款类型中有一天中的秒数?这似乎不对——支付类型与一天中的秒数无关。也许这是您缺少的时间维度,并且付款类型应该分开?
产品维度是否应该具有区域层次结构?你是说一个产品在不同的城市是不同的吗?你可能想再看一遍。
我相信可以找到其他建议,祝你的课程好运!