【问题标题】:Denormalizing a table to reduce joins非规范化表以减少连接
【发布时间】:2021-06-02 08:36:36
【问题描述】:

我正在为一个移动聊天应用程序的联系人建模,该应用程序从操作系统通讯录 (iOS/Android) 中获取联系人。

一个联系人可以有多个电话号码 (ContactPhoneNumbers)。

我正在探索将 Contact 属性合并到 ContactPhoneNumber (B) 中,而不是使用 Contact 表并进行连接 (A)。然后我可以直接获取用户的 ContactPhoneNumbers,并且已经拥有所有联系人的信息,因为在每条记录上都有重复。

做 B 而不是 A 会有什么缺点?

A-

B-

【问题讨论】:

    标签: database data-modeling rdbms database-normalization denormalization


    【解决方案1】:

    RDB 是专门为在表的条目之间创建r关系而构建的。规范化数据和创建表之间的关系可以确保数据完整性。通过避免使用这些工具,当更新这些非规范化数据点之一时,您必须更新与其关联的所有条目以确保数据完整性。

    当然,在某些情况下,非规范化数据可能是有益的,例如,当您的业务规则不要求所有相关条目具有完全相同的数据时,查询性能会遇到瓶颈,或者您只需要简单的查询就可以了不太简单的更新和插入。

    一般来说,为了提前提升性能,您应该避免预测未来和未知的瓶颈。构建您需要的东西,让工具为您完成工作 - 如果您以后遇到问题(或额外时间),那么您可以考虑改进设计。

    Should I normalize my DB or not?

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多