Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Базы данных под .NET > классы клиента на eav |
Автор: hug 17.8.2009, 18:57 | ||||
Классический EAV Сущность - продукт. Свойства продуктов - аттрибуты. Не пойму какими классами правильно оперировать? 1) Вариант Product, Attribute
Но тогда получается, что класс Product - одновременно несет 2 функции -Описывает свойств продукта(Например характеризует свойство ПродуктаN) -Является представителем(ПродуктаN) в заказе. Смущает, что у исполнителей этих функций разные id (product_id; product_in_order_id), а класс один 2) Вариант ProductType,Attribute,ProductInOrder
Тут вроде бы разделились понятия категория продуктов, и конкретная заявка на продукт, но как тогда на клиенте будут связаны ProductType,ProductInOrder. Вообщем, не понимаю как правильно это сделать. У кого-нибудь есть идеи? |
Автор: Любитель 17.8.2009, 23:12 |
1. Какое отношение вопрос имеет к EAV не понятно. 2. Что есть ProductInOrder? Какова структура отношений в базе (как я понимаю, БД уже спроектирована)? |
Автор: hug 18.8.2009, 16:27 |
Структура базы EAV. База в процессе создания ProductInOrder - заказанный продукт. То есть некий тип продукта с характеристиками Ну например: Визитки: Цвет - красный Плотность: Средняя Размер: 20*40 |
Автор: Любитель 18.8.2009, 16:38 |
EAV - это подход описания сущности в виде атрибутов (имя/значение, возможнен тип, атрибутый-сущности и т. д.). С ним вроде у вас всё просто и понятно. Насчёт продуктов и заказов. Наиболее логично, что продукты - это продукты. А уже далее, если у вас заказ состоит из одного продукта, то наследуем от класса Product класс OrderedProduct. Или же просто вводим флаг IsOrdered. Если в заказе несколько продуктов - то класс Order со списком продуктов. Вообщем, необходимо уточнение вашей ситуации, чтобы можно было что-то сказать ![]() |
Автор: 1stain 19.8.2009, 14:02 |
Я не силен в классическом EAV, как впрочем и в современном, но кажется мне, что ТС сам себя перехитрить хочет. Есь класс Order, который содержит коллекцию классов OrderLine, в котором кроме всего прочего (заказанное количество, уена на момент заказа...) есть свойство Product. Где тут применить наследование для Product и с какой стати у Product'a в заказе и просто Product'a разные id сие есть тайна покрытая мраком. Где-то так. ![]() |