2015-01-09 129 views
0

目前我有一种情况,2弱实体组成一个关联实体(由于多对多的关系)。(数据库)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 

Afterwhich我很困惑,当我创建了“分配”表中的SQL结构,做我引用projectID从任务弱实体,或从资源弱实体

还是我映射一切不正确?

回答

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) 
+0

您好,感谢您的答复。基本上在资源表中,有像maxUnits,standardRate,costPerUse这样的属性。 (资源可能包括设备也不只是人力)。但是,例如,杰克对其他项目有其他承诺,因此他对该特定项目的最大单位(如承诺水平)是50%而不是100%。这就是为什么我需要将资源链接到项目的原因,因为每个资源对每个项目的承诺级别都不相同。 – DoubleClickOnThis

+0

这些信息仍然可以放在关联表(ResourcesOnProject)上。根据你在这里的信息,你需要一个基本的员工/资源表 - 因为“杰克有其他的承诺”。这意味着你的“Assignment”表格并没有提到“Staff”和“Project”之间的联系,而仅仅是“Staff”,从而消除了用于“Assignment –

+0

”的“double”ProjectId的问题。那么这是否意味着Resource Table不应该成为项目的弱者,但它应该是一个强大的实体? – DoubleClickOnThis

相关问题