https://web.stanford.edu/dept/itss/docs/oracle/10g/olap.101/b10333/globdiag.gif
假设我们有一个如上所述的启动模式。
我的问题是 - 我们如何实时填充事实表的列 (unit_price, unit_cost) 列..?
谁能给我一个带有真实数据的起始模式表?
我很难理解星型模式......
请帮忙!..
https://web.stanford.edu/dept/itss/docs/oracle/10g/olap.101/b10333/globdiag.gif
假设我们有一个如上所述的启动模式。
我的问题是 - 我们如何实时填充事实表的列 (unit_price, unit_cost) 列..?
谁能给我一个带有真实数据的起始模式表?
我很难理解星型模式......
请帮忙!..
启动模式由两种类型的表组成,事实表和维度表。
星型设计的理想是您可以将数据分成两部分。静态部分用事实表中的维度和动态部分(= 事务)来描述。
每个事务都作为新记录存储在事实表中,并连接到定义事务上下文的周围维度。
链接中的示例包含两个事实表: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 中的其他资源中的更多详细信息。