我正在调查数据仓库。我有关于星型模式的问题。
这是在
Oracle®OLAP应用程序开发人员指南
10g第1版(10.1)
3.2.1尺寸表:TIME_DIM
https://docs.oracle.com/cd/B13789_01/olap.101/b10333/global.htm#CHDCGABE
表示层次结构MONTH - > QUARTER - >年,我们需要一些键,例如:YEAR_ID,QUARTER_ID。但有一些我不明白的事情:
1)为什么我们需要字段YEAR_DSC& QUARTER_DSC?我认为我们可以从YEAR&中查找这些值。 QUARTER TABLE。它打破了2NF。
2)数据仓库中的模式需要满足的正常形式是什么? (1NF,2NF,3NF或任何。)
答案 0 :(得分:1)
NF(普通表格)对数据仓库基表无关紧要。
我们规范化以减少某些类型的冗余,这样当我们更新数据库时,我们不必在多个地方说同样的事情,因此我们不会意外地错误地不说同样的事情需要它在多个地方说。这不是查询结果中的问题,因为我们没有更新它们。数据仓库的基表也是如此。 (这也只是对其原始数据库基表的查询。)
数据仓库通常针对读取速度进行了优化,这通常意味着与原始数据库相比的一些非规范化,以避免以空间为代价进行重新计算。 (请注意,有时重读更大的内容可能比阅读较小的部分并重新计算大的东西要慢。)我们可能不希望在移动到数据仓库时删除规范化表,因为它们回答简单查询,我们不想通过重新计算他们来减速。除了那些权衡之外,没有理由不去反规范化。 Some particular warehouse design methods might have their own rules about what parts should be denormalized what amounts
(无论选择我们的原始数据库设计NF,我们应该首先将其标准化为5NF,然后有意识地进行非规范化。我们不需要规范化或知道更新或查询数据库的约束。)
阅读一些教科书基础知识,了解我们为什么要正常化&为什么我们使用数据仓库。