数据库设计 - 显示分层的多个对象类型?

时间:2011-09-21 12:48:30

标签: database hierarchy

我一直在努力寻找解决这个问题的方法,但是我找不到任何“最佳实践”或如何实现我想要的解释。

假设我有一个由以下表组成的数据库(只是一个例子);

Customers (Fields: Id, CustomerName, Location)

Products (Fields: Id, ProductName, ProductCode)

Groups (Fields: Id, GroupName)

然后我需要将这些链接在一起以在Treeview中显示。例如;

Customer1
    |
    |-Group1
    |    |-Product1
    |    |-Product2
    |
    |-Group2
         |-Product2
         |-Product3
         |-Group3
              |
              |-Product1
              |-Product4

正如我所说,这只是一个例子。真正的解决方案包括其他类型。

由于产品可能出现在几个地方,我需要创建一个“链接表” 显示分层数据。

所以我创建了另一个看起来像这样的表;

Id (int)
ParentId (int)
ObjectType (int)
GroupId (int)
ProductId (int)
CustomerId (int)

ObjectType字段的原因是要知道我需要在哪个数据库中检查要在树视图中显示的项目名称等。

我现在的问题:有没有其他方法来设计这个数据库? 我正在使用LINQ等在C#中开发。

1 个答案:

答案 0 :(得分:0)

从您的示例中,树的每个级别都应该是一个新的链接表。

如果group1的内容也重复,则不显示是否为多个客户重复了第1组。但我认为无论哪个客户关联,group1内容都是相同的。

如果你可以真正地将任何东西链接到任何东西,那么objectType就是要走的路......但你会有类似的东西:

parentId
ParentObjectType
childId
childObjectType