Дедупинг редко бывает простым. Это потому, что записи, которые должны быть дедуплированы, часто имеют немного разные значения - это некоторые из полей. Поэтому выбрать, какую запись сохранить, может быть проблематично. Кроме того, дупсы - это записи о людях, и трудно определить, являются ли два Джона Смита двумя людьми или одним человеком, который дублируется. Поэтому потратьте большую часть (50% или более от всего проекта) своего времени на определение того, что представляет собой дубликат, и как обрабатывать различия и дочерние записи.
Откуда вы знаете, какое значение является правильным? Дальнейшая дедупликация требует, чтобы вы обрабатывали все дочерние записи, не являющиеся сиротами. Что происходит, когда вы обнаруживаете, что, изменяя идентификатор дочерней записи, вы внезапно нарушаете один из уникальных индексов или ограничений - это произойдет в конце концов, и ваш процесс должен это обработать. Если вы по глупости решили применить все свои ограничения только тщательно, вы можете даже не знать, что ограничения нарушены. Когда у вас есть 10000 записей для дедупликации, вы не собираетесь просматривать приложение для дедупликации по одной за раз. Если ограничение отсутствует в базе данных, удачи в сохранении целостности данных при дедупликации.
Еще одним осложнением является то, что дупли не всегда совпадают точно по имени или адресу. Например, торговый представитель по имени Джоан Мартин может быть дубликатом имени торгового представителя Джоан Мартин-Джонс, особенно если у них одинаковый адрес и адрес электронной почты. ИЛИ вы могли бы иметь имя Джона или Джонни. Или тот же адрес, кроме одной сокращенной записи ST. и одна прописана улица. На сервере SQL вы можете использовать SSIS и нечеткую группировку для определения близких совпадений. Это часто самые распространенные ошибки, так как тот факт, что они не были точными совпадениями, является причиной того, что они были поставлены как первые.
Для некоторых типов дедупликации вам может потребоваться пользовательский интерфейс, чтобы лицо, выполняющее дедупликацию, могло выбрать, какое из двух значений использовать для определенного поля. Это особенно верно, если человек, которого дедуплицируют, играет две или более роли. Может случиться так, что данные для определенной роли обычно лучше, чем данные для другой роли. Или может быть так, что только пользователи наверняка будут знать, какое значение является правильным, или им может понадобиться связаться с людьми, чтобы выяснить, действительно ли они дураки, или просто два человека с одинаковыми именами.