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