Я сейчас занимаюсь рефакторингом системы.
У меня следующая ситуация:
Система предназначена для предоставления информации о компаниях в нескольких секторах бизнеса.
Каждая компания может работать в одном или нескольких секторах. Компании могут участвовать в определенных партнерских программах. Компания может иметь одного или нескольких производителей-партнеров (например, гараж может иметь партнерские отношения с BMW / Mercedes) и т. Д. Все эти участия существуют в определенный период времени (период действия). Кроме того, такой производитель, как BMW, связан с одним бизнес-сектором. Таким образом, компания может быть партнером BMW, только если BMW действительна для бизнес-сектора компаний. То есть, потому что система обслуживает не только компании такого сектора, как гаражи, но и услуги буксировки и т. Д.
Так что сейчас мой дизайн может вызвать некоторые инварианты.
Компания -> Назначение (не меняется медленно) -> Сектор бизнеса
Компания -> Партнерство (дата от - до) -> Организация <- Сектор бизнеса </p>
В тех случаях, когда Компания и Организация должны совместно использовать одно и то же назначение в бизнес-секторе.
Так что сейчас можно изменить присвоение бизнес-сектора Организации. Тогда это будет правилом, когда один и тот же бизнес-сектор будет недействительным.
Как бы вы смоделировали что-то подобное?