Предотвращение дублирования ввода данных является распространенной проблемой и может быть обработано несколькими способами. Ключевым моментом, на котором я бы хотел сосредоточиться, является то, что любое успешное решение должно быть проще для лица, занимающегося вводом данных, или оно не будет соблюдаться (например, указание DP на проверку того, что клиент уже существует, не работает, поскольку требует больше работы с его стороны). Вне всякого сомнения, я могу придумать несколько способов решения этой проблемы.
Первое решение основано на ключах; иметь некоторую проверку уникальной информации, которая имеет низкую вероятность ввода по-другому. Наиболее распространенный случай, который я видел, - это адрес электронной почты, уменьшенный до строчных букв. Следующим распространенным является номер телефона (хотя более распространенным является наличие одного номера телефона для всего офиса или дома). Если адрес электронной почты существует, то клиент должен существовать, поэтому пользователь не может добавить его в качестве нового клиента, вместо этого он автоматически заполняет форму на основе данных, связанных с этим клиентом. Это нравится пользователям, потому что им нужно всего лишь ввести один фрагмент данных, а остальные автоматически заполняются.
Второе решение, которое может дополнить первое, основано на автозаполнении (http://en.wikipedia.org/wiki/Autocomplete);. Поскольку пользователь вводит данные для клиента, ваше приложение обеспечивает автоматическое заполнение для существующих данных клиента, которое соответствует введенному. Это улучшает вероятность того, что пользователь выберет существующую запись, а не наберет все новые данные. Это позволяет, например, кому-то печатать «Джон См» и видеть «Джон Смит, Джон Смарт, Джон Смак и т. д.». Каждое поле заполнено сужается выбор для автозаполнения для последующих полей (например, только так много Джон Смит в Бостоне, штат Массачусетс ...). Пользователям это нравится, потому что, опять же, это уменьшает объем работы, которую они должны сделать.
Третье решение, которое было затронуто ранее в другом ответе, - это нечеткие поиски. Это немного сложно реализовать хорошо, но очень мощно. Многие из популярных поисковых систем предприятия (например, Автономность, FAST, Verity и т. Д.) Делают это очень хорошо. Но умный программист также может реализовать собственное решение. Ключевые моменты включают поиск без учета регистра (так что поиск Lafleur будет соответствовать LaFleur) или использование SoundEx (поэтому поиск John будет соответствовать Jon). Для получения дополнительной информации см. http://en.wikipedia.org/wiki/Soundex.
Удачи,
Rick