寻找数据库设计的HW双重检查

时间:2009-09-12 23:36:48

标签: sql database-design data-modeling

嘿大家......所以我正在为大学设计一个数据库设计课程。我已经得到了下面的问题,我在图中的尝试http://tinypic.com/view.php?pic=httchc&s=3 ..有人会介意看看并提供建议吗?谢谢你的帮助!

问题:

问题3 以下情况描述了希望实施信息系统的公司。该公司希望跟踪其员工,部门和项目。假设公司的MIS部门进行了需求收集和分析阶段,并为您提供了具有以下描述的规范报告。

公司分为几个部门,可以有多个地点。每个部门都有唯一的名称,唯一的编号和经理。公司会记录每位员工开始管理部门的日期。

每个部门控制着许多项目,每个项目都有唯一的名称,唯一的编号和单个位置。

公司存储每位员工的姓名,社会保险号,地址,工资,性别和出生日期。每个员工只被分配到一个部门,但可能在几个不一定由同一部门控制的项目上工作。公司会跟踪员工每个项目每周工作的小时数。该公司还跟踪每位员工的直接主管。

出于保险目的,公司还希望跟踪每位员工的家属。该公司希望记录每个受抚养人的名字,性别,出生日期和与员工的关系。

为此情况绘制EER图表。

2 个答案:

答案 0 :(得分:0)

这是物理模型 - 我留给你或其他人画它:

DEPARTMENTS

  • DEPARTMENT_ID(pk)
  • DEPARTMENT_NAME(英国)

LOCATIONS

  • LOCATION_ID(pk)
  • LOCATION_NAME

DEPT_LOCATIONS_XREF

  • DEPARTMENT_ID(pk,fk)
  • LOCATION_ID(pk,fk)

DEPT_MANAGER_XREF

  • DEPARTMENT_ID(pk,fk)
  • EMPLOYEE_ID(pk,fk)
  • EFFECTIVE_DATE(pk) - 这个复合密钥允许某人成为同一部门的经理2次以上,只要它不是在同一天开始。
  • EXPIRY_DATE(非空)

PROJECTS

  • PROJECT_ID(pk)
  • DEPARTMENT_ID(fk)
  • PROJECT_NAME(英国)
  • LOCATION_ID(fk)

EMPLOYEES

  • EMPLOYEE_ID(pk)
  • DEPARTMENT_ID(fk)
  • FIRST_NAME
  • MIDDLE_NAME
  • LAST_NAME
  • SIN
  • SALARY
  • SEX
  • BIRTH_DATE

EMP_PROJECTS_XREF

  • EMPLOYEE_ID(pk,fk)
  • PROJECT_ID(pk,fk)

DEPENDENT_RELATIONSHIP_CODES

  • DEPENDENT_RELATIONSHIP_CODE(pk)
  • 说明

DEPENDENTS

  • DEPENDENT_ID(pk)
  • EMPLOYEE_ID(fk)
  • FIRST_NAME
  • BIRTH_DATE
  • SEX
  • DEPENDENT_RELATIONSHIP_CODE(fk)

答案 1 :(得分:0)

多对多关系需要有“管理”表(类似于“Resides”表,这是多对多关系)。因为每个部门只有1个管理员,所以您可以在Department表中使用单个EmployeeIdOfManager字段(和DateStarted)。

我喜欢rexem的表格的命名约定,这些表格模拟了多对多关系,例如: 'EMP_PROJECTS_XREF'对我来说比'InvolvedWith'更好。

DirectSupervisor字段必须是可空的(例如,对于顶级老板)。

我相信InvolvedWith表中不应该有一个DepartmentId字段。

您应该查询同一位置是否可以存在多个部门。如果是这样,那么Location表中不应该有DepartmentId字段,如果没有,那么你不需要Resides表。