Как создать таблицу в БД, которая имеет общие данные? - PullRequest
0 голосов
/ 31 марта 2020

У меня есть таблица продуктов. Каждый продукт имеет много затрат для различных элементов продукта. Целью БД является возможность расчета общей стоимости. Некоторые расходы уникальны - разные для каждого продукта. У меня есть таблица таких затрат, которая имеет тот же первичный ключ, что и продукт. Но другие затраты не уникальны и в принципе одинаковы для всех продуктов, у меня также есть таблица этих затрат. Хотя я могу дать им первичный ключ, например, в качестве порядкового номера, я не могу использовать внешний ключ, потому что затраты не указаны c для какого-либо продукта. Что мне делать? мне держать этот стол "плавающим в воздухе"?

1 Ответ

0 голосов
/ 31 марта 2020

Вы описали следующие таблицы.

  • Таблица продуктов (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)

...