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

StackOverflow https://stackoverflow.com/questions/1825613

Вопрос

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

  

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

     

ИНОСТРАННЫЙ КЛЮЧ ( userID )    usertable ( userID ) во всех таблицах   используя идентификатор пользователя.

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

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top