我很想知道处理层次结构的最佳方法(最佳实践)是关于数据库设计的.这是我通常如何处理它们的一个小例子.
节点表
NodeId int PRIMARY KEY
NodeParentId int NULL
DisplaySeq int NOT NULL
Title nvarchar(255)
Run Code Online (Sandbox Code Playgroud)
祖先表
NodeId int
AncestorId int
Hops int
Run Code Online (Sandbox Code Playgroud)
使用NodeId上的索引,AncestorId,Hops
表格如下所示:
节点表
NodeId NodeParentId DisplaySeq Title
1 NULL 1 'Root'
2 1 1 'Child 1'
3 1 2 'Child 2'
4 2 1 'Grandchild 1'
5 2 2 'Grandchild 2'
Run Code Online (Sandbox Code Playgroud)
祖先表
NodeId AncestorId Hops
1 NULL 0
1 1 0
2 1 1
2 2 0
3 1 1
3 3 0
4 1 2
4 2 …Run Code Online (Sandbox Code Playgroud)