Star或Snowflake架构中是否需要外键?

时间:2014-04-07 06:12:36

标签: sql-server database data-warehouse

我目前正在创建Data ware house,我需要知道是否需要外键才能创建星形或雪花图案?

如果没有任何外键约束..我将如何区分btw星和雪花模式?

我读过这篇文章,但我仍然没有得到它Is it good practice to have foreign keys in a datawarehouse (relationships)?

如果没有Fk约束你会如何区分星形和雪花图案?

1 个答案:

答案 0 :(得分:1)

不,您不需要数据仓库中的外键。

外键用于引用完整性:即"确保此列中的值存在于另一列"中。但是,大多数人在将数据放入仓库时使用ETL工具进行参照完整性检查,因为外键会降低插入性能。

表可以通过列中的值在概念上与其他表相关,而无需外键。例如,如果TableA具有CustomerID列,而TableB具有CustomerID列,则可以说这些表是相关的,即使没有外键也是如此。

星型模式通常只有一级规范化(事实表有一些维度表,但维度表不与任何其他表相关),而雪花模式具有更多级别的规范化(维度表是"相关"到其他表)。这就是你说出差异的方式。没有外键。

您可能还希望支持Hot-Swappable Dimensions,这会使外键变得毫无意义。

Snowflake也可能是反模式,所以只需使用星型模式而不用担心。