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