为数据仓库设计一个关系船

Posted

技术标签:

【中文标题】为数据仓库设计一个关系船【英文标题】:Design a Relation Ships For Data Warehouse 【发布时间】:2019-10-26 19:42:33 【问题描述】:

我打算为 Northwind 数据库设计一个 DataWarehouse,但我的客户、产品和员工表有两个公共字段,称为国家和城市。 想知道按照图表形式定义Geo维度与3个Other Dimensions的关系是否正确? 如果你有任何cmets请分享

My DataWareHouse Diagram

【问题讨论】:

【参考方案1】:

这取决于您要实现的理念。如果你关注 Kimball,你想要一个星型模式,其中事实表连接到维度,而那些不连接到其他任何东西。在这种情况下,您最好将地理字段保留在每个维度中。

任何冗余都是没有意义的,因为通常所有维度组合的大小都比事实表小得多,可能是整个大小的几个百分点。

另一方面,在一个链中连接 3 个表比单个连接要昂贵得多。

以更多字节(或千字节或兆字节)为代价来节省 CPU 和查询时间计算通常是一个不错的折衷方案。

【讨论】:

所以根据你的解释,如果我理解正确的话,我必须将 Geokey 带入具有查找组件的员工、客户、产品的每个维度,而不是我将 GeoID 带入每个维度的设计。我说的对吗? 不,您实际上应该将国家、城市和任何其他地理字段直接带入每个维度,这样如果您需要,例如,按客户国家/地区进行销售,您只需要在事实表和维度之间进行简单连接.推荐阅读:数据仓库工具包,Ralph Kimball

以上是关于为数据仓库设计一个关系船的主要内容,如果未能解决你的问题,请参考以下文章

数据仓库与操作数据库有何联系和区别?

数据仓库和数据库有啥区别和联系?

数据仓库架构设计的一些概念

Greenplum 实时数据仓库实践——数据仓库设计基础

Greenplum 实时数据仓库实践——数据仓库设计基础

数据库和数据仓库有啥区别?