【问题标题】:Database design - Multiple objecttypes shown hierarcial?数据库设计 - 显示分层的多个对象类型?
【发布时间】:2011-09-21 12:48:30
【问题描述】:

这几天我一直在努力寻找解决方案,但我找不到任何“最佳实践”或关于如何实现我想要的很好的解释。

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

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# 中开发。

【问题讨论】:

    标签: database hierarchy


    【解决方案1】:

    根据您的示例,树的每一级都应该是一个新的链接表。

    如果组 1 为多个客户重复,则不显示组 1 的内容是否也应重复。?但我假设 group1 的内容是相同的,无论关联哪些客户。

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

    parentId
    ParentObjectType
    childId
    childObjectType
    

    【讨论】:

    • 组对象将只是一个占位符(现在),用于对产品进行逻辑分组以获得更好的视图。客户可能有不同的目的、站点或位置,我的用户会将产品归为一组。在我的表中有一个 childId/childObjectType 我将获得什么?如果我可以在数据库中存储类对象,一切都应该容易得多:)
    猜你喜欢
    • 1970-01-01
    • 2016-05-04
    • 2018-02-17
    • 2013-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多