我打算在我的数据模型中使用递归表,这样我就可以支持一定数量的孩子,这些孩子可以生活在父母之下。我的例子是一个目录,我不知道我的小节在一章下有多深。
我遇到的问题是,一旦定义了递归表,人们会使用什么技术来填充DB?我的意思是,如果我有一个参考章节的项目列表 - >部分 - >分段...当我将章节,部分和子部分加载到模型中时,我需要识别层次结构的最低级别并将该值分配给我正在加载的项目(外键 - 我会假设)以便我可以始终获取有关该项目的所有信息。
例如:
项目:2A-GHI:Chapter:2 Section:A SubSection:GHI
如果我的数据已加载
ID|TOCID|TOC_VALUE|PARENT_ID
1|Chapter|2|-1
2|Section|A|1
3|SubSection|GHI|2
如何将项目绑定到GHI以便我可以将FK设置为该项目的递归表? 您是否将所有三个值用作键并将其设置为表中的另一列,以便在加载时可以识别最低级别?
喜欢如此:
ID|TOCID|TOC_VALUE|PARENT_ID|Key
1|Chapter|2|-1|2
2|Section|A|1|2_A
3|SubSection|GHI|2|2_A_GHI
我可以加载递归表,我使用CTE来递归数据,但我不知道最好的方法是加载递归数据并将数据绑定到模型中,以便我的项目有一个FK到目录数据。
答案 0 :(得分:0)
您需要一个列的父行ID。
ID|TOCID|TOC_VALUE|parent
1|Chapter|2|0
2|Section|A|1
3|SubSection|GHI|2
parentID为0或null表示它是根(章)节点