如何将树形结构对映到关系数据库中?
一个树形数据结构,树枝的节点数和树的层次均是不确定的,树枝和叶子的均赋予属性值,并且对映地,存在一些数据记录拥有这些属性,而且属性的分解边界是模糊的(一条记录可能既属于A叶子,又属于B叶子)。一个相似的例子就是这个论坛左边的树形菜单。为了实现它的动态维护和在各个层次上查询,现在决定:把这些数据存储到SQL这种关系型的数据库中(使用SQL Server 2000)。
问题:如何来设计数据库?
前提和要求:
1、通过读取数据库动态的生成这个树形菜单。
2、用户可以在各个层次上查询。(比如在这儿的菜单中,点击左边的“MS-SQL Server 2000”,右边页面出来的内容涵盖所有四个子类,而点击“基础类”,则右边页面出现属于“基础类”的内容。)
3、记录属性有交叉,比如:一个名为“请教高手如何生成菜单”的贴子拥有在数据库区中“基础类”的类属,又拥有在WEB开发中的“ASP”的类属。用户直接输入进行查询时可以确定或者不确定操作所在的层次。
4、事实上树的高度不会超出5层。
5、只使用MS-SQL 2000数据库来记录数据,不使用其它方式。(如XML或文本文件)
6、您可以按您的经验给出一个折中的解决方法。适度改变需求(如:要求用户查询时指定针对的分类。)
7、如有未明之处请提出。