【问题标题】:Is database normalization still necessary?还需要数据库规范化吗?
【发布时间】:2011-01-11 11:57:24
【问题描述】:

数据库规范化仍然是“事情”吗?

当我在数据库课程中学习时,我们学习了所有级别的规范化,并被告知我们必须始终这样做。

现在,随着所有NoSQL 的运动,似乎不再需要标准化?

【问题讨论】:

    标签: database database-normalization


    【解决方案1】:

    NoSQL 不是灵丹妙药:它只是一种技术,可以更好地适应某些情况。对于关系型数据,RDBMS 不会很快消失。

    【讨论】:

      【解决方案2】:

      这取决于使用数据库的应用程序类型。

      对于 OLTP 应用程序(主要是数据输入,具有许多 INSERT、UPDATE 和 DELETES 以及 SELECT),标准化通常是一件好事。

      对于 OLAP 和报告应用程序,规范化没有帮助。 SELECT 查询将针对非规范化模式运行得更快,这可以通过视图来实现。

      您还可以在这些非常流行的类似问题中找到一些有用的信息:

      Should I normalize my DB or not?

      In terms of databases, is “Normalize for correctness, denormalize for performance” a right mantra?

      What is the resource impact from normalizing a database?

      How to convince someone to normalize a database?

      Is it really better to use normalized tables?

      【讨论】:

      • 感谢您富有洞察力的回复!只有一个问题 - 什么是 OLTP?
      • 在线事务处理。它指的是用户正在执行数据输入或 CRUD(创建、读取、更新、删除)的应用程序。在这些应用程序中,除了 SELECT 之外,还有对数据库的 INSERT、UPDATE 和 DELETE 数据调用。相比之下,在线分析处理和报告中,大部分数据库交互是 SELECT,很少有 INSERT、UPDATE 或 DELETE。
      【解决方案3】:

      是的,因为事务系统总是正常化的,否则您可能会在以后遇到重大问题。对于将用于报告/OLAP 非规范化模式的数据库可能非常有用。

      【讨论】:

        【解决方案4】:

        经验法则“JOIN 的处理能力很昂贵”。我在为大小项目创建数据库时使用。包含用户名、地址等数据的表格应始终进行规范化,因为它们最近很少被访问,您如何使用所教示例进行教学。现在近年来web2.0数据、应用程序、移动服务等实际上已经采取了一种不同类型的数据,随着内存代码的丰富性甚至更低,它可以节省处理能力将它们都放在同一个“表”上而不是规范化它。

        【讨论】:

          猜你喜欢
          • 2011-01-06
          • 2020-07-07
          • 2018-08-21
          • 2011-03-25
          • 2018-07-08
          • 1970-01-01
          • 2018-01-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多