Я пытаюсь создать базу данных, которая включает продукты, типы продуктов, атрибуты продуктов, в которых также хранятся данные о стоимости и запасах (запасах).Я хотел бы, чтобы это имело как можно меньше const / hardcoding, а также было бы масштабируемым для будущего.
Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы иметь несколько атрибутов, привязанных к продукту, некоторые из этих атрибутов могут привести к увеличению стоимости продукта, а также вести инвентаризацию продукта со всемиэти атрибуты.
Вот моя текущая диаграмма базы данных:
Я думал о добавлении столбца «ProductAttributeID» в таблицы ProductPricing и Product Stock / Supply.
Это будет работать для одного атрибута, но не для учета двух.
, то есть:
Product = Shirt
Attribute = Size (small, medium, large)
Attribute#2 = Color (red, green, blue)
...
Полагаю, я мог бы создать таблицу ProductAttributeModifier, чтобы добавить / вычесть /разделите / умножьте значение на общее значение.
ProductAttributeModifier
========================
ProductAttributeID (bigint) FK_,
Operator (char(1)), //+, -, *, /, %
CostValue decimal(7,2)
Таким образом, я мог бы сделать сводную сводку по общей стоимости продукта с несколькими атрибутами.
Есть ли какие-либо подводные камни в этомметод?
Как мне поступить с ProductSupply?Я думал о добавлении нескольких столбцов в качестве ограничений внешнего ключа к различным атрибутам ProductAttributes, но это не масштабируется и требует будущих знаний о продукте.
Возможно, другая таблица будет работать как соединение с отдельным количеством?С итерацией всех атрибутов?Есть ли подводные камни в этом методе?
ProductAttributeSupply
======================
ProductSupplyId (bigint) FK_,
AttributeID (bigint) FK_,
Quantity (int/bigint)
Было бы более целесообразно поместить совокупный объем предложения в представление / sproc?
Я ожидаю, что диаграмма будет обрабатывать следующие сценарии:
- Товар без, с одним или несколькими атрибутами
- Будьте готовы к атрибутам, изменяющим стоимость (от средней до большой)
- Необязательный модификатор стоимости
- Рассчитайте правильное количество продукта со всеми атрибутами, совпадающими в нашем инвентаре
- Надлежащим образом сохраните количество продукта, соответствующего каждому атрибуту, когда мы получим в нашей базе данных.'ProductStock'