В Microsoft SQL Server нет большой разницы между ключом, определенным как PRIMARY KEY, и ключом, определенным как УНИКАЛЬНОЕ ограничение.Поэтому нет особого преимущества делать первичный ключ суррогатом.
Недостаток суррогатного ключа, на который ссылается ограничение внешнего ключа, состоит в том, что вам обычно требуются дополнительные объединения и поиски в коде.Поскольку любые поиски обычно основаны на естественных ключах, вам понадобится дополнительное объединение или, по крайней мере, дополнительная операция поиска по индексу, чтобы сначала найти значение суррогатного ключа.Как правило, вам нужно выполнять поиск или объединение такого рода всякий раз, когда вы хотите изменить ссылки на строки в дочерней таблице.
Если вы вставляете строки в дочернюю таблицу сразу после вставки в родительскую таблицу, то там вы можете получитьсуррогатные значения без каких-либо дополнительных операций.Если суррогат является столбцом IDENTITY, вы можете использовать функцию SCOPE_IDENTITY, чтобы получить последнее вставленное значение.Кроме того, вы также можете использовать предложение OUTPUT в операторе INSERT для извлечения вставленных значений - полезно, когда вы вставляете более одной строки.