Монго Схема Дизайн - PullRequest
       6

Монго Схема Дизайн

1 голос
/ 16 сентября 2011

Я довольно новичок в Монго.Просто начал проект, используя Mongodb в качестве базы данных.Я не уверен, как мне разработать следующий вариант использования для базы данных базы документов.

User-Case1. Поставщик / дистрибьютор имеет список продуктов в нашей системе.2. Существует стандартный прайс-лист каждого продукта для любых клиентов.3. Поставщик / Дистрибьютор также может настроить прайс-лист каждого продукта для каждого клиента.например.У CustA есть продукт A по ценам, отличным от стандартных, и он доступен только ему.4. Некоторые из Продуктов доступны только через настройку цены, и я сопоставляю этот продукт с атрибутом public = false.

Как мне это решить в базе данных базы документов?Текущий дизайн у меня есть.1. [ Товарный документ ] со встроенным документом стандартного прейскуранта.2. [ Документ Product_Price ] со ссылкой oneToMany [ Документ продукта ] и oneToMany для [ Документ клиента ]3. [ Документ клиента ].

В этой модели у меня возникла проблема с запросом с помощью пейджинга.Пример Я запрашиваю первые 30 товаров, отсортированных по имени.Затем запросите [ Product_Price Document ] с 30 соответствующими ProductId, чтобы у меня были те, которые настраивают цену для того клиента, который входит в систему.

Проблемы возникают из-за того, что я не могу запросить элемент, настроенный для пользователя, который доступен не для всех.

Есть ли лучший способ или разработать схему или что мне делатьс запросом?

Я использую PHP, Doctrine2, Symfony2

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

Вот как бы я это структурировал.

Имеют две коллекции: - Товары - Продавцы

Ваша таблица продуктов будет содержать список всех ваших продуктов и их стандартную цену. Ваша страница поставщиков будет содержать массив идентификаторов продуктов и цену переопределения в случае, если у них будет другая цена для этого конкретного продукта.

Если вы также отслеживаете клиентов, вы можете сделать эту коллекцию тоже и иметь отношение почти к поставщикам.

так вкратце:

collection.vendor:
 {"name":'foo',"products":[{"_id":mongoId,"priceOveride":15.50},..]}

collection.products:
 {"name":"bar","price":15.40}

Отличный ресурс для более подробного изучения отношений, которые вы можете использовать: Интерактивное изучение монго

0 голосов
/ 16 сентября 2011

Когда вы запрашиваете Product_Price_Document , запрашиваете его, используя ProductID и текущий CustomerID. Или я что-то упустил?

...