2010-06-29 185 views
2

信息想象一下,你有一个像这样在数据库中的树形数据结构:在数据库结构与节点的树状数据结构

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:  
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

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

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

部门表将有一个部门ID字段作为主键。公司ID将是一个外键。

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

要获取公司,部门,组织实体的所有或部分内容,您需要对主键及其关联的外键进行连接。