Armazenamento de dados hierárquicos (MySQL) para marketing de referência

Preciso ter uma hierarquia de 5 níveis para os usuários registrados em um site. Cada usuário é convidado por outro, e eu preciso conhecer todos os descendentes de um usuário. E também antepassados para um usuário.

Tenho em mente a solução 2.

Manter uma tabela com relacionamentos dessa maneira. Uma tabela de fechamento:

    ancestor_id  descendant_id  distance
    1            1              0
    2            2              0
    3            3              0
    4            4              0
    5            5              0
    6            6              0
    2            3              1
Ter esta tabela para relacionamentos. Manter em uma tabela 5 níveis de antepassados. Uma tabela "antepassados":

   user_id ancestor_level1_id ancestor_level2_id ancestor_level3_id ancestor_level4_id ancestor_level5_id
   10      9                  7                  4                  3                  2
   9       7                  4                  3                  2                  1

Essas são boas idéias?

Eu sei sobre "o modelo de lista de adjacência" e "o algoritmo de passagem de árvore de pré-encomenda modificada", mas essas são boas soluções para um sistema de "referência"?

As consultas que preciso executar nesta árvore são:

adicionando novos usuários com frequência quando um usuário compra algo, seus referenciadores recebem uma porcentagem de comissão todo usuário deve ser capaz de descobrir quantas pessoas se referiram (e quantas pessoas foram indicadas por pessoas a quem se referiram ....) em cada nível

questionAnswers(4)

yourAnswerToTheQuestion