(数据库)2个弱实体可以组成一个关联实体吗?

时间:2015-01-09 06:26:34

标签: entities associative weak

目前,我有一种情况,即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

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

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

因此,它有一个名为“Assignment”实体的关联实体。

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

projectID, taskID, resourceID, workCompleted, work, units

之后我很困惑,当我为“Assignment”表创建SQL结构时,我是从任务弱实体资源弱实体引用projectID吗?

或者我是否错误地映射了所有内容?

1 个答案:

答案 0 :(得分:0)

嗯 - 实际上很难真正回答,因为很多都取决于你的实际数据和数据模型等。

根据您的提及,我认为您需要一个与项目无关的资源表,因为如果它是员工/人力资源 - 一名员工应该能够与多个项目相关联(我认为)使它成为&#34;员工&#34;之间的多对多关联。和&#34;项目&#34;。

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

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

而不是您现有的资源表。

如果可以,我认为它可以帮助你。 根据任务中的信息,您可能也可以使用相同的信息。

但是现在,您应该可以将您的分配更改为仅从员工/资源中保存ResourceId,而无需使用&#34; double&#34;您在当前设置中遇到的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)