【发布时间】:2023-03-31 06:10:01
【问题描述】:
我需要为注册到网站的用户设置 5 级层次结构。每个用户都被另一个用户邀请,我需要知道一个用户的所有后代。也是用户的祖先。
我想到了 2 个解决方案。
- 以这种方式保存具有关系的表。闭包表:
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
- 有这个关系表。在表中保存 5 个级别的祖先。 “祖先”表:
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
这些是好主意吗?
我知道“邻接表模型”和“改进的前序树遍历算法”,但这些是“推荐”系统的好解决方案吗?
我需要在这棵树上执行的查询是:
- 经常添加新用户
- 当用户购买商品时,他们的推荐人会获得一定比例的佣金
- 每个用户都应该能够了解他们在每个级别推荐了多少人(以及有多少人被他们推荐的人推荐......)
【问题讨论】:
-
如果您定义“好”会有所帮助 - 您是否在寻求速度、灵活性和易于维护?
-
@Neville 我正在寻找速度、易于维护以及一些灵活性
-
@Neville, @morandi3:我们需要确切地知道你想要执行什么样的查询。