【发布时间】:2011-03-30 11:44:51
【问题描述】:
我计划在我的数据模型中使用递归表,这样我就可以支持数量不定的可以生活在父母之下的孩子。我的例子是一个目录,我不知道我的小节在一章下会有多深。
我遇到的问题是人们在定义递归表后使用什么技术来填充数据库?我的意思是,如果我有一个引用章节 -> 节 -> 小节的项目列表......当我将章节、节和小节加载到模型中时,我需要标识层次结构的最低级别并分配我正在加载的项目的该值(外键 - 我会假设),以便我始终可以获得有关该项目的所有信息。
例如:
项目:2A-GHI:章节:2 小节:A 小节: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目录数据。
【问题讨论】:
标签: sql tsql sql-server-2008