0

目前我有一种情况,即 2 个弱实体形成一个关联实体(由于多对多关系)。

“项目”强实体包括

projectID (PK), projectName, projectStartDate, projectEndDate

“任务”弱实体由一个

composite primary key projectID (FK,PK) and taskID (PK), taskName,etc

“资源”弱实体

composite primary key projectID (FK,PK) and resourceID (PK), resourceName, maxUnits, standardRate, costPerUse, etc

(资源实体就像人力/设备/机器。但是,每个项目的每个资源都是不同的,因此我认为它不能是一个独立的实体,而必须是与“项目”实体相关联的弱实体。)

但是,1 个资源在一个项目中可以有很多任务,而 1 个任务可以有很多资源。因此,它形成了多对多的关系。(资源和任务弱实体之间)

因此,它有一个称为“分配”实体的关联实体。

如果我要绘制“分配”表,它将具有以下属性:

projectID, taskID, resourceID, workCompleted, work, units

之后我很困惑,当我为“分配”表创建 SQL 结构时,我是从Task Weak Entity还是从Resource Weak Entity引用 projectID ?

还是我错误地映射了所有内容?

4

1 回答 1

0

好吧 - 这实际上很难完整回答,因为它很大程度上取决于您的实际数据和数据模型等。

从您提到的内容来看,我认为您需要一个与项目无关的资源表,因为如果它是人员/人力 - 一名工作人员应该能够与多个项目相关联(我认为)使其成为多对-“员工”和“项目”之间的许多关联。

所以首先 - 我认为你需要一个像这样的表结构:

Staff/Resource --> ResourceOnProject     <-- Project
Id (PK)        --> ProjectID, ResourceId <-- Id (PK)

而不是您现有的资源表。

如果这是可能的,我认为它应该会帮助你。根据任务中的信息,您可能可以为此执行相同的操作。

但是现在,您应该有可能将您的分配更改为仅保留来自 Staff/Resource 的 ResourceId,而无需您在当前设置中面临的“双重”ProjectId 问题。

所以基本上:

Staff/Resource (Id PK)
Project (Id PK)
ResourceOnProject (ProjectId FK, ResourceId FK)
Task (Id PK, ProjectId FK) 
Assignment (TaskId FK, ProjectId FK, ResourceId FK)
于 2015-01-09T07:14:52.697 回答