父母离开,父母权利在openerp

时间:2012-08-08 09:22:53

标签: openerp

什么是父母和父母权利?

如何在 Openerp 中使用?

由于

2 个答案:

答案 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_leftparent_right列与上述文章中的rightleft列相同。