我想为一棵树创建一个数据库架构。除根记录外,每个记录都有一个父记录。
tree_table
id | name
-------------
1 | tree1
2 | tree2
3 | tree3将给出每棵树中的节点。
tree_node_table
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用于快速识别记录所属的树。
发布于 2012-11-07 13:34:32
用一张桌子保持简单:
create table trees (
id integer primary key,
name varchar not null,
parent_id references trees)这将为您提供所需的所有逻辑元素。如果您需要更多的特定优化,那么在确定了它们的真正需求之后再考虑它们。
发布于 2012-11-07 13:28:09
离开第一个表,离开第二个表中的"tree_id“列。
除此之外,你的设计也不错。对于少数不提供递归/循环查询的数据库,有一种“嵌套集”树模型更适合于使用非递归或循环查询进行读取,但我不想这样做--当更改大树时,它的性能非常糟糕。
https://stackoverflow.com/questions/13270676
复制相似问题