时 间:2008-4-23 7:58:15
作 者:Microsoft
摘 要:查找、隐藏或删除重复数据
正 文:
本文介绍了如何使用 Microsoft Office Access 2007 来查找和隐藏或删除重复数据。一般说来,您应当尽可能删除重复的值以降低成本并提高数据准确性。Office Access 2007 提供了多种方法来查找和隐藏或删除重复值,本文介绍了如何使用最常见的方法来执行这些操作。
使用关系数据库的一个主要原因就是为了避免重复数据。但是,随着数据库存在时间的延长,常常会出现重复的值,尤其是当有多个用户输入数据时更容易出现这种情况。通常,删除重复数据可以节省存储费用,并使数据保持较高的准确性。这种高准确性反过来又可以帮助您做出更好的业务决策。例如,如果您多次输入同一份销售订单,则客户可能会收到不需要的货物,这种重复发货将增加运货成本和会计成本,从而造成浪费。
在您采取措施标识和删除重复记录之前,请记住:您需要依赖您的数据知识。与设计数据库的过程不同,您无法遵循一组特定的规则或过程来精确地查找和删除重复记录。在执行操作时,请记住一点:数据库查询可能会返回看似重复的记录,但实际上这些结果都是有效数据。如果您未在查询中包括唯一标识每条记录的字段,就常常会发生这种表面上的重复。有关如何在查询中包括必要的字段并避免出现误报的详细信息,请参阅本文后面的了解在什么情况下记录不是重复记录一节。
此外,您还必须记住:并非所有重复数据都可以删除,因为有些重复是数据库正常工作所必需的。换句话说,数据库可能既包含必要的冗余,也包含不必要的冗余,而您只希望删除不必要的冗余。
必要的冗余通常分为两类。第一类冗余确保数据库可以正常工作。例如,无论何时在表之间建立一对多或多对多关系,都需要重复主键字段中的数据。
第二类必要冗余是在使用数据库的过程中产生的。例如,您可能会多次输入某个城市或供应商的名称,或多次输入某个常见人名(如 John Smith)。如果出现这种情况,则可以放心使用这些重复数据,因为数据库中的其他字段(例如主键值、地址和邮政编码)将包含足够多的唯一信息来将这些记录排除在重复记录之外。
不必要的冗余可能以多种形式出现:
即使每条记录都具有唯一的客户 ID(最左侧列中的值),“名称”、“地址”和“城市”字段中的值仍有可能相同。在这种情况下,即使只有部分匹配,您仍有必要应用您的业务知识判断记录是否为重复记录。
即使两个表具有不同的结构,它们仍有可能包含同一类型的信息 - 客户数据,因此,应当考虑将所有唯一(非重复)值合并到一个表中并删除多余的表。
手动比较数据库并不是一件容易的事,即使是很小的数据库也是如此。如果需要这方面的帮助,可以向许多第三方供应商购买用于比较 Access 数据库的内容和结构的专用工具。
请访问 Microsoft Office 市场的“数据库管理”部分,查找具有最新功能的数据库管理工具。
注释 如果您采取措施删除表中的重复数据后仍然发现窗体或报表中有重复的数据,则可能是由于窗体或报表设计错误造成的。请确保基础表与查询之间的连接正确,并且窗体或报表部分所包含的、绑定到同一个控件来源的控件不超过一个。
有关报表设计的详细信息,请参阅修改、编辑或更改报表一文。
在某些情况下,例如查看查询所返回的数据时,即使基础表看起来仅包含唯一记录,您仍可能会看到看似重复的记录。如果您的视图不包括唯一标识记录的字段,则可能会出现问题。例如,下图显示了查询返回的数据。
在该视图中,有多条记录显示为重复记录。如果您为查询添加一个或多个其他字段,例如客户名称或每份订单的主键字段(订单 ID),您会发现实际上每条记录都是唯一的,如下图所示:
创建查询时,通常应包括一个或多个能唯一标识每条记录的字段。通常,主键字段就能够实现该功能,但您也可以改用其他字段的组合。例如,假设某个常见联系人姓名或某个城市名出现多处,但如果您包括了电话号码和地址,则这种数据组合将使每条记录都具有唯一性。
处理重复记录的方式取决于以下几个因素:
通过回答上述问题(或类似的问题),再加上您的数据知识,就可以制定一份处理冗余数据的计划。
如果您选择删除重复记录,则必须先处理所有现有的表关系。通常,大部分数据库都使用一对多关系。例如,您的客户可能比较少,但每个客户下的订单非常多。因此,客户数据表位于关系的“一”端,而订单数据位于关系的“多”端。
在进行操作时请记住以下规则:如果要删除的数据位于关系的&
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |