概念到关系映射

时间:2011-02-08 16:31:26

标签: database-design relational-model conceptual-model

这是一个家庭作业问题。我已经有了自己的答案,但我不确定它是否正确,需要你们的建议。这是概念图:

-------------
| Employer  |
-------------------
| EmployerID, Name|
-------------------
    |
    |- supervise
    |
------------------           ---------------  ---------
| Running Project | ------- |Year, duration| | Project |
-------------------          --------------- -----------
    |                                        | ProjectID, ProjectName,|
    |- works                                 -------------------
    |
-------------
| Employees |
-------------
| EmpID, Name|
--------------

这是我的关系模式:

雇主(雇主ID,姓名) - >主键是EmployerID

员工(EmpID,姓名) - >主键是EmpID

我认为雇主和雇员实体应该是正常的,正常的类别。 BUt我不确定正在运行的项目和项目实体,它是关联类和依赖类。这是我的答案:

RUNning Project(EmpID,Year,Duration,ProjectID,ProjectName) - >所有主键

Project(ProjectID,ProjectName) - >所有主键

1 个答案:

答案 0 :(得分:1)

这是我从关系中理解的,

  • 您有3个主要实体:雇主,员工,项目
  • 雇主属性:EmployerId,姓名
  • 员工属性:EmployeeId,Name
  • 项目属性:ProjectId,名称,持续时间,年份
  • 一个雇主监督多个项目。
  • 一名员工可以多个项目工作。

在这种情况下,可以识别3个根表:雇主,雇员和项目。用于关联根表的表是:

  • 雇主项目(EmployerId,ProjectId)
  • EmployeeProject(EmployeeId,ProjectId)

同样,我对 Project 表有一个建议,year属性似乎是项目启动时的年份(或日期)。如果是,则Duration属性是派生属性(CurrentDate - StartDate)。此派生属性不需要包含在表中。