2016-12-28 3 views
1

У меня есть таблица, в которой записываются расходы компании (Company_Expenses). У меня также есть таблица, в которой записываются бонусы сотрудников (Employee_Bonuses). По очевидным причинам каждая таблица имеет дату, количество и причину \ note. Проблема в том, что бонус, предоставляемый сотруднику (праздничный подарок, подсказка и т. Д.), Должен быть записан как расходы компании. Я не вижу никакого логического отношения непосредственно между таблицей бонусов и таблицей расходов, кроме того, что бонус - это расходы компании. Таким образом, эти три поля (дата, сумма, причина \ примечание) будут дублировать значения в двух таблицах. Есть ли способ обойти это?Устранение повторяющихся значений в двух таблицах

enter image description here

ответ

1

бонус является одним из видов расходов. Вы можете сделать внешний ключ , относящийся к Company_Expenses, и повторно использовать столбцы , amount и reason. Это уменьшает Employee_Bonuses до очень маленькой и простой таблицы, которая просто отслеживает, какой сотрудник получил этот бонус.

EDIT
Чтобы уточнить, Employee_Bonuses "первичный ключ будет ссылаться на CompanyExpenseID, и будет содержать только бонусы. Прочие расходы не включаются в эту таблицу:

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

Я не совсем понимаю. Вы говорите, что Employee_Bonuses должен быть без ПК? Кроме того, сумма бонусов за год составляет часть суммы расходов, поэтому в таблице Company_Expenses будет значение LOT NULL. Это также означает, что FK необходимо принять NULLS, которые я не знал, это возможно. Может, я просто тебя не понял. –

+1

Я согласен с @Mureinik, если я правильно понимаю: 'Employee_Bonuses' должен состоять из трех столбцов:' EmployeeBonusID, EmployeeID, CompanyExpenseID', с 'CompanyExpenseID', ограниченным, чтобы иметь соответствующую' ExpenseCategoryID'. Нет NULL. – Dario

+0

@ZviTwersky вижу мое редактирование, я попытался прояснить свой ответ. – Mureinik

 Смежные вопросы

  • Нет связанных вопросов^_^