Разве плохо использовать имя пользователя в качестве первичного ключа при проектировании базы данных?
-
22-07-2019 - |
Вопрос
Мне сказал друг:
Какой уникальный ключ вы используете? Я надеюсь ты не сохраняют все имя пользователя --- это займет слишком много табличного пространства! Назначьте уникальный идентификатор пользователя каждому (уникальный) userNAME и сохраните этот userID (должны быть целыми без подписи auto_increment или BIGINT UNSIGNED автоматическое приращение). Не забудь создать ссылку
ИНОСТРАННЫЙ КЛЮЧ (
userID
)usertable
(userID
) во всех таблицах используя идентификатор пользователя.
Правильно ли приведенное выше утверждение? Почему или почему нет?
Решение
Я думаю, что он прав (по неправильной причине), потому что первичный ключ не может измениться, но username
может измениться. Поэтому вы должны использовать userid
, потому что он не изменится.
Другие советы
Он прав по неправильным причинам. Табличное пространство является вторичным по отношению к тому факту, что ваше приложение может впоследствии потребовать, чтобы имена пользователей могли быть изменены или даже перестали быть уникальными (можно представить приложение, в котором уникальные имена пользователей не требуются, например переполнение стека), и, таким образом, вашему приложению потребуется серьезный рефакторинг и перенос данных вместо легкого изменения в другом (целочисленном PK) случае.