我正在创建一个 SQL 模式来表示树状层次结构,但我知道这个树的深度永远不会超过 N 层(其中 N 在应用程序设计时已知,很可能大约 4 或 5 个)。
如果这棵树的深度是固定的,那么通过将树的每一层建模为一张表来设计应用程序是否更好?还是考虑任意深度(例如邻接列表或嵌套集)来处理它会更好?
我纯粹是从可查询性的角度提问,例如报告树的各个级别。
最佳答案
使用具有众所周知的层次结构 (node_id, parent_id)
和附加列 depth
的单个表。该列在理论上是多余的,但在查询特定树级别时非常有帮助。当然,这样的结构使得使用递归查询从上到下遍历树变得容易(反之亦然)。
create table a_tree(
node_id int primary key,
parent_id int,
depth int
-- other columns
);
作为奖励,您可以在 SO 上为此类表找到许多现成的解决方案。
关于sql - 在 SQL 中对固定深度树建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44489124/