具有循环关系的数据库实体模型设计

时间:2016-05-19 03:11:25

标签: sql database-design

我正在设计一个数据库实体模型。我想避免循环关系,但我不知道如何在以下情况下这样做:

该系统用于跟踪开发人员任务和客户购买。每种产品都有一种且只有一种相关的技术和一小部分时间。客户可以购买不同种类的产品。任务只有一种技术相关联。

这些关系非常重要,因为在提交数据之后,我希望能够查询客户是否在某些技术中使用的时间超过了他购买的时间或相反的时间,如果他在另一项技术中购买了数小时他是不使用。此外,我想询问开发人员如何在不同的技术中占用他们的工作时间或者哪些技术与开发人员相关联。

这是我的设计,但我认为循环关系是我应该避免的,我应该找到解决它的其他方法。

enter image description here

哪个应该是解决这个问题的标准方法?

根据Alex的建议,这将是新图

enter image description here

1 个答案:

答案 0 :(得分:1)

目前,您的逻辑不允许将特定采购订单或产品链接到任务。

我建议:

开发人员| - 8任务8--购买
客户| - 8次购买8-- |产品8-- |技术

假设:

  • 贵公司有一个产品目录,客户可以选择购买特定产品。
  • 每个产品都有一定的开发时间(products.hours字段)。
  • 分配开发人员以满足购买要求(产品定制等),这些要求分为任务。记录任务所花费的时间。

报告要求清单:

您可以找到每个购买的产品和技术的分配开发时间。

SELECT *
FROM Purchases
    JOIN Products
        JOIN Technologies
WHERE client_id = 'customer'

您可以了解每种产品及相关技术花费的小时数。

SELECT *
FROM Tasks
    JOIN Purchases
        JOIN Products
            JOIN Technologies
WHERE client_id = 'customer'

通过将任务与购买联系起来,您将能够了解客户正在使用哪些产品/技术以及哪些特定产品可以创建哪些任务。

如果开发人员需要处理与特定客户无关的产品/技术,您应该能够将自己的公司添加到客户列表中,并将采购订单/任务分配给它,并以这种方式跟踪开发时间。

请注意,上述内容是基于我可能需要更大的要求范围的有限承诺。如果您决定按照我的建议检查它是否符合所有其他申请/报告要求。

相关问题