2012-03-30 7 views
0

Проблема Обзор:Есть ли класс PHP, который я могу использовать, чтобы убедиться, что мои пользователи не могут дважды вводить одни и те же данные (предотвращение дублирования данных)?

  • Мое приложение имеет форму регистрации.
  • Пользователи имеют привычку вводить одного и того же человека в систему дважды.
  • Мне нужно найти способ быстро и точно проверить данные, которые они ввели с другими клиентами в базе данных, чтобы узнать, находится ли этот клиент уже в базе данных.

Критерии В настоящее время используется:

  • Дубликат ПЛА
  • Дубликат Фамилия и Дата рождения
  • Дубликат Имя, дата рождения и частичного ПКР Match (другой клиент имеет SSN, где 5 из 9 цифр являются одинаковыми и в том же положении.
  • Дубликат имени и частичный SSN Матч (у другого клиента есть SSN, где 5 из 9 цифр - то же самое и в том же положении.
  • Дубликат Фамилия и частичная ПЛА Match (другой клиент имеет номер социального страхования, где 5 из 9 цифр являются одинаковыми и в том же положении.

В дополнение к этим проверкам, там было обсуждение использования Саундэкс обнаружить матчи на основе похож первого имени/фамилии.

есть ли класс PHP уже разработан для обработки что-то вроде этого? Может что-то подобное можно сделать на (Mysql) уровне базы данных?

Разъяснение:

  • Проблема существует не из-за отсутствием целостности данных на уровне базы данных, но из-за опечатки причинена во время процесса ввода. Приложение является приложением ввода данных. Пользователи берут физические бумажные копии форм и вводят данные в приложение.
+0

Не уверен в классе PHP, но для полных совпадений в MySQL существует спецификатор столбца 'UNIQUE', который предотвращает вставку дубликатов в этот столбец. Работает таблично, но не может обрабатывать сложные условия, такие как 'if NAME и DOB match - fail, но если NAME совпадают и DOB не совпадают - do't' – J0HN

+0

, когда вы имеете дело с дубликатами данных, это меньше проблема проверки, чем это проблема управления данными ... и по этой причине я скажу, что вы должны иметь дело с использованием mysql. – Kristian

ответ

1

Если я правильно понимаю вашу проблему правильно дело в том, что дубликаты, которые вы хотите, чтобы отфильтровать не necessarely равно как строки. Я сталкивался с подобными ситуациями несколько раз в прошлом, и я никогда не мог найти идеальных критериев для поиска логических дубликатов. На мой взгляд, лучший способ справиться с такими случаями - предоставить пользователю очень умную функциональность, подобную автозаполнению, поэтому, когда он пытается ввести данные, он видит все подобные записи, и он, надеюсь, не создаст новую запись для что он видит в списке. Такая душа может быть хорошим «приятелем» ваших еще не совершенных критериев.

1

Не PHP решение, но

можно заливать, что поля в базе данных как unique.

ALTER TABLE `users` ADD UNIQUE (
    `username` 
)