Добавление бизнес-условий на основе внешних ключей со значениями по умолчанию

Я пытаюсь создать нормализованную схему базы данных с очень хорошо настраиваемой системой. Вот проблема:

Наши клиенты постоянно получают задания, каждый из которых имеет значения для нескольких внешних ключей для различных других частей системы. Мы хотим, чтобы наши клиенты могли настраивать ряд параметров конфигурации в зависимости от того, куда указывают эти внешние ключи. В общем, это было бы довольно просто, но мы также хотим позволить им указывать конфигурации по умолчанию (то есть, если им все равно, куда указывает FK1). Так, например, наша таблица вакансий выглядит примерно так:

Jobs
{
   ID,
   ConfirmationNumber,
   Company_ID,
   FK1,
   FK2,
   FK3,
   FK4,
   Cost,
   Price,
   Total,
   DateCompleted
}

Мы хотим разрешить им указывать конфигурации на основе FK1-4, но с необязательными значениями по умолчанию. На данный момент мы создали таблицу конфигурации с FK 1-4 и всеми параметрами конфигурации. Мы разрешаем любому FK быть NULL, чтобы указать, что он не заботится об этом FK (то есть по умолчанию имеет любое значение), поэтому вот как выглядит наша таблица:

Configs
{
   ID,
   Company_ID,
   FK1 (allow NULL),
   FK2 (allow NULL),
   FK3 (allow NULL),
   FK4 (allow NULL),
   Config1,
   Config2,
   ConfigN
}

Мое знание нормальных форм ниже среднего, поэтому я не уверен, какая из них нарушает, но я уверен, что это нарушает одну из них. Мне кажется, что 2NF нарушается, потому что иногда Config1-N будет зависеть только от подмножества FK. Весь набор FK + Company_ID составляют ключ-кандидат, потому что каждая компания должна иметь только одну уникальную конфигурацию для каждого набора. Однако, разрешив NULL, уникальный индекс будет по-прежнему разрешать много повторяющихся строк с любым из NULL вне FK. Есть ли лучшее решение? Мне кажется, что наиболее "нормальной" является таблица для каждой перестановки FK и соответствующих конфигураций, но это не совсем практично с количеством внешних ключей, которые у нас есть.

0 ответов

Другие вопросы по тегам