实体关系

时间:2012-06-20 21:47:33

标签: sql-server database-design normalization rdbms erd

以下实体关系是否正确?我正在尝试链接员工,时间表和审批人表。

其他几个表格和字段很少,但对于这个问题,我主要关注的是以下三个表格。一名员工可以拥有超过时间表的批准者。

Employee
--------
EmpID pk
Name
TimeSheet
------------
TSHEET_ID PK
FK_EmpID FK
Approved_By
Timesheet_Approver (one employee can have more than one approver
                    but only one will be approving the timesheet)
------------------
EmpID
Approver_EmpID 

员工表数据:

EmpID Name
----- -----
1     john
2     david
3     mark

时间表审批人数据:

EmpID Approver
----- --------
1     2
1     3
2     3

时间表

TSID EMPID APPROVED_BY
---- ----- -----------
101  1     2
102  1     3
103  2     3



或者这看起来没问题?

enter image description here

4 个答案:

答案 0 :(得分:1)

我的建议

为什么要将Approver作为单独的表?您可以在员工表中保留Bit字段IsApprover吗?否则,您正在创建redundancy

答案 1 :(得分:0)

我觉得设计有问题。这是我的想法。

<强>员工

EmpID pk

名称

<强>的TimeSheet

TSHEET_ID PK

FK_EmpID

Approved_By

第三张表是不必要的。

答案 2 :(得分:0)

如果有多个批准,我们无法在TimeSheet表中添加名为Approved_by的列。 然后我们可以再添加两个关系。一个是批准者名单。

<强>批准者

ApproverID

名称

<强> TimeSheetApproves

TimeSheetID

Department1ApproverID

Department2ApproverID

..........................等等

不要忘记将Approved_by删除到TimeSheet实现。

答案 3 :(得分:0)

<强>员工

EmpID - Pk

名称

<强>的TimeSheet

TSHEET_ID - PK

EmpID - FK

ApproverID - FK

<强>批准者

ApproverID -PK

  

好的,这是我的最终答案。如果它不适合你可以尝试自己的。我没有时间阅读所有这些评论。而我正在努力帮助你。   使用审批人关系,您可以获得部门和其他事项的审批人。检查sql查询以获取这些数据。