Добавить ссылку на пользователя-родителя (
parent_id).
А чтобы иметь быстрый доступ ко всей цепочки и не извращаться, можно сделать дополнительное поле, в котором прописать эту самую цепочку. Для пользователя Максим
ref_chain =
Андрей/Дмитрий. В таблицу добавить триггеры для проверки обновления цепочки. При начислении бонусов, можно разбивать
ref_chain и начислять каждому в зависимости от уровня (индекса). Если запросов будет много, то можно сделать отдельную таблицу, в которой будут прописаны связи, явным образом для каждого пользователя (чтобы избежать динамического построения связей):
Андрей | level 0 | null
Дмитрий | level 1 | Андрей
Максим | level 1 | Дмитрий
Максим | level 2 | Андрей