1

我想知道如何将维恩图表保存到数据库中。好吧,实际上我不需要实现完整的维恩图逻辑,它更像是一棵树,其中一个孩子同时是许多父母的孩子。

我的第一个猜测是,使用一个:m-self 关系到带有一个小帮助表的表。

但是我习惯于用嵌套集构建树(参见 MPTT - Modified Preorder Tree Traversal)。这有助于我避免遍历所有孩子的查询。

是否有类似 MPTT 或将 MPTT 扩展到我的问题的方法,这可以帮助我避免遍历所有孩子?

感谢您提前发表任何评论或评论。

4

1 回答 1

0

维恩图的区域有一个一般排序。您只需要将每个区域表示为二进制数。位的数量是集合的数量,每个位表示区域是否属于给定的集合。例如,对于四组,

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,不需要树。

于 2019-05-24T16:58:38.917 回答