Как правильно это сделать:
У меня есть следующие отношения между сущностями RAW_MATERIAL_PRODUCT и FINISHED_PRODUCT: ГОТОВЫЙ ПРОДУКТ должен быть изготовлен из одного или нескольких продуктов сырья, а продукт сырья может быть частью готового продукта (так много-много). У меня есть объект пересечения, который я назвал СБОРКА, который точно говорит мне о том, из чего Сырье является Готовым Продуктом.
Хорошо. Теперь мне нужно продать готовую продукцию и рассчитать себестоимость. Появляется объект PRODUCT_OUT, который может содержать только один FINISHED PRODUCT, а FINISHED PRODUCT может быть частью нескольких PRODUCT_OUT.
Было бы легко, если бы, например, Готовый Продукт А всегда состоял из 3 частей Сырьевого Продукта а1, 2 из а2 и т. д. Проблема в том, что количества могут меняться.
Запас сырьевого продукта рассчитывается как
TotalIn - TotalOut
поэтому я не могу поместить атрибут quantity в ASSEMBLY, потому что я получу неверные данные при расчете Stock. (если количество изменено)
Моя единственная идея состоит в том, чтобы отказаться от сущности FINISHED_PRODUCT и сделать соединение между PRODUCT_OUT и RAW_MATERIAL_PRODUCT с сущностью пересечения, содержащей атрибут количества. Но это кажется глупым, потому что почти всегда ГОТОВЫЕ_ПРОДУКТЫ изготавливаются из одних и тех же СЫРЬИХ_МАТЕРИАЛОВ_ПРОДУКТОВ.
Есть ли способ лучше?