📜  什么是数据规范化,为什么它很重要?

📅  最后修改于: 2022-05-13 01:57:02.683000             🧑  作者: Mango

什么是数据规范化,为什么它很重要?

规范化是减少表中数据冗余并提高数据完整性的过程。那你为什么需要它?如果SQL没有规范化,就会出现很多问题,比如:

  • 插入异常:当我们无法在没有其他数据的情况下将数据插入表中时,就会发生这种情况。
  • 更新异常:这是由于数据冗余和数据更新引起的数据不一致。
  • 删除异常:由于删除其他属性而导致某些属性丢失时发生。

所以规范化是一种在数据库中组织数据的方式。规范化涉及组织数据库中的列和表,以确保使用数据库约束正确实现它们的依赖关系。规范化是以适当的方式组织数据的过程。它用于最小化数据库中各种关系的重复。它还用于对表中的插入、删除和更新等异常进行故障排除。它有助于将一个大表拆分为几个小的规范化表。关系链接和链接用于减少冗余。规范化,也称为数据库规范化或数据规范化,是关系数据库设计的重要组成部分,因为它有助于提高数据库的速度、准确性和效率。

现在出现了一个问题:SQL和规范化之间有什么关系?好吧,SQL 是用于与数据库交互的语言。 SQL 中的规范化改进了数据分布。为了启动交互,必须对数据库中的数据进行规范化。否则,我们无法继续,因为它会导致异常。规范化还可以更容易地设计数据库,使其具有原子元素的最佳结构(即,不能分解成更小部分的元素)。通常,我们将大表拆分为小表以提高效率。 Edgar F. Codd 在 1970 年定义了第一个范式,最后定义了其他范式。规范化数据库时,将数据组织成表和列。确保每个表只包含相关数据。如果数据不直接相关,请为该数据创建一个新表。规范化是必要的,以确保表只包含与主键直接相关的数据,每个数据字段只包含一个数据元素,并删除冗余(重复和不必要的)数据。

基本范式:

如果每个域属性都由一个原子或不谨慎的值组成,则在 1NF 中考虑关系。它是关系的一个非常重要的属性,可以在 RDBMS 中访问。

只有当关系在 1NF 中时,关系才在 2NF 中,因为表中的所有非键属性都依赖于表的主键。这种类型适用于那些使用复合键连接的关系。表的关系与一个由多个属性组成的键相结合。

一个关系在 3NF 中当且仅当它在 2NF 中并且没有转换依赖。

归一化的主要用途是为了消除由于传递依赖而引起的异常。规范化是最小化冗余并删除插入、更新和删除异常。它将较大的表划分为较小的表,并使用关系将它们链接起来。

好处:

规范化数据库有很多好处。一些主要优点是:

  • 通过使用规范化的数据库冗余或数据重复可以解决。
  • 我们可以通过使用归一化来最小化空值。
  • 产生更紧凑的数据库(由于更少的数据冗余/零)。
  • 最小化/避免数据修改问题。
  • 它简化了查询。是
  • 数据库结构更清晰,更容易理解。
  • 可以在不影响现有数据的情况下扩展数据库。
  • 查找、排序和索引可以更快,因为表很小并且数据页上可以容纳更多行。

我们现在可以看到,非规范化、规范化和非规范化的概念是数据库中使用的技术,是可区分的术语。规范化是一种通过消除冗余数据来最小化插入、消除和更新异常的方法。反向规范化过程,它为数据添加冗余以提高特定于应用程序的性能和数据完整性。

ParametersNormalizationDenormalization
ConceptNormalization is the process of creating a general scheme for storing non-redundant and consistent data.A process of combining the data so that it can be queried speedily is known as denormalization.
GoalReduce data redundancy and inconsistency. Execute queries faster through introducing redundancy. 
 
Used inOLTP system and its focus is to speed up the insertion, deletion, and update of abnormalities and the preservation of quality data.  OLAP system, focusing on better search and analysis.
Data integrityHere data integrity is well maintained.Here data integrity may not retain.
RedundancyNormalization eliminated redundancy.Denormalization added redundancy.
Number of tablesIn normalization number of tables increases.Whereas denormalization decreases tables.
Disk spaceOptimized usage of disk space is possible.Whereas in denormalization optimal use of disk space is not possible.

何时规范化数据规范化对于 OLTP 系统尤为重要,其中插入、更新和删除操作速度很快,并且通常由最终用户启动。另一方面,规范化并不总是被认为对 OLAP 系统和数据仓库很重要。通常对数据进行非规范化以提高需要在该上下文中运行的查询的性能。

何时对数据进行非规范化 最好在几种情况下对数据库进行非规范化。许多数据仓库和 OLAP 应用程序使用非规范化数据库。造成这种情况的主要原因是性能。这些应用程序通常用于执行复杂的查询。连接许多表通常会返回非常大的记录。数据库非规范化可能还有其他原因,例如,强制执行某些可能未强制执行的限制。

以下是您可能希望对数据库进行非规范化的一些常见原因:

  • 最常见的查询需要访问整个串联数据集。
  • 大多数应用程序在连接表时执行表扫描。
  • 派生列的计算复杂度需要过于复杂的临时表或查询。
  • 您可以实现原本无法实现的约束(基于 DBMS)

尽管规范化通常被认为是 OLTP 和其他事务数据库的强制性要求,但它并不总是适用于某些分析应用程序。