У меня есть таблицаДва уникальных ключей в таблице SQL
Users (Id, Uid, Name, Sex...).
Id
является Авто инкремент, Uid
уникален, порожденный моим сценарием (сочетание шапки и nubers, 2X4TY
).
Uid
является общедоступным, я использую его в URL-адресах, в связи с клиент-сервером через JSON и т. Д. Я создал его также, чтобы скрыть внутренний Id
, который в противном случае сказал бы людям, сколько у меня пользователей.
Я все время использовал Uid
и даже начал использовать его как FK в других таблицах. Это хороший способ сделать это? Должен ли я отправлять Uid
через JSON, а затем найти внутренний/автоинкремент Id
и работать с ним? Это больше работы, и я смущен.
Может быть, мне просто не нужен автоинкремент Id
, но меня учили в uni, что лучше всех таблиц иметь суррогатный ключ.
Нет. Если uid не является (компонентом) ПК, не используйте его как FK в других таблицах. Кстати, вас учили неправильно. Суррогатный ключ не «лучше» или «хуже». Однако, если вы решите использовать суррогатный ключ, тогда, как правило, у вас также есть УНИКАЛЬНЫЙ натуральный ключ на одной или комбинации других столбцов в таблице. – Strawberry
Мне кажется, что 'Uid' также является суррогатным ключом, нет? Кроме того, суррогат против естественных ключей - священная война, непонятно, что лучше, поэтому не стоит слишком много думать о том, чему вас учили. – Stijn
Должен ли я сбросить идентификатор и использовать Uid в качестве PK или сохранить идентификатор, являющийся моим PK, и после получения Uid от клиента, найти соответствующий идентификатор и работать с ним? –