Использование внешнего ключа NULL для указания конфигурации по умолчанию MySQL

Я пытаюсь разработать систему с высокой степенью конфигурации, в которой связанные модели могут указывать конфигурации отношений. У меня возникают проблемы с выбором места установки конфигурации по умолчанию.

companies {
   ID
}

accounts {
   ID
}

companies_accounts {
   ID, Company_ID, Account_ID, Setting1, Setting2, Setting3
}

Это довольно просто, но я не могу понять, где разместить конфигурации по умолчанию. Вот три варианта, которые я рассмотрел:

  • Задавать Account_ID = NULL иметь строки, которые определяют конфигурацию по умолчанию для компании. Это хорошо, потому что он хранит структуру конфигурации в одном месте. Это плохо, потому что уникальный индекс включен Account_ID а также Company_ID, но мы могли бы иметь несколько строк с Company_ID = XX AND Account_ID IS NULL, Это означает, что у нас может быть несколько конфигураций по умолчанию, что не имеет смысла.

  • Поместите конфигурации в companies стол тоже. Это позволит использовать только одну конфигурацию по умолчанию, но теперь конфигурации находятся в нескольких местах. Тоже ничего хорошего

  • Поместите конфигурацию в отдельную таблицу relationship_configs, дайте каждый ряд в companies_accounts RelationshipConfig_ID и дать каждый ряд в companies DefaultRelationshipConfig_ID, Это, кажется, лучший вариант, но он добавляет еще одну таблицу в базу данных, и у нас есть много таких схем конфигурации, которые должны существовать (т.е. почти каждая таблица отношений имеет некоторые параметры конфигурации - и их много - и каждая нужно было бы иметь свою собственную таблицу конфигурации). Это привело бы к множеству объединений в довольно больших наборах данных (что может быть не плохо. Я не совсем уверен)

0 ответов

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