与树数据结构的数据库结构中的节点相关的信息

时间:2010-06-29 12:04:01

标签: sql database-design tree

想象一下,您在数据库中有一个树数据结构,如下所示:

Level:    
 id   nextlevel    desc
  1         2       company
  2         3       department
  3         4       group

Nodes:
  id    level   parentnode
  0       1         null    -> the company
  1       2           0     -> dep 1
  2       2           0     -> dep 2
  3       3           2     -> group 1.1
  4       3           2     -> group 1.2

我想存储有关每个级别的信息。也就是说,有关公司,部门和团体的信息。 ¿你会怎么做?

我想我可以在Level表中添加一个列,用于存储与表相关的列。表格如下:

Level:    
 id   nextlevel    desc           table
  1         2       company       company
  2         3       department    deparments
  3         4       group         groups

然后创建这些表:

Company:
  id level     desc            etc...
  1    1    Acme Company

我一直在考虑一个更好,更优雅的解决方案,但我找不到。 有人能帮我吗?这是一个很好的解决方案吗?

问候。

1 个答案:

答案 0 :(得分:1)

关系方式是拥有单独的公司,部门和组表。如果要在公司,部门和组表中存储不同的元素,则它们应该是单独的表。

公司表只有一个公司ID字段作为主键。你会有一行,或者在一个集团的情况下,有多行。

部门表将使用部门ID字段作为主键。公司ID是外键。

组表将具有组ID作为主键。部门ID是外键。如果有多个公司ID行,公司ID可以是外键。

要获得所有或部分公司,部门,组实体,您可以加入主键及其关联的外键。