【发布时间】:2012-06-23 03:03:40
【问题描述】:
以下实体关系是否正确?我正在尝试链接员工、时间表和审批者表。
几乎没有其他表格和字段,但对于这个问题,我主要关心的是三个表格。一名员工可以拥有多个时间表审批者。
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
或者这看起来不错?
【问题讨论】:
-
看起来是一个好的开始。您可能想考虑随着时间的推移您将如何处理问题,例如员工离职,例如您(可能)仍然需要跟踪他们批准的所有时间表,但要防止他们进行其他更改。
-
可能不需要从批准人表中删除员工数据,但如果需要,可以通过在员工表上添加触发器来处理,当员工表列 'Is_Active' 设置为' N',它将从批准者表中删除行。
-
我应该创建单独的时间表审批者表,并让所有可以批准时间表的员工都在其中,然后有一个表,该表将具有多对多关系 b/w empid 和 aprroverid?
-
做
Approvers批准Employees或Timesheets?看起来他们批准了员工的这种设计。 -
而且您还没有提供 FK,只提供了 PK。
标签: sql-server database-design normalization rdbms erd