2016-12-28 70 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