Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > классы клиента на eav


Автор: hug 17.8.2009, 18:57
Классический EAV
Сущность - продукт. Свойства продуктов - аттрибуты.
Не пойму какими классами правильно оперировать?

1) Вариант
Product, Attribute
Код

Product
{
     List<Attribute> attributes;
}


Но тогда получается, что класс Product - одновременно несет 2 функции
-Описывает свойств продукта(Например характеризует свойство ПродуктаN)
-Является представителем(ПродуктаN) в заказе.

Смущает, что у исполнителей этих функций разные id (product_id; product_in_order_id), а класс один

2) Вариант
ProductType,Attribute,ProductInOrder
Код

ProductType
{
     List<Attribute> attributes;
}


Тут вроде бы разделились понятия категория продуктов, и конкретная заявка на продукт, но как тогда на клиенте будут связаны 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 со списком продуктов. Вообщем, необходимо уточнение вашей ситуации, чтобы можно было что-то сказать smile

Автор: 1stain 19.8.2009, 14:02
Я не силен в классическом EAV, как впрочем и в современном, но кажется мне, что ТС сам себя перехитрить хочет. Есь класс Order, который содержит коллекцию классов OrderLine, в котором кроме всего прочего (заказанное количество, уена на момент заказа...) есть свойство Product.
Где тут применить наследование для Product и с какой стати у Product'a в заказе и просто Product'a разные id сие есть тайна покрытая мраком.
Где-то так.
user posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)