数据仓库是否需要满足 2NF 或其他范式?

Does a data warehouse need to satisfy 2NF or another normal form?

我正在研究数据仓库。我对星型模式有疑问。


Oracle® OLAP 应用程序开发人员指南
10g 第 1 版 (10.1)
3.2.1 维度Table:TIME_DIM
https://docs.oracle.com/cd/B13789_01/olap.101/b10333/global.htm#CHDCGABE

为了表示层次结构 MONTH -> QUARTER -> YEAR,我们需要一些键,例如:YEAR_ID、QUARTER_ID。但是有些地方我不明白:

1) 为什么我们需要字段YEAR_DSC & QUARTER_DSC?我认为我们可以从 YEAR & QUARTER TABLE 中查找这些值。它打破了 2NF。

2) 数据仓库中的模式需要满足的范式是什么? (1NF、2NF、3NF 或任何。)

NF(规范形式)对数据仓库基表无关紧要。

我们规范化以减少某些类型的冗余,这样当我们更新数据库时,我们就不必在多个地方说同样的话,这样我们就不会意外地错误地不说同样的话需要在多处说。这在查询结果中不是问题,因为我们没有更新它们。数据仓库的基表也是如此。 (这也只是对其原始数据库的基表的查询。)

数据仓库通常针对读取速度进行优化,这通常意味着与原始数据库相比进行一些非规范化以避免以 space 为代价的重新计算。 (请注意,虽然有时重新读取较大的部分可能比读取较小的部分并重新计算大的部分慢。)我们可能不希望在移动到数据仓库时 drop 规范化表,因为他们回答简单的查询,我们不想通过重新计算 他们 来减慢速度。除了这些权衡之外,没有理由 去规范化。 Some particular warehouse design methods might have their own rules about what parts should be denormalized what amounts.

(无论我们最初的数据库设计 NF 选择是什么,我们都应该首先规范化为 5NF,然后有意识地反规范化。我们不需要规范化或知道约束来更新或查询数据库。)

阅读一些教科书基础知识,了解我们为何规范化以及为何使用数据仓库。