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

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

Вопрос

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

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

Решение

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

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

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

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

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

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

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

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