Дело в том, что первичный ключ может быть одним или несколькими столбцами, которые однозначно идентифицируют одну запись таблицы, где уникальное ограничение - это просто ограничение на поле, которое допускает только один экземпляр любого данного элемента данных Таблица.
ЛИЧНО, я использую GUID или автоинкрементный BIGINTS (Identity Insert для SQL SERVER) для уникальных ключей, используемых для перекрестных ссылок между моими таблицами. Затем я буду использовать другие данные, чтобы позволить пользователю выбирать конкретные записи.
Например, у меня будет список сотрудников, и ко всем записям, которые я использую за кулисами, будет прикреплен GUID, но когда пользователь выбирает сотрудника, они выбирают его на основе следующих полей: LastName + FirstName + EmployeeNumber.
Мой первичный ключ в этом сценарии - LastName + FirstName + EmployeeNumber, а уникальный ключ - связанный GUID.