共计 1 篇文章

使用闭包表的设计在关系型数据库中存储和查询树形结构

闭包表的存储 之前看了《SQL反模式》,里面介绍了一种在数据库中存储树的比较好的设计模式:闭包表。 实现闭包表需用到两张数据表,一张用来存储树的结点,一张用来存储结点间的关联。 以下面的树形结构为例,数据表taxonomy存储了树的结点,数据表taxonomy_hierarchy存储了结点间的关联。这里0号结点是根结点,没有在数据表taxonomy中体现。 由上图可以很直观的感受到,闭包表比较占空间。 数据表taxonomy有两个字段,一个id,一个name。 数据表taxonomy_hierarchy有三个字段ancestor_id、descendant_id和depth。 ancestor_id和descendant_ ...