Первичный ключ используется оптимизатором для создания кластеризованного индекса вокруг этого ключа. Если этот ключ является комбинацией столбцов (например, в таблице, которая обрабатывает отношения «многие ко многим»), то это нормально. Уникальный ключ - это атрибут чего-то, что является уникальным для этой вещи, но не атрибут, который вы хотите использовать в качестве первичного ключа.
Один пример, с которым я работаю, это автомобили. Вин уникален для автомобиля. Тем не менее, потому что VIN и номер кузова используются на разных этапах жизни транспортных средств. Хотя он уникален для автомобиля, он не является хорошим кандидатом в первичные ключи. Таким образом, у нас есть уникальный идентификатор для каждого автомобиля в качестве первичного ключа.
Аналогичным образом мы обрабатываем таблицы групп пользователей с первичными ключами в нескольких столбцах. Таким образом, сочетание идентификатора пользователя и идентификатора пользователя является первичным ключом, предотвращающим вход людей в одну и ту же группу более одного раза. Использование первичного ключа здесь, а не уникального ключа, в основном соответствует 3-й нормальной форме.
Надеюсь, это поможет, но если вы хотите получить дополнительные разъяснения, пожалуйста, дайте мне знать.