如果在许多地方复制数据,则数据是冗余的;如果相同数据的多个副本不匹配,则数据是不一致的。那么,数据不一致是否意味着数据冗余?我们如何更清楚地区分数据不一致和冗余?
发布于 2019-08-12 17:06:37
不一致不仅仅与“数据副本”有关。
不一致通常是关于预期的约束,但不是强制的。例如,没有客户(或没有产品)的订单。或者是负薪。或者开始时间在结束时间之后的时间预订。或者预订日期重叠的房间。或具有相同产品编号的两个产品。
确切定义“不一致”的是由业务需求定义的。
发布于 2019-08-12 16:37:26
我认为这两个术语不是同一个问题。如果处理得当,冗余是没有问题的。更重要的是,做正确的事情往往需要它。如果您不正确地进行冗余,就会导致不一致。
不一致也可能发生在非冗余数据中,请参阅事务。
发布于 2019-08-14 09:02:35
若要消除不一致,应将输入限制为表单上的选择器域。
当然,最好的方法是让输入字段是一个组合框,数据源是您提供的表或查询,并将选择限制为您在源表/查询中提供的那些条目。
第二个最好的方法是让输入字段是一个自动打开的输入组合框,它的数据源是一个查询,该查询提供目标表中按字母顺序排列的唯一值列表,但也应该允许“添加新的”值。
在这两种情况下,当用户开始在该字段中键入输入时,组合框将打开并显示与用户键入的第一个字符相匹配的内容。如果存在接近匹配的条目,用户将能够选择它,然后它将与组合框中列出的条目完全匹配。
在第二种情况下,如果用户需要的内容不在列表中,它还允许用户创建新条目。
根据我的经验,这是消除不一致并确保任何冗余数据一致的最佳方法。
另一方面,如果您想要消除冗余或重复数据,例如在每条记录中存储所有11个字符的"Los Los“,则应该规范化数据表,在其中创建一个包含冗余数据的单独表,并在主数据记录中存储该相关表的索引。例如,您可以有一个城市表,条目ID为1,条目ID为2。如果有15,000人从洛杉矶注册,11,000人从旧金山注册,则不必存储这些城市的名称15,000和11,000次,只需存储这些城市的ID即可。这称为关系数据库,有助于消除冗余。
这里有一篇关于数据库规范化的好文章:https://www.lifewire.com/database-normalization-basics-1019735
https://stackoverflow.com/questions/57453708
复制相似问题