Мне нужен совет по моделированию этой простой категоризации (?) Пример:
У меня есть продукт. Продукт может быть разных типов, например ProductType 1, ProductType 2 и ProductType 3. Все продукты имеют номер детали и имя. Там, где они различаются, это способ расчета их цен.Моделирование вопрос о категоризации. Подтип или нет?
- Изделия в цене типа 1 зависят от количества продукта. Поэтому, если у меня есть 5 продуктов, цена равна $ x. Если у меня 20 продуктов, цена $ y и так далее.
- Изделия в цене типа 2 зависят от веса каждого продукта. Если вес составляет 5 кг, цена равна $ x и так далее.
- Изделия типа 3 имеют простую цену, например, $ x для каждого продукта.
Как я вижу, каждая «ценовая структура» должна иметь выделенный стол/класс. Затем продукт будет ссылаться на свою ценовую структуру в зависимости от типа продукта. Вы бы просто создали таблицу «тип продукта» и получили атрибут «Тип» в классе «Продукт», или вы бы использовали обобщение, так что продукт 1/2/3 является подтипом продукта? Будет 5 различных ценовых структур, а способ расчета цены отличается от каждого типа. Таким образом, логика расчета общей цены заказа зависит от каждого типа продукта.
Можете ли вы дать мне несколько советов о том, как смоделировать это наилучшим образом? Если я выберу подход, в котором есть атрибут Type в классе Product, я предполагаю, что в моем коде будет получено множество инструкций if-else. Если я захочу подклассифицировать их, каждый класс может нести ответственность за расчет правильной цены или за то, что просят сделать.
Для продуктов определенного класса, зависит ли цена от фактического номера детали или она одинакова для всех продуктов этого класса? Например, все продукты типа 3 оцениваются точно в $ x, или вы просто подразумеваете, что они фиксированы и не зависят от веса/количества? – samitgaur
Предположим, что я продаю 2000 штук одного продукта. Если продукт относится к типу 1, цена будет рассчитываться с использованием ценовой структуры типа 1. И если он находится в типе 2, нужно будет использовать другой расчет и так далее. Отвечает ли это на ваш вопрос? –
Я не согласен с тем, что подклассификация наилучшего подхода к этому дизайну (см. Мой ответ ниже).В стороне, это обсуждение stackoverflow имеет много хороших отзывов о сопоставлении иерархии объектов в реляционной БД: http://stackoverflow.com/questions/3413459/designing-sql-database-to-represent-oo-class-hierarchy/3427434# 3427434 – mikemanne