【发布时间】:2008-11-04 22:05:09
【问题描述】:
我们有两个不同来源的数据:一些来自客户,一些来自不同的供应商。目前,我们将这些数据物理地“合并”成一个近百列、数万行且没有正式分离两个维度的海量表。因此,我们实际上不能多次使用该表。
我将把这个烂摊子重新设计成一个合适的、但很小的星型模式。
这两个维度是显而易见的。例如,其中之一是时间。
客户提供的数据提供了许多事实值。每个供应商可能(也可能不会)提供符合相同维度的附加事实值。
这些事实数据都具有相同的粒度。它可以被称为“稀疏”,因为我们并不经常从所有供应商那里获得信息。
这是我的困境。
这是一个从不同来源填充的事实表(带有一些空值)吗?
或者这是 n+1 个事实表——一个来自客户,另一个来自每个供应商?
每种设计都有优点和缺点。对于“合并”或“单独加载”之间的选择,我需要一些第二意见。
客户提供收入、成本、计数、重量和其他他们知道的关于交易结束的信息。
供应商一提供有关某些交易的一些额外详细信息——权重、成本、持续时间。其他交易对供应商一没有任何价值。
供应商二提供了一些关于一些交易的额外细节——数量、持续时间、长度、外币汇率。其他交易对供应商二没有任何价值。
某些交易将同时拥有这两个供应商。少数交易没有供应商。
一个有空值的表?三张桌子?
【问题讨论】:
-
有点像他已经知道答案,但希望避免工作
-
@Alexander:帮帮我:我在避免什么工作?从我的 POV 来看,我必须设计、编码和构建两种解决方案之一。但如果有办法避免这项工作,请帮我看看我能摆脱什么。我很懒!
-
你能提供一个简单的例子来说明 null 是如何发生的吗?哪些供应商事实将是无效的,它与哪些客户事实相关?
-
@Tricky Nixon:不同的事实,相同的维度。我添加了一些细节。
标签: database-design data-warehouse