【问题标题】:Venn diagrams as database model - is there something similar like MPTT?维恩图作为数据库模型 - 有没有类似 MPTT 的东西?
【发布时间】:2015-11-13 22:22:36
【问题描述】:
我想知道如何将维恩图保存到数据库中。好吧其实我不需要实现完整的维恩图逻辑,它更像是一棵树,一个孩子同时是多个父母的孩子。
我的第一个猜测是,使用 n:m-self 关系与带有小帮助表的表。
但我习惯于用嵌套集构建树(请参阅 MPTT - 修改的预序树遍历)。这有助于我避免遍历所有孩子的查询。
是否有类似 MPTT 的方法或将 MPTT 扩展到我的问题的方法,这可以帮助我避免遍历所有孩子?
提前感谢您的任何评论或cmets。
【问题讨论】:
标签:
sql
database
venn-diagram
mptt
【解决方案1】:
维恩图的区域有一个一般排序。您只需要将每个区域表示为二进制数。位的数量是集合的数量,每个位表示该区域是否属于给定的集合。例如,对于四组,
Id Binary Interpretation
======= ====== ==============
0 0000 Does not belong to any set
1 0001 Only belongs to set 4
2 0010 Only belongs to set 3
3 0011 Belongs to sets 3 and 4, and not to set 1 or set 2
4 0100 Only belongs to set 2
...
14 1110 Belongs to sets 1, 2 and 3, and not to set 4
15 1111 Belongs to all four sets
使用此策略,一旦您定义了区域,您就可以立即检索其Id,不需要树。