Как правило, это решение между использованием суррогатных ключей (скомпонованных или автоматически назначенных значений, которые не имеют смысла, кроме того, что они уникальны), и естественными ключами (ключами, которые имеют некоторое семантическое значение в отношении сохраняемой сущности, например, имени или банковский счет #).
в вашем случае неясно, есть ли какой-нибудь естественный ключ, который будет работать (каждый аспект пользовательской таблицы может измениться - смена имени после вступления в брак и т. Д.). вам нужен естественный ключ, если нет возможности, чтобы ключ когда-либо изменялся, сохраняя при этом отношения. Примером может быть что-то вроде имен элементов (Au, He, Es
и т. д.) в периодической таблице элементов (которые вряд ли изменятся, кроме добавления новых, но, эй, все может произойти ...).
Что касается повреждения данных, резервные копии действительно лучшая защита, потому что все может быть повреждено. и в типичных операциях вы всегда можете сохранить первичный ключ при миграции или синхронизации. использование сложного сложного суррогатного ключа вместо автоматического приращения, предоставляемого БД, было бы более рискованным, поскольку это усложняет вставки (вы должны обеспечить его уникальность и, возможно, обрабатывать коллизии безопасным способом транзакции) ... и действительно сгенерированным суррогатом Ключ не поможет в случае повреждения данных (нет способа сопоставить его с записью).
естественный PK, скажем, что электронная почта пользователя будет сопряжена с большими трудностями - приходится обновлять все отношения всякий раз, когда электронная почта изменяется, сложная замена адресов электронной почты между двумя учетными записями, индексы гораздо менее эффективны для широких значений вместо целых значений. компромисс наклоняется в пользу ключа автоинкремента.
хорошая рецензия здесь:
http://decipherinfosys.wordpress.com/2007/02/01/surrogate-keys-vs-natural-keys-for-primary-key/