Уникальный ключ и первичный ключ являются логическими ограничениями. Они оба подкреплены уникальным индексом. Столбцы, которые участвуют в первичном ключе, не могут быть NULL
-able.
С точки зрения создания внешнего ключа важен уникальный индекс, поэтому все три параметра будут работать.
В индексах на основе ограничений хранятся дополнительные метаданные, которые отсутствуют в обычных индексах (например, create_date
в sys.objects
). Создание уникального индекса, не основанного на ограничениях, может обеспечить большую гибкость, поскольку позволяет определять столбцы, включенные в определение индекса, например (я думаю, что могут быть и другие вещи).