2016-12-28 66 views
1

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

enter image description here

回答

1

奖金是一种类型的费用。您可以使EmployeeBonusId指向Company_Expenses的外键,并重新使用date,amountreason列。这会将Employee_Bonuses减少为一个非常小且简单的表格,该表格仅跟踪哪个员工收到了哪个奖金。

编辑
为了澄清,Employee_Bonuses“主键,将参考CompanyExpenseID,并且将只持有奖金。其他费用不在此表中列出:

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

我不太明白。你是否说Employee_Bonuses应该没有PK?此外,一年的奖金数额只是费用的一小部分,因此Company_Expenses表中会有很多NULL值。这也意味着FK需要接受我不知道的NULLS。也许我只是不理解你。 –

+1

如果我理解正确,我同意@Mureinik:'Employee_Bonuses'应该由三列组成:'EmployeeBonusID,EmployeeID,CompanyExpenseID','CompanyExpenseID'约束有一个适当的'ExpenseCategoryID'。不涉及NULL。 – Dario

+0

@ZviTwersky看到我的编辑,我试图澄清我的答案。 – Mureinik