### Towards certain fixes with editing rules and master data

Wenfei Fan, Jianzhong Li, Shuai Ma, Nan Tang, Wenyuan Yu
2010 Proceedings of the VLDB Endowment
A variety of integrity constraints have been studied for data cleaning. While these constraints can detect the presence of errors, they fall short of guiding us to correct the errors. Indeed, data repairing based on these constraints may not find certain fixes that are absolutely correct, and worse, may introduce new errors when repairing the data. We propose a method for finding certain fixes, based on master data, a notion of certain regions, and a class of editing rules. A certain region is
more » ... certain region is a set of attributes that are assured correct by the users. Given a certain region and master data, editing rules tell us what attributes to fix and how to update them. We show how the method can be used in data monitoring and enrichment. We develop techniques for reasoning about editing rules, to decide whether they lead to a unique fix and whether they are able to fix all the attributes in a tuple, relative to master data and a certain region. We also provide an algorithm to identify minimal certain regions, such that a certain fix is warranted by editing rules and master data as long as one of the regions is correct. We experimentally verify the effectiveness and scalability of the algorithm. Fig. 1(b) . Each tuple in Dm specifies a person in the uk in terms of the name, home phone (Hphn), mobile phone (Mphn), address, date of birth (DOB) and gender. An example editing rule is: Example 1.2: A master relation Dm is shown in • eR1: for an input tuple t, if there exists a master tuple s in Dm with s[zip] = t[zip], then t should be updated by t[AC, str, city] := s[AC, str, city], provided that t[zip] is certain, i.e., it is assured correct by the user. This rule makes corrections to attributes t[AC] and t[str], by taking values from master data s1. Another editing rule is • eR2: if t[type] = 2 (indicating mobile phone) and if there is a master tuple s with s[Mphn] = t[phn], then