Являются ли имена пользователей допустимым кандидатом на первичный ключ?

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

5 ответов


Если вы не хотите получать дубликаты имен пользователей, создайте UNIQUE constraint.

, что если DWong1145 хочет изменить имя пользователя? Будете ли вы сделать все отношения базы данных UPDATE CASCADE?


нет вы должны использовать имя пользователя только как уникальный ключ / константа. Имя пользователя может быть изменено, просто и пример: это может быть товарный знак, и владелец просит вас отказаться от него.


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


с точки зрения клиента, вы ставите. Я не хочу, чтобы мое имя пользователя было DWong1145.


большим недостатком наличия строки в качестве первичного ключа, независимо от того, является ли это имя пользователя или что-то еще, является то, что все столбцы внешнего ключа, ссылающиеся на таблицу, также должны быть строками, что медленнее и тратит больше места.