gpt4 book ai didi

database - 将三元关系映射到关系模型(员工、客户、项目)

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:08 30 4
gpt4 key购买 nike

ER-Diagram

我想将 ER 图的这一部分转换为关系模型。我们有一个三元关系,它说的是以下内容:

  • 1 位客户将 1 个项目提供给 -> 多个开发人员
  • 1 位客户分配给 1 位开发人员 -> 多个项目
  • 1 个开发人员被 -> 一个客户分配了 1 个项目

建议的解决方案是这样的:

分配(EmployeeID、CustomerID、ProjectID)

其中主键由EmployeeID、CustomerID和ProjectID组成。所有这些属性都是外键,每个属性都引用其各自的实体。

但是这个解决方案是完全错误的,因为它没有表达与 ER 图相同的东西。我们有一个组合主键,这意味着这三件事的组合是唯一的。这意味着我可以拥有相同的 ProjectID、相同的 EmployeeID 但由不同的 CustomerID 提供(我不想要)。

我该如何解决?

编辑:由于许多用户发现要点没有阐明任何内容,我将对关系的概念进行简短的文字描述:

  • 单个客户可以赠送一个或多个项目
  • 一个项目可以由一个客户提供
  • 每个项目可以由一个或多个开发人员完成
  • 每个开发人员都可以从事多个项目(无论项目是由哪个客户提供的)

为此,我得出结论,最好使用两个单独的二元关系而不是一个三元关系。请参阅下面我的回答。

最佳答案

当在关系模型中表达三元关系时,每个具有“多”基数指示符的实体集都成为主键的一部分。换句话说,我将您的关系理解为表达功能依赖性 (EmployeeID, ProjectID) -> CustomerID ,这将在物理上表示为 Assignment (EmployeeID PK/FK, ProjectID PK/FK, CustomerID FK)

关于database - 将三元关系映射到关系模型(员工、客户、项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201981/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com