Какое минимальное ограничение нужно установить для колонки customer_id в таблице customer, чтобы её можно было использовать как внешний ключ, если в этой колонке разрешены пустые значения и уникальность не требуется?

22.04.2026 02:26
Обновлено: 22.04.2026 02:26

Подробное объяснение

Для использования колонки в качестве внешнего ключа она должна быть кандидатным ключом, то есть иметь ограничение PRIMARY KEY или UNIQUE. Поскольку customer_id может содержать NULL-значения, PRIMARY KEY не подходит, так как он требует NOT NULL. Минимальным подходящим ограничением является UNIQUE, которое в PostgreSQL допускает несколько NULL-значений, обеспечивая необходимую уникальность для ссылок.

Часто задаваемые вопросы (FAQ)

1 Можно ли использовать колонку с NULL-значениями в качестве внешнего ключа?
Да, если на неё наложено ограничение UNIQUE, которое в PostgreSQL допускает несколько NULL-значений, обеспечивая уникальность для ненулевых значений.
2 В чем разница между PRIMARY KEY и UNIQUE для внешних ключей?
PRIMARY KEY всегда подразумевает NOT NULL и уникальность, а UNIQUE допускает NULL-значения (в PostgreSQL — несколько NULL), но оба ограничения позволяют использовать колонку как внешний ключ.
3 Почему для внешнего ключа нужна уникальность в родительской таблице?
Уникальность обеспечивает однозначную ссылку из дочерней таблицы на конкретную строку в родительской, предотвращая неоднозначные связи.

Типичные ошибки

1 Использование PRIMARY KEY для колонки с NULL-значениями
PRIMARY KEY требует NOT NULL, поэтому он не подходит, если в колонке разрешены пустые значения.
2 Отсутствие ограничений на колонку customer_id
Без ограничения UNIQUE или PRIMARY KEY колонка не может быть кандидатным ключом, что делает невозможным её использование в качестве внешнего ключа.
3 Предположение, что UNIQUE запрещает NULL-значения
В PostgreSQL UNIQUE допускает несколько NULL-значений, что делает его подходящим для случаев, когда уникальность не требуется, но NULL разрешены.

Установите расширение Poresh.Ai

Решайте тесты мгновенно с помощью искусственного интеллекта прямо в браузере

Автоматическое распознавание вопросов
ИИ-анализ и подробные объяснения
Работает на любых образовательных платформах
Безопасно и конфиденциально