消除两个表中的重复值

时间:2016-12-28 12:05:16

标签: sql database database-design

我有一张记录公司费用的表(Company_Expenses)。我还有一张记录员工奖金的表(Employee_Bonuses)。出于显而易见的原因,每个表都有日期,数量和原因\注释。问题是给员工的奖金(节日礼物,小费等......)也需要记录为公司费用。我不会在奖金表和费用表之间直接看到任何逻辑关系,除了奖金是公司费用这一事实。所以这三个字段(日期,金额,原因\注释)将是两个表中的重复值。有没有办法解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:1)

奖金是一种费用。您可以将EmployeeBonusId外键引用Company_Expenses,并重复使用dateamountreason列。这会将Employee_Bonuses简化为一个非常小而简单的表格,该表格只跟踪哪个员工获得了哪个奖金。

EDIT
为了澄清,Employee_Bonuses'主键将引用CompanyExpenseID,并且只会持有奖金。其他费用不在此表中列出:

CREATE TABLE Employee_Bonuses (
    EmployeeBonusId INT PRIMARY KEY,
    EmployeeID NOT NULL,
    FOREIGN KEY (EmployeeBonusId) REFERENCES Company_Expenses(CompanyExpenseID)
);