Являются ли имена пользователей допустимым кандидатом на первичный ключ?
Я знаю, что суррогатные первичные ключи обычно рекомендуются по сравнению с естественными первичными ключами, но есть ли какие-либо аргументы в пользу суррогатных первичных ключей, когда дело доходит до имен пользователей?
5 ответов
Если вы не хотите получать дубликаты имен пользователей, создайте UNIQUE constraint
.
, что если DWong1145
хочет изменить имя пользователя? Будете ли вы сделать все отношения базы данных UPDATE CASCADE
?
нет вы должны использовать имя пользователя только как уникальный ключ / константа. Имя пользователя может быть изменено, просто и пример: это может быть товарный знак, и владелец просит вас отказаться от него.
Это хороший кандидат в некотором смысле, но вы должны рассмотреть, если вы действительно хотите сделать это. Например, у вас есть пользователь с определенным именем пользователя, затем пользователь получает "удален" (или помечен как удаленный). Таким образом, на самом деле нет причин не разрешать создавать другого пользователя с тем же именем пользователя, но он уже "взят", так как это первичный ключ.
большим недостатком наличия строки в качестве первичного ключа, независимо от того, является ли это имя пользователя или что-то еще, является то, что все столбцы внешнего ключа, ссылающиеся на таблицу, также должны быть строками, что медленнее и тратит больше места.