Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access2007

access 2007查找、隐藏或删除重复数据

时 间:2008-04-23 07:58:15
作 者:Microsoft   ID:11  城市:上海  QQ:3002789054点击这里给麥田发消息
摘 要:查找、隐藏或删除重复数据
正 文:

本文介绍了如何使用 Microsoft Office Access 2007 来查找和隐藏或删除重复数据。一般说来,您应当尽可能删除重复的值以降低成本并提高数据准确性。Office Access 2007 提供了多种方法来查找和隐藏或删除重复值,本文介绍了如何使用最常见的方法来执行这些操作。


了解重复数据

使用关系数据库的一个主要原因就是为了避免重复数据。但是,随着数据库存在时间的延长,常常会出现重复的值,尤其是当有多个用户输入数据时更容易出现这种情况。通常,删除重复数据可以节省存储费用,并使数据保持较高的准确性。这种高准确性反过来又可以帮助您做出更好的业务决策。例如,如果您多次输入同一份销售订单,则客户可能会收到不需要的货物,这种重复发货将增加运货成本和会计成本,从而造成浪费。

 

重复的真正含义

 

在您采取措施标识和删除重复记录之前,请记住:您需要依赖您的数据知识。与设计数据库的过程不同,您无法遵循一组特定的规则或过程来精确地查找和删除重复记录。在执行操作时,请记住一点:数据库查询可能会返回看似重复的记录,但实际上这些结果都是有效数据。如果您未在查询中包括唯一标识每条记录的字段,就常常会发生这种表面上的重复。有关如何在查询中包括必要的字段并避免出现误报的详细信息,请参阅本文后面的了解在什么情况下记录不是重复记录一节。

此外,您还必须记住:并非所有重复数据都可以删除,因为有些重复是数据库正常工作所必需的。换句话说,数据库可能既包含必要的冗余,也包含不必要的冗余,而您只希望删除不必要的冗余。

必要的冗余通常分为两类。第一类冗余确保数据库可以正常工作。例如,无论何时在表之间建立一对多或多对多关系,都需要重复主键字段中的数据。

第二类必要冗余是在使用数据库的过程中产生的。例如,您可能会多次输入某个城市或供应商的名称,或多次输入某个常见人名(如 John Smith)。如果出现这种情况,则可以放心使用这些重复数据,因为数据库中的其他字段(例如主键值、地址和邮政编码)将包含足够多的唯一信息来将这些记录排除在重复记录之外。

不必要的冗余可能以多种形式出现:

  • 两条或更多条记录包含重复字段。  即使并非两条记录中的所有字段都包含匹配值,这两条记录也可能被视为重复记录。例如,在下图中,您将看到 Antonio Moreno Taquería 的两条记录。

    “顾客”表中某个客户的重复记录

    即使每条记录都具有唯一的客户 ID(最左侧列中的值),“名称”、“地址”和“城市”字段中的值仍有可能相同。在这种情况下,即使只有部分匹配,您仍有必要应用您的业务知识判断记录是否为重复记录。

  • 两个或更多个表可以包含类似数据。  例如,您可能发现“顾客”表和“客户”表中包含相同客户的记录。

    部分数据重叠的“客户”表和“顾客”表

    即使两个表具有不同的结构,它们仍有可能包含同一类型的信息 - 客户数据,因此,应当考虑将所有唯一(非重复)值合并到一个表中并删除多余的表。  

  • 两个或更多个数据库包含类似数据。  如果您发现两个或更多个数据库包含类似数据,或者您继承了与当前数据库重叠的数据库,则必须对这些数据库的数据和结构进行比较,然后采取必要的步骤合并数据库。

    手动比较数据库并不是一件容易的事,即使是很小的数据库也是如此。如果需要这方面的帮助,可以向许多第三方供应商购买用于比较 Access 数据库的内容和结构的专用工具。

    请访问 Microsoft Office 市场的“数据库管理”部分,查找具有最新功能的数据库管理工具。

 注释   如果您采取措施删除表中的重复数据后仍然发现窗体或报表中有重复的数据,则可能是由于窗体或报表设计错误造成的。请确保基础表与查询之间的连接正确,并且窗体或报表部分所包含的、绑定到同一个控件来源的控件不超过一个。

有关报表设计的详细信息,请参阅修改、编辑或更改报表一文。

了解在什么情况下记录不是重复记录

在某些情况下,例如查看查询所返回的数据时,即使基础表看起来仅包含唯一记录,您仍可能会看到看似重复的记录。如果您的视图不包括唯一标识记录的字段,则可能会出现问题。例如,下图显示了查询返回的数据。

不包括能够唯一标识记录的字段的视图

在该视图中,有多条记录显示为重复记录。如果您为查询添加一个或多个其他字段,例如客户名称或每份订单的主键字段(订单 ID),您会发现实际上每条记录都是唯一的,如下图所示:

视图现在包括“订单 ID”字段,从而消除了重复记录

创建查询时,通常应包括一个或多个能唯一标识每条记录的字段。通常,主键字段就能够实现该功能,但您也可以改用其他字段的组合。例如,假设某个常见联系人姓名或某个城市名出现多处,但如果您包括了电话号码和地址,则这种数据组合将使每条记录都具有唯一性。

处理重复数据时需要考虑的因素

处理重复记录的方式取决于以下几个因素:

  • 重复的性质和范围  您只是在单个表中发现重复数据,还是发现两个相似的表(位于同一数据库或位于两个不同的数据库)中包含重叠数据?或者,您是否在基于两个或更多个相关表的视图中发现重复记录?
  • 您的特定需求  您希望如何处理重复数据?您希望从数据库中删除重复记录,还是仅在视图中隐藏它们?或者,您是否希望对重复记录中的值进行计数、计算平均值或汇总?您是否需要考虑删除或隐藏哪些重复记录?如果是,您希望手动查看并删除这些记录,还是基于某个条件删除这些记录?在开始删除记录之前,您是否还希望更新或合并一条或多条记录?

通过回答上述问题(或类似的问题),再加上您的数据知识,就可以制定一份处理冗余数据的计划。

删除重复数据的常规准备工作

如果您选择删除重复记录,则必须先处理所有现有的表关系。通常,大部分数据库都使用一对多关系。例如,您的客户可能比较少,但每个客户下的订单非常多。因此,客户数据表位于关系的“一”端,而订单数据位于关系的“多”端。

在进行操作时请记住以下规则:如果要删除的数据位于关系的&

Access软件网官方交流QQ群 (群号:54525238)       Access源码网店


常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助