Как составить таблицы БД для многоуровневой реферальной системы?

Доброго времени суток, уважаемые разработчики!

Нужна многоуровневая система рефералов.
Алгоритм таков: юзер1 пригласил юзера2...юзер9 пригласил юзера10
юзер10 вносит деньги которые распределяются на все 10 вышестоящих уровней, то есть юзер10 платит юзеру9, юзеру8...юзеру1

Соответственно, схема будет ветвиться
40d47cecac64478f9a27864bc525fc36.jpg

Что нужно: не могу составить таблицы для БД.

Помогите, пожалуйста, наведите на список столбцов таблиц и как из них делать выборку 10-ти вышестоящих юзеров.
  • Вопрос задан
  • 2447 просмотров
Решения вопроса 1
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Если хотите одним простым запросом выбирать из дерева - вам нужно смотреть в сторону хранения древовидных структур: Nested Set, Materialized Path, Adjacency List, Closure Table, etc.
У них есть свои плюсы и минусы - вам нужно подобрать под вашу задачу в зависимости от того, какие операции с деревом вы будете производить.
Вот здесь про них уже есть ответ. А вот здесь - статья.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@shagguboy
nested set
Ответ написан
Комментировать
ravshanium
@ravshanium
аналитик, веб-программист
в рамках структуры таблицы, обычно добавляют parent_id и все... , либо если связь многое ко многим, делают отдельную таблицу связей кросс-таблицу... хотя возможно есть и другие варианты, если найдете напишите...

и посмотрите вот эти ссылки:
explainextended.com/2009/03/17/hierarchical-querie...

stackoverflow.com/questions/7631048/connect-by-pri...

Реферал подразделяют на прямые и косвенные., если верить (https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%84%D... .

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

Войдите, чтобы написать ответ

Похожие вопросы