Здравствуйте, все.
Сейчас проектирую базу сетевых отношений пользователей.
У меня есть:
- Производитель
- Пользователь - Продавец
- Конечный пользователь (ленивый, не хочет продавать)
Отношения строятся (уже сейчас) по принципу: кто кого привёл, тот тому и продаёт.
Производителей может быть много (они разнесены территориально).
Любой пользователь или продавец может купить товар у любого производителя (предварительно заранее договорившись, зависит от того, где покупатель находится сейчас, ну или от качества товара). Теоретически вложенности больше 4 уровней сейчас не происходит физически (невыгодно), но мало ли куда это все забредёт на электронных рельсах.
То есть в итоге получается общий граф (или сеть), которую както надо впихнуть в SQL (наверное).
Я знаю про графовые базы, но пока не нашёл для себя преимуществ подключать вторую базу к проекту, если можно обойтись одной. Кроме того, пока что ИМХО использование графовой базы выглядит либо как стрельба из ГРАДов по мухам, либо как введение нестабильной и опасной сущности в проект.
Варианты дальнейшего использования:
- Продавцу нужен список возможных покупателей, чтобы оповестить о поступлении товара
- Продавцу нужны прогнозы покупательной способности, чтобы не предлагать лишнего и не оттолкнуть покупателей
- Покупателю нужны рейтинги производителей
- Производителю нужны итоги активности покупателей, продавцов, сезонные изменения в активности и пр.
- Нужно просчитывать скидки, вознаграждения, и другие денежные отношения
и так далее.
Объёмы сейчас видятся такими: больше сотни производителей, около сотни продавцов на одного производителя и около нескольких десятков покупателей у продавцов.
С большой благодарностью приму опыт реального проектирования, а также ссылки на код, книги и статьи.