什么是父母和父母权利?
如何在 Openerp 中使用?
由于
答案 0 :(得分:7)
Raphael Collet在his answer about OpenERP Server中解释道:
parent_left和parent_right是与之相关的特殊字段 parent_id字段。这些字段的目的是进行查询 在层次结构内有效执行:使用parent_left和 parent_right,您可以在不使用的情况下检索节点的所有后代 进行递归查询。
考虑层次结构中的两个节点A和B. A和B可以是合作伙伴 例如,类别。它们的整数字段为parent_left和 parent_right是这样的:
B is a descendant of A in the hierarchy (defined by parent_id)
当且仅当
A.parent_left < B.parent_left and A.parent_left < B.parent_right and B.parent_left < A.parent_right and B.parent_right < A.parent_right
因此,假设您有六个合作伙伴类别,如下所示。您可以 通过遍历树来分配parent_left和parent_right。结果 显示在每个节点旁边的括号中。注意那里的值 是最佳的;在实践中,你可以在数字上留下空白。
- 客户(1,10)
- 消费者(2,3)
- 合作伙伴(4,9)
- 基本合作伙伴(5,6)
- Gold Partners(7,8)
- 供应商(11,12)
您可以使用单个SQL检索Customers的所有子类别 查询。请注意,值1和10是parent_left和 客户的parent_right;它们可以作为查询的一部分进行检索 本身。
SELECT id FROM partner_category WHERE parent_left > 1 AND parent_left < 10
最后一点是可以更新parent_left和parent_right 没有遍历整个层次结构。删除节点不会 需要任何改变。要添加节点,您可以调整parent_left 和parent_right有两个UPDATE查询:一个“制造一些空间” 在新节点的祖先的parent_left和parent_right之间, 和一个移动新节点的parent_left和parent_right 跟随兄弟姐妹及其后代。所以parent_left和 parent_right可以有效维护。
答案 1 :(得分:3)
这些是Nested Set Model的字段。在SQL中管理具有未绑定深度的分层数据结构。文章Managing Hierarchical Data in MySQL使用SQL中的示例解释了此模型的详细信息。
OpenERP使用嵌套集模型来管理诸如会计科目表和仓库位置之类的树。 parent_left
和parent_right
列与上述文章中的right
和left
列相同。