Рекомендации по использованию идентификаторов для баз данных

. Мне было интересно, какие наилучшие методы создания и хранения удостоверений личности. Несколько лет назад один профессор рассказал мне об опасностях плохо сконструированной системы удостоверений личности на примере номера социального страхования. В частности, поскольку SSN не обнаруживают ошибок ... невозможно отличить 9-значную строку от действительного SSN. И теперь государственным органам нужны такие вещи, как Last Name + SSN или Birthday + SSN, чтобы отслеживать ваши данные и обеспечивать их проверку. Кроме того, ваш номер социального страхования в некоторой степени предсказуем в зависимости от того, где вы родились.

Сейчас я создаю базу данных пользователей ... и, основываясь на этом совете, "userid mediumint auto_increment" было бы неприемлемо. Особенно, если я планирую использовать этот идентификатор в качестве основного идентификатора пользователя. (например, если я разрешаю пользователям изменять свое имя пользователя, тогда имя пользователя будет труднее отслеживать, чем числовой идентификатор пользователя ... требуя каскадных внешних ключей и прочего.) Электронные письма меняются, имена пользователей могут изменяться, пароли меняются ... ... но идентификатор пользователя должен оставаться постоянным навсегда.

Очевидно, что auto_increment предназначен только для surrogate_keys. То есть это полезный ярлык только в том случае, если у вас уже есть основной механизм идентификации, но его не следует использовать в качестве «внутреннего идентификатора» для данных. Создание случайного UUID выглядит интересно, но случайность меня отталкивает.

И поэтому я спрашиваю: как лучше всего создать «первичный ключ» идентификационный номер?

7
задан Dragontamer5788 3 December 2010 в 22:21
поделиться