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

Posted

技术标签:

【中文标题】数据仓库是不是需要满足 2NF 或其他范式?【英文标题】:Does a data warehouse need to satisfy 2NF or another normal form?数据仓库是否需要满足 2NF 或其他范式? 【发布时间】:2017-10-02 08:53:04 【问题描述】:

我正在调查数据仓库。我有一个关于星型模式的问题。

它在 Oracle® OLAP 应用程序开发人员指南 10g 第 1 版 (10.1) 3.2.1 维度表:TIME_DIMhttps://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 或任何一个。)

【问题讨论】:

嗨。请让问题自成一体。因此,如果您认为链接页面的某些特定部分对您的问题是必要的,那么请编辑您的消息以说出它们和/或在合理使用中引用。 (最好保留该链接以获取更多信息。) 【参考方案1】:

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

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

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

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

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

【讨论】:

我认为数据仓库更像是报表而不是 OLTP 数据库。

以上是关于数据仓库是不是需要满足 2NF 或其他范式?的主要内容,如果未能解决你的问题,请参考以下文章

数据库范式1NF 2NF 3NF详细阐述

数据库三范式

数据库三范式

数据库中的1NF、2NF、3NF、BCNF、4NF、5NF是怎么回事?

程序员面试备战篇:18个经典MySQL面试专题解析,干货分享

数据库三范式是什么?