Мне было интересно, каковы лучшие практики для создания и хранения идентификаторов.Несколько лет назад профессор рассказал мне об опасностях плохо сконструированной системы удостоверений личности, используя в качестве примера номер социального страхования.В частности, из-за того, что в SSN нет обнаружения ошибок ... невозможно определить разницу между 9-значной строкой и действительным SSN.И теперь правительственным учреждениям нужны такие вещи, как Фамилия + SSN или День рождения + SSN, чтобы отслеживать ваши данные и обеспечивать их проверку.Кроме того, ваш номер социального страхования в некоторой степени предсказуем, исходя из того, где вы родились.
Сейчас я создаю базу данных пользователей ... и на основании этого совета "userid mediumint auto_increment" было бы неприемлемо.Особенно, если я планирую использовать этот идентификатор в качестве основного идентификатора для пользователя.(например, если я позволю пользователям изменять свое имя пользователя, то имя пользователя будет сложнее отслеживать, чем числовой идентификатор пользователя ... требующий каскадных внешних ключей и еще чего-то.) Электронные письма меняются, имена пользователей могут меняться, пароли меняются ..... но идентификатор пользователя должен оставаться постоянным всегда.
Ясно, что auto_increment предназначен только для surrogate_keys.Таким образом, это полезный ярлык, только когда у вас уже есть основной механизм идентификации, но его не следует использовать в качестве «врожденного идентификатора» для данных.Создание случайного UUID выглядит интересно, но случайность меня выключает.
И поэтому я спрашиваю: каковы лучшие практики для создания идентификационного номера "первичного ключа"?