Имена меняются - значения первичного ключа не должны.Эбигейл Смит становится Эбигейл Джонс, и имя пользователя изменяется, но суррогатный ключ защищает от необходимости каскадного изменения этих данных везде.
Если вы используете суррогатный ключ, но существует столбец или комбинация столбцов, которые должны быть уникальными, тообеспечить это с помощью уникального индекса.В любом случае, вполне вероятно, что вам понадобятся индексы для ваших столбцов user.name и role.role, а уникальный индекс более экономит место и предоставляет оптимизаторам полезные метаданные.Если у вас есть суррогатный ключ, но у вас нет другой комбинации столбцов, которые однозначно идентифицируют строку, подумайте еще раз, правильно ли вы определите свою сущность.
Одно предупреждение.Особенно для очень узких таблиц с несколькими путями доступа, вы можете использовать таблицу, организованную по индексу.Oracle разрешает только индексированную таблицу по первичному ключу, но разрешает использование внешних ключей для уникального набора столбцов (если это обеспечивается уникальным ограничением, а не просто уникальным индексом).
Возможночто в итоге вы получите таблицу, в которой уникальный идентификатор вводится в действие посредством уникального индекса и обрабатывается OR как PK, и используется в качестве родительского для отношений внешнего ключа, но первичным ключом (как определено в БД) является rolename/ username / что угодно, потому что вы хотите использовать его в качестве драйвера для таблицы, организованной по индексу.