Подтвердить что ты не робот

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

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

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

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

Правильно ли указано это утверждение? Почему или почему нет?

4b9b3361

Ответ 1

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

Ответ 2

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