0

https://web.stanford.edu/dept/itss/docs/oracle/10g/olap.101/b10333/globdiag.gif

假设我们有一个如上所述的启动模式。

我的问题是 - 我们如何实时填充事实表的列 (unit_price, unit_cost) 列..?

谁能给我一个带有真实数据的起始模式表?

我很难理解星型模式......

请帮忙!..

4

1 回答 1

0

启动模式由两种类型的表组成,事实表维度表。

星型设计的理想是您可以将数据分成两部分。静态部分用事实表中的维度动态部分(= 事务)来描述。

每个事务都作为新记录存储在事实表中,并连接到定义事务上下文的周围维度。

链接中的示例包含两个事实表:SHIPMENTS 和 PRODUCT_CONDITIONS。请注意,链接中的事实表被称为 UNITS_HISTORY_FACT 和 PRICE_AND_COST_HISTORY_FACT,但我发现这不是最佳选择。

SHIPMENTS 表在某个时间通过定义的 CHANNEL 为客户的每次发货存储一条记录。以上所有信息都是使用各个维度的对应键定义的。事实表还包含描述事务属性的 MEASURES,这里是运送的 UNITS 数量。

因此,事实表的结构将是

CUSTOMER_ID
PRODUCT_ID
TIME_ID
CHANNEL_ID
UNITS

第二个事实表(底部)更有趣,因为在这里您将产品分为两部分:

定义 ID、名称和其他更多静态属性的 PRODUCT 维度

PRODUCT_CONDITION 这是事实表,设计时预期产品的价格和成本会随着时间而变化。随着价格成本的每次变化,在事实表中插入一条新记录,并将其连接到 PRODUCT 和 TIME(变化的)。

因此,事实表的结构将是

PRODUCT_ID
TIME_ID
UNIT_PRICE
UNIT_COST

最后注意TIME维度的设计。

将事实表与维度表连接起来的最佳实践是使用无意义的 ID(代理键),但对于 TIME 维度,您应该小心。对于大型(时间分区)事实表,通常使用自然键(DATE 格式)来部署分区功能。请参阅如何使用代理键定义时间维度和 web 中的其他资源中的更多详细信息。

于 2015-11-15T18:45:16.387 回答