我目前正在创建Data ware house,我需要知道是否需要外键才能创建星形或雪花图案?
如果没有任何外键约束..我将如何区分btw星和雪花模式?
我读过这篇文章,但我仍然没有得到它Is it good practice to have foreign keys in a datawarehouse (relationships)?
如果没有Fk约束你会如何区分星形和雪花图案?
答案 0 :(得分:1)
不,您不需要数据仓库中的外键。
外键用于引用完整性:即"确保此列中的值存在于另一列"中。但是,大多数人在将数据放入仓库时使用ETL工具进行参照完整性检查,因为外键会降低插入性能。
表可以通过列中的值在概念上与其他表相关,而无需外键。例如,如果TableA具有CustomerID列,而TableB具有CustomerID列,则可以说这些表是相关的,即使没有外键也是如此。
星型模式通常只有一级规范化(事实表有一些维度表,但维度表不与任何其他表相关),而雪花模式具有更多级别的规范化(维度表是"相关"到其他表)。这就是你说出差异的方式。没有外键。
您可能还希望支持Hot-Swappable Dimensions,这会使外键变得毫无意义。
Snowflake也可能是反模式,所以只需使用星型模式而不用担心。