Я встраиваю компонент выставления счетов в свое веб-приложение. В My Schema у нас есть уровни, на которых определенные клиенты могут захотеть выставлять счета.
Projects -> Sites -> Jobs -> Phases -> Teams
Каждая из них является таблицей в базе данных и имеет отношение к своему родителю.
Я планирую создать таблицу Items, в которой будет храниться общая информация о том, как мы будем выставлять счета за работу, выполняемую на каждом из этих уровней, т. е. имя, цена по умолчанию, единица измерения и т. д.
Затем пользователь создаст Модель выставления счетов, с которой он может связать список Элементов, чтобы их можно было использовать повторно.
Вот где мои вопросы вступают в игру. Когда пришло время выставлять счета, мне нужно связать Модель выставления счетов с одним из вышеупомянутых уровней. Я не хочу создавать таблицу привязки каждого из этих уровней к модели выставления счетов. Я хотел бы как-то сохранить реляционную целостность между таблицами. Но также, если есть что-то еще, за что в будущем я могу выставить счет, я не хочу вносить огромные изменения в базу данных и/или код, чтобы учесть этот новый «оплачиваемый уровень».
Есть ли способ сохранить реляционную целостность без создания новой таблицы для привязки моделей выставления счетов к уровню?