首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >树的数据库模式

树的数据库模式
EN

Stack Overflow用户
提问于 2012-11-07 13:20:52
回答 2查看 812关注 0票数 1

我想为一棵树创建一个数据库架构。除根记录外,每个记录都有一个父记录。

tree_table

代码语言:javascript
复制
 id | name 
-------------
  1 |  tree1
  2 |  tree2
  3 |  tree3

将给出每棵树中的节点。

tree_node_table

代码语言:javascript
复制
 id | name | tree_id | parent_id
---------------------------------
  1 |  a   |   1     |   NULL  
  2 |  b   |   1     |    1
  3 |  c   |   1     |    2
  4 |  d   |   1     |    2
  5 |  e   |   1     |    4
  6 |  f   |   2     |   NULL  
  7 |  g   |   2     |    6
  8 |  h   |   2     |    7
  9 |  i   |   2     |    7
 10 |  j   |   2     |    9

我觉得它不是优化的,有人有更好的设计吗?

更新:tree_id用于快速识别记录所属的树。

EN

回答 2

Stack Overflow用户

发布于 2012-11-07 13:34:32

用一张桌子保持简单:

代码语言:javascript
复制
create table trees (
  id        integer primary key,
  name      varchar not null,
  parent_id references trees)

这将为您提供所需的所有逻辑元素。如果您需要更多的特定优化,那么在确定了它们的真正需求之后再考虑它们。

票数 1
EN

Stack Overflow用户

发布于 2012-11-07 13:28:09

离开第一个表,离开第二个表中的"tree_id“列。

除此之外,你的设计也不错。对于少数不提供递归/循环查询的数据库,有一种“嵌套集”树模型更适合于使用非递归或循环查询进行读取,但我不想这样做--当更改大树时,它的性能非常糟糕。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13270676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档