У меня есть таблица, в которой записываются расходы компании (Company_Expenses). У меня также есть таблица, в которой записываются бонусы сотрудников (Employee_Bonuses). По очевидным причинам каждая таблица имеет дату, количество и причину \ note. Проблема в том, что бонус, предоставляемый сотруднику (праздничный подарок, подсказка и т. Д.), Должен быть записан как расходы компании. Я не вижу никакого логического отношения непосредственно между таблицей бонусов и таблицей расходов, кроме того, что бонус - это расходы компании. Таким образом, эти три поля (дата, сумма, причина \ примечание) будут дублировать значения в двух таблицах. Есть ли способ обойти это?Устранение повторяющихся значений в двух таблицах
1
A
ответ
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)
);
Я не совсем понимаю. Вы говорите, что Employee_Bonuses должен быть без ПК? Кроме того, сумма бонусов за год составляет часть суммы расходов, поэтому в таблице Company_Expenses будет значение LOT NULL. Это также означает, что FK необходимо принять NULLS, которые я не знал, это возможно. Может, я просто тебя не понял. –
Я согласен с @Mureinik, если я правильно понимаю: 'Employee_Bonuses' должен состоять из трех столбцов:' EmployeeBonusID, EmployeeID, CompanyExpenseID', с 'CompanyExpenseID', ограниченным, чтобы иметь соответствующую' ExpenseCategoryID'. Нет NULL. – Dario
@ZviTwersky вижу мое редактирование, я попытался прояснить свой ответ. – Mureinik