2016-12-28 20 views
1

Ich habe eine Tabelle, die Unternehmensausgaben (Company_Expenses) aufzeichnet. Ich habe auch eine Tabelle, die Mitarbeiterbonus (Employee_Bonuses) aufzeichnet. Aus offensichtlichen Gründen hat jede Tabelle ein Datum, eine Menge und einen Grund/Anmerkung. Das Problem ist, dass ein Bonus, der einem Mitarbeiter gegeben wird (Urlaubsgeschenk, Trinkgeld, etc ...) auch als Betriebsausgabe erfasst werden muss. Ich sehe keine logische Beziehung direkt zwischen der Bonus-Tabelle und der Ausgaben-Tabelle, außer der Tatsache, dass ein Bonus eine Betriebsausgabe ist. Diese drei Felder (Datum, Betrag, Grund/Anmerkung) sind doppelte Werte in zwei Tabellen. Gibt es einen Weg dazu?Doppelte Werte in zwei Tabellen eliminieren

enter image description here

Antwort

1

Ein Bonus ist eine Art von Kosten. Sie könnten den EmployeeBonusId einen Fremdschlüssel machen, der sich auf Company_Expenses bezieht, und die date, amount und reason Spalten wiederverwenden. Dies reduziert Employee_Bonuses auf einen sehr kleinen und einfachen Tisch, der nur verfolgt, welcher Mitarbeiter welcher Bonus erhalten hat.

EDIT
Um zu klären, Employee_Bonuses "Primärschlüssel zum CompanyExpenseID beziehen, und wird nur Boni halten. Andere Ausgaben werden in dieser Tabelle nicht aufgeführt:

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

Ich verstehe nicht ganz. Willst du sagen, dass Employee_Bonuses ohne PK sein sollte? Außerdem ist die Höhe der Boni für ein Jahr ein Bruchteil der Ausgaben, sodass in der Tabelle Company_Expenses viele NULL-Werte vorhanden sind. Dies bedeutet auch, dass der FK NULL akzeptieren muss, von dem ich nicht wusste, dass es möglich ist. Vielleicht habe ich dich einfach nicht verstanden. –

+1

Ich stimme mit @Mureinik überein, wenn ich richtig verstehe: 'Employee_Bonuses' sollte aus drei Spalten bestehen:' EmployeeBonusID, EmployeeID, CompanyExpenseID', wobei 'CompanyExpenseID' auf eine entsprechende' ExpenseCategoryID' beschränkt ist. Keine NULL beteiligt. – Dario

+0

@ZviTwersky sehe meine Bearbeitung, ich habe versucht, meine Antwort zu klären. – Mureinik

Verwandte Themen