
24
|
第
2
章
2.2.4
多重记录
重复数据是另一类常见问题。多重记录指完全相同的记录出现了多次。这可能有多种原
因。例如,你有
10
个
数据文件,不小心将第
6
个加载了两次,或者在加载其中一个文件
的过程中,碰到了一条中断加载过程的损坏的记录。对于后一种情况,如果你编辑文件进
行修复,或者删除那条记录并重新加载文件,就会导致该文件的前一部分在数据库中被复
制两次。另外,多次注册也可能导致多重记录。例如,一个客户用相同或不同的邮件地址
多次注册账户,这会产生多个客户标识号,但其他的客户信息都相同。(听起来简单,但
此类实体消歧问题很难处理。)交叠的传感器也会导致数据重复,即是两个传感器记录了
相同的事件。在前面的用药差错研究中,
35%
的差错是因为数据没能正确地从一个系统
传输到另一个系统。有时是因为医疗数据提供不及时,有时是因为医疗诊断重复。就约翰
斯
•
霍普金斯医院而言,它的重复数据中有
92%
是因为登记人员急躁而产生的。
对于数据库,存在几种防止数据重复的机制。最安全的方式是给数据库表增添限制条件。
设置看门人。定义由一个或多个字段构成的组合键,使每条记录具有唯一性。定义了键值
限制的数据库表会在添加重复记录时报错或拒绝。另外一种方式是利用事务回滚机制,即
无论成功还是失败,整个事务要么被全部上传,要么被全部放弃。也就是说,数据库表记
录当前状态(类似事务快照),开始加载一组新数据,然后如果遇到任何问题,就停止并
回滚到初始状态,返回到事务快照处,并放弃已保存的所有数据。这种方法既提供了查找
数据损坏原因的机会,也意味着不用处理数据混乱问题。第三种不算高效的方式是针对每 ...