Хотя верно, что числовое значение для значения идентификатора немного быстрее для сортировки и определения местоположения системой, разница вряд ли будет заметной или даже измеримой.
Проблема в том, что вы не говорите, что такое steam или его роль в вашей системе. По-видимому, хотя между ним и каждым пользователем существует 1-1 взаимосвязь. Так почему бы просто не назовите его ID в таблице пользователя и, при необходимости, ему нужно указать UserID или SteamID в зависимости от того, что имеет больше смысла в контексте, в котором пользователь находится в то время.
При использовании суррогатного ключа, я предпочитаю его назвать ID. Короткие, простые, недвусмысленные. Рассматривая определение таблицы, он говорит: «Я - суррогатный ключ этой таблицы». На самом деле его не путать при использовании одного и того же поля нескольких таблиц в одном запросе. Фактически, это помогает уточнить:
select User.ID, Item.ID, Entry.ID, etc.
from ....
Однако запрос устанавливает контекст набора результатов. Aliasing помогает показать, что контекст:
select User.ID as ManagerID, Item.ID OfficeOD, Entry.ID LaptopID, etc.
from ....
При его использовании в качестве FK в другой таблице, имя в этой таблице также показать ее использование в контексте установленного этой таблицы. Это особенно удобно, если несколько полей являются ФКС в той же таблице:
table Accounts:
ID the surrogate key to this table...duh!
OwnerID references User.ID
AdminID references User.ID
VerifiedBy references User.ID
или, возможно,
table Accounts:
ID the surrogate key to this table...duh!
SteamID references User.ID
AdminID references User.ID
VerifiedBy references User.ID
Основной аргумент против него будет производительность, число первичных ключей, как правило, быстрее, запрашивать и работать. –
Если это действительно основная причина и нет (реальной) функциональной разницы, я бы не возражал, чтобы вы опубликовали это как ответ @FranciscoCouzo –