Краткий ответ: Да, это может быть NULL или дубликат.
Я хочу объяснить, почему внешний ключ может быть нулевым или уникальным или не уникальным.Во-первых, помните, что внешний ключ просто требует, чтобы значение в этом поле сначала существовало в другой таблице (родительской таблице).Это все ФК по определению.Ноль по определению не является значением.Нулевое значение означает, что мы еще не знаем, каково значение.
Позвольте мне привести пример из реальной жизни.Предположим, у вас есть база данных, в которой хранятся коммерческие предложения.Предположим далее, что каждому предложению назначен только один продавец и один клиент.Таким образом, ваша таблица предложений будет иметь два внешних ключа, один с идентификатором клиента и один с идентификатором торгового представителя.Однако во время создания записи торговый представитель не всегда назначается (поскольку никто еще не может работать над ней), поэтому идентификатор клиента заполнен, но идентификатор торгового представителя может быть нулевым.Другими словами, обычно вам нужна возможность иметь нулевой FK, когда вы можете не знать его значение во время ввода данных, но вы знаете другие значения в таблице, которые необходимо ввести.Чтобы разрешить нулевые значения в FK, как правило, все, что вам нужно сделать, это разрешить нулевые значения в поле, в котором есть FK.Нулевое значение отличается от идеи, что это FK.
Является ли он уникальным или не уникальным, зависит от того, имеет ли таблица отношение «один-один» или «один-много» к родительской таблице.Теперь, если у вас есть отношение «один-один», возможно, что у вас могут быть все данные в одной таблице, но если таблица становится слишком широкой или если данные относятся к другой теме (сотрудник - пример страхования @tbone далнапример), то вы хотите отдельные таблицы с FK.Затем вы захотите сделать этот FK либо PK (который гарантирует уникальность), либо наложить на него уникальное ограничение.
Большинство FK предназначены для отношений один ко многим, и это то, что вы получаете от FK без добавления дополнительных ограничений на поле.Таким образом, у вас есть таблица заказа и таблица деталей заказа, например.Если клиент заказывает десять товаров за один раз, у него есть один заказ и десять подробных записей заказа, которые содержат тот же идентификатор заказа, что и FK.