1
我有一個記錄公司開支(Company_Expenses)的表。我也有一張記錄員工獎金的表格(Employee_Bonuses)。出於顯而易見的原因,每張表都有一個日期,金額和原因\注。問題是,給員工的獎金(節日禮物,小費等等)也需要記錄爲公司開支。除了獎金是公司費用之外,我沒有看到獎金錶和費用表之間直接的邏輯關係。所以這三個字段(日期,金額,原因\注)將在兩個表中重複。有沒有辦法解決?消除兩個表中的重複值
我有一個記錄公司開支(Company_Expenses)的表。我也有一張記錄員工獎金的表格(Employee_Bonuses)。出於顯而易見的原因,每張表都有一個日期,金額和原因\注。問題是,給員工的獎金(節日禮物,小費等等)也需要記錄爲公司開支。除了獎金是公司費用之外,我沒有看到獎金錶和費用表之間直接的邏輯關係。所以這三個字段(日期,金額,原因\注)將在兩個表中重複。有沒有辦法解決?消除兩個表中的重複值
獎金是一種類型的費用。您可以使EmployeeBonusId
指向Company_Expenses
的外鍵,並重新使用date
,amount
和reason
列。這會將Employee_Bonuses
減少爲一個非常小且簡單的表格,該表格僅跟蹤哪個員工收到了哪個獎金。
編輯
爲了澄清,Employee_Bonuses
「主鍵,將參考CompanyExpenseID
,並且將只持有獎金。其他費用不在此表中列出:
CREATE TABLE Employee_Bonuses (
EmployeeBonusId INT PRIMARY KEY,
EmployeeID NOT NULL,
FOREIGN KEY (EmployeeBonusId) REFERENCES Company_Expenses(CompanyExpenseID)
);
我不太明白。你是否說Employee_Bonuses應該沒有PK?此外,一年的獎金數額只是費用的一小部分,因此Company_Expenses表中會有很多NULL值。這也意味着FK需要接受我不知道的NULLS。也許我只是不理解你。 –
如果我理解正確,我同意@Mureinik:'Employee_Bonuses'應該由三列組成:'EmployeeBonusID,EmployeeID,CompanyExpenseID','CompanyExpenseID'約束有一個適當的'ExpenseCategoryID'。不涉及NULL。 – Dario
@ZviTwersky看到我的編輯,我試圖澄清我的答案。 – Mureinik