Плохо ли использовать имя пользователя в качестве первичного ключа в дизайне базы данных?

мне сказал друг:

какой уникальный ключ вы используете? Надеюсь, ты ... не сохранять имя пользователя --- это займет слишком много места! Назначьте каждому уникальный идентификатор пользователя (уникальный) имя пользователя и сохранить этот userID (должно быть целое число без знака auto_increment или BIGINT без знака типа AUTO_INCREMENT). Не забудь создайте ссылку

ВНЕШНИЙ КЛЮЧ (userID) ссылки usertable (userID) во всех таблицах с помощью идентификатор пользователя.

правильно ли приведенное выше утверждение? Почему или почему нет?

2 ответов


Я думаю, что он прав ( по ошибке), потому что первичный ключ не может изменить, но username может измениться. Поэтому вы должны использовать userid потому что это ничего не изменит.


Он прав по неправильным причинам. Табличное пространство является вторичным по отношению к тому факту, что ваше приложение может позже указать, что имена пользователей могут быть изменены или даже перестать быть уникальными (вы можете представить приложение, где уникальные имена пользователей не требуются, например переполнение стека), и, таким образом, ваше приложение будет нуждаться в серьезном рефакторинге и миграции данных вместо легкого изменения в другом (целочисленном PK) случае.