Есть ли класс PHP, который я могу использовать, чтобы убедиться, что мои пользователи не могут вводить одни и те же данные дважды (предотвращая дублирование данных)? - PullRequest
0 голосов
/ 30 марта 2012

Обзор проблемы:

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

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

  • Дубликат SSN
  • Дубликаты Фамилия и Дата рождения
  • Дубликаты Имя, Дата рождения и Частичное совпадение SSN(другой клиент имеет SSN, где 5 из 9 цифр совпадают и находятся в той же позиции .
  • Дублирование имени и частичного совпадения SSN (другой клиент имеет SSN, где 5 из9 цифр совпадают и находятся в одинаковом положении .
  • Дублирование фамилии и частичное совпадение SSN (другой клиент имеет SSN, где 5 из 9 цифр совпадают и вв той же позиции .

В дополнение к этим проверкам обсуждалось использование soundex для обнаружения совпадений на основе similiar имя / фамилия.

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

Пояснения:

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

Ответы [ 2 ]

1 голос
/ 30 марта 2012

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

1 голос
/ 30 марта 2012

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

Вы можете привести эти поля в вашей базе данных как unique.

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