Являются ли имена пользователей допустимыми кандидатами на роль первичного ключа?
-
23-09-2019 - |
Вопрос
Я знаю, что суррогатные первичные ключи обычно рекомендуются вместо естественных первичных ключей, но есть ли какие-либо аргументы в пользу суррогатных первичных ключей, когда дело касается имен пользователей?
Решение
Если вы не хотите получать повторяющиеся имена пользователей, создайте UNIQUE constraint
.
Что, если DWong1145
хочет изменить свое имя пользователя?Будете ли вы сделать так, чтобы все отношения с базой данных были UPDATE CASCADE
?
Другие советы
НЕТ, вам следует используйте имя пользователя только как уникальный ключ/константу.Имя пользователя можно изменить, просто пример:это может быть товарный знак, и владелец просит вас отказаться от него.
В каком-то смысле это хороший кандидат, однако вам следует подумать, действительно ли вы хотите этим заниматься.Например, у вас есть пользователь с определенным именем пользователя, тогда пользователь «удаляется» (или помечается как удаленный).Таким образом, на самом деле нет причин запрещать создание другого пользователя с тем же именем пользователя, но оно уже «занято», поскольку это первичный ключ.
С точки зрения клиента, конечно.Я не хочу, чтобы мое имя пользователя было DWong1145.
Большим недостатком использования строки в качестве первичного ключа, независимо от того, имя ли это пользователя или что-то еще, является то, что все столбцы внешнего ключа, ссылающиеся на таблицу, также должны быть строками, что медленнее и требует больше места.