По сути, вы можете сделать 3 вещи:
Не беспокойся об этом
Access может запрашивать строки, в которых один из столбцов имеет значение null, просто отлично, нет причин, по которым данные должны вводиться в столбец, и нет необходимости для появления ошибок. Единственным реальным ограничением является невозможность добавления уникального индекса, поскольку данные для столбца не являются уникальными.
Применение ограничения, чтобы один из столбцов был нулевым
Вы можете добавить проверочное ограничение, чтобы одно из полей было пустым. Так как это ограничение проверки на уровне таблицы, вам даже не нужно делать сложные вещи, чтобы добавить его. Просто откройте таблицу в режиме конструктора, откройте панель свойств и в Правиле проверки добавьте [SupplyName] Is Null Or [ServiceName] Is Null
Вместо того, чтобы хранить имя поставки и имя службы в отдельных столбцах, сохраните их в одном столбце и используйте второй столбец, чтобы указать, какой тип имени хранится в этом столбце.
Я настоятельно рекомендую перейти к варианту 3. Это потребует меньшего объема памяти (поскольку столбец спецификатора может быть небольшим), допускает уникальный составной индекс, который может повысить производительность при объединении, и является гораздо более расширяемым (если вы Если у вас есть имя третьего типа, вы можете добавить его без изменения индексов или оформления таблицы.
Недостатки подхода 3 в том, что конструктор запросов Access не поддерживает объединения с литералами, указывающими, к какому типу имени вы присоединяетесь. Для внутренних объединений это легко исправить, просто указав в предложении WHERE
. Кроме того, Access не сможет обеспечить ссылочную целостность для таких отношений, как эта.