【发布时间】:2014-06-03 18:39:25
【问题描述】:
在设计数据库时,例如假设我有名为SalaryTrans、EmployeeMaster 和AttendanceTrans 的表。假设它的规范化到第 3 范式,表字段将如下......(仅显示相关的 3 个表)
SalaryTrans (salary_id[pk], employee_id[fk], month, ..., net_salary )
EmployeeMaster (employee_id[pk], name, ...)
AttendanceTrans (attendance_id[pk], employee_id[fk], in_time, out_time, date)
注意:
salary_id 和 attendance_id 是整数自动递增字段。
employee_id 是一个类似“OA123”的字符串。
[pk] - 主键
[fk] - 外键
问题:
- 我是否正确选择了主键?
- 我是否也应该为
EmployeeMaster使用integer自动递增ID 字段(使employee_id成为唯一但非主键)? - 例如,在表
SalaryTrans中,如果我将主键更改为[employee_id + month](因为此复合键是唯一的,因为没有员工会每月获得两次薪水) - 对最佳做法和标准有何建议?
【问题讨论】:
标签: sql-server database foreign-keys primary-key entity-relationship