【问题标题】:What other ways are there to reduce data redundancy in relational databases beyond normalization?除了规范化之外,还有哪些其他方法可以减少关系数据库中的数据冗余?
【发布时间】:2018-12-04 14:26:56
【问题描述】:

我参加了一次面试,有人问我 3 种减少冗余的方法,但我只记得一种:规范化。

我一直在寻找另外 2 个,但我只能找到有关规范化的文章。

【问题讨论】:

    标签: relational-database redundancy


    【解决方案1】:

    “冗余”是非正式的,在旁观者看来,本身既不好也不坏。

    假设您有多行包含相同的字符串。您可以通过用 id 替换字符串并将表映射 id 到字符串来“减少冗余”。假设你已经在这样做了。您可以通过用字符串替换 id 并删除查找表(原始设计)来“减少冗余”。索引是多余的。缓存是多余的。低于 BCNF 的规范化增加了所有表中行 x 列的总和,因此增加了某种数据库“冗余”;但它减少了更新异常,因此减少了某种表“冗余”。 (4NF 和 5NF 确实减少了所有表中行 x 列的总和。)

    PS Chris Date 在Data Redundancy & Database Design 上有一些文章。他定义的“冗余”概念之一是:

    当且仅当数据库包含相同 [真实] 命题的两种不同表示(直接 [在基表中] 或间接 [在查询结果中])时,数据库才会涉及一些冗余。

    我的那种“冗余”版本:当两个在逻辑上不等价的查询表达式(不为所有数据库值返回同一个表)为所有数据库值返回同一个表时,数据库涉及一些冗余合法 / 受限 数据库值。

    【讨论】:

      猜你喜欢
      • 2018-03-31
      • 1970-01-01
      • 2014-12-02
      • 2010-11-09
      • 2017-03-03
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多