Вы описали следующие таблицы.
- Таблица продуктов (ProductId (ключ), имя, описание, ..)
- UniqueCosts - (ProductId, cost ... )
- GenericCosts - (Стоимость?)
Вы можете оставить свой дизайн как есть, и когда вы создадите предложение или захотите оценить опцию, просто Сумма (Спецификация продукта c затраты ) + Сумма (из выбранных затрат Generi c), то есть, если все позиции Generi c доступны для всех продуктов, а затраты добавляются к каждому продукту одинаково. Если это не так, то вы столкнетесь с проблемами в будущем, когда один вариант стоит дороже или недоступен для определенного продукта c.
Возможно, вы захотите рассмотреть следующую настройку:
- Продукты (ProductId (ключ), имя, описание, ..)
- FeatureCosts (FeatureCostId, Name, Стоимость, ...)
- Product_FeatureCosts (ProductId, FeatureCostId)
С помощью этого типа настройки вы контролируете, какие функции доступны для каждого продукта, и обеспечивает централизованное управление функциями и затраты с одним потенциальным недостатком, что «уникальные» элементы продукта будут доступны варианты для добавления к другому продукту в административной консоли. Однако, благодаря этой системе и некоторому тщательному управлению она обеспечивает только допустимые параметры для каждого продукта.
В вашем решении, как отмечалось, для получения общей суммы, например, в котировке, вы берете базовую стоимость продукта и затем суммируйте все выбранные затраты на функцию.
Как отмечалось выше, если стоимость / цена компонента обычно составляет одну цену, например, 12 долларов, но для определенных продуктов они включены или стоят более или менее, чем обычно. Если какой-либо из этих сценариев ios может возникнуть в вашем случае использования, вы можете добавить одно или два дополнительных поля в таблицу Product_FeatureCosts, чтобы учесть следующие проблемы, например:
- isIncluded (также известный как free) - AddOnCost (decimal +) / - базовая цена)
Расчет общей стоимости будет очень похож на предыдущую базовую цену продукта (если применимо) + Сумма ([FeaturesSelectedCost + AddOnCost], где FeatureCost not isIncluded)