数据冗余和数据不一致之间的区别

时间:2019-08-11 21:22:09

标签: database

如果在多个位置复制数据,则数据是冗余的;如果同一数据的多个副本不匹配,则数据不一致。那么数据不一致是否意味着数据冗余?  我们如何更清楚地区分数据不一致和冗余?

3 个答案:

答案 0 :(得分:1)

我认为这两个词不是同一个问题。如果正确完成,冗余就没有问题。经常需要正确地做事。 如果您不正确地执行冗余操作,则会导致不一致。

在非冗余数据中也可能发生不一致,请参见事务。

答案 1 :(得分:1)

不一致不仅与“ 数据副本”有关。

不一致通常是指预期的但未强制执行的约束。例如,没有客户(或没有产品)的订单。或负工资。或开始时间在结束时间之后的时间预订。或预订日期重叠的房间。或两个具有相同产品编号的产品。

确切定义“不一致”的地方是业务需求所定义的。

答案 2 :(得分:0)

为消除不一致,应将输入限制为表单上的选择器字段。

当然,最好的方法是使输入字段为一个组合框,数据源为您提供的表或查询,并将选择范围限制为仅在源表/查询中提供的那些条目。

第二个最好的方法是让输入字段是一个键入时自动打开的组合框,并带有一个数据源,因为它是一个查询,它给出了目标表中唯一值的字母顺序列表,但是还应该允许“添加新”值。

在任何一种情况下,当用户开始在该字段中输入输入时,组合框将打开并显示与用户键入的第一个字符的匹配项。如果存在紧密匹配项,则用户将能够选择它,然后它将完全匹配组合框中列出的条目。

在第二种情况下,如果他们需要的东西不在列表中,它还将允许用户创建一个新条目。

以我的经验,这是消除不一致并确保任何冗余数据一致的最佳方法。

另一方面,如果要消除冗余或重复数据(例如在每条记录中存储“洛杉矶”的所有11个字符),则应该对数据表进行规范化,在其中创建包含冗余的单独表数据,并在您的主数据记录中存储到该相关表的索引。例如,您可以有一个CITIES表,其中“ Los Angeles”作为条目ID 1,“ San Francisco”作为条目ID2。然后,当您有15,000人从洛杉矶注册而11,000人从旧金山注册时,您不必仅存储这些城市的名称15,000和11,000次,而仅存储这些城市的ID。这称为关系数据库,有助于消除冗余。

这里有一篇有关数据库规范化的好文章: https://www.lifewire.com/database-normalization-basics-1019735