除了标准化,还有什么其他方法可以减少关系数据库中的数据冗余?

时间:2018-12-04 14:26:56

标签: relational-database redundancy

我接受了采访,并被问到减少冗余的3种方法,但我只记得一种:标准化。

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

1 个答案:

答案 0 :(得分:2)

“冗余”是非正式的,在情人眼中,本身并不是好事还是坏事。

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

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

  

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

我这种“冗余”的版本:当两个逻辑上不相等的查询表达式(对于所有数据库值均不返回同一表)对所有数据库均返回同一个表时,数据库涉及一些冗余合法 / 受约束的数据库值。