Multi работодатель для работника управлять - PullRequest
0 голосов
/ 30 июня 2018

Надеюсь, у тебя все хорошо. Я сталкиваюсь с проблемой в нескольких работодателя на сотрудника.

Что у меня на уме:

Таблица работодателя

employerID,
fname,
lname,
created_at

таблица сотрудников

 employeeID
    fname
    lname
    creted_at

Это структура базовых таблиц, после того как я создал отдельную таблицу для отношения для нескольких работодателей к работнику.

Employer2employee Таблица

employer_id,
employee_id

таблица зарплат

salaryID,
salaryAmount,
salaryDate

Теперь у меня возникла проблема с записью зарплаты. Какой ID должен быть предпочтительным здесь? Я хочу получать зарплату каждому работнику, с точки зрения работодателя. Пожалуйста, помогите мне. Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Во-первых, вы можете избежать 3 таблиц для хранения информации о взаимоотношениях работодателя и сотрудника.

Вместо 3 таблиц используйте только 1 таблицу сотрудников и используйте только новый столбец, который будет хранить employeeID против другого сотрудника и eployeeID, т.е. этот конкретный employeeID в новом столбце является работодателем (который также является сотрудником) этого работник.

Пример -

enter image description here

Итак, у Сотрудника 1 нет работодателя, так как Employee_EmployerID равен 0. Принимая во внимание, что у Сотрудника 2 есть работодатель, который является работником 1.

В этом случае вы можете добавить employeeID в таблицу зарплат. И, выполнив самостоятельное объединение в таблице сотрудников, вы можете получить необходимую информацию.

ПРИМЕЧАНИЕ: Я предлагаю не добавлять SalaryID в таблицу Employee, потому что таблица employee является основной таблицей, поэтому в таблице сотрудников есть salaryID Это может стоить вам проблем с безопасностью позже, если вы поделитесь таблицей сотрудников с каким-либо внешним пользователем.

SELECT E1.FName [EmployeeName], E2.FName [EmployerName], S.SalaryAmount
FROM EmployeeTable E1 
    LEFT OUTER JOIN EmployeeTable E2 ON E1.EmployeeID = E2.Employee_EmployerID
    INNER JOIN SalaryTable S ON S.EmployeeID = E1.EmployeeID

Однако, если вы хотите сохранить свою структуру такой же, как и в случае с 3 таблицами для отношений работник-работодатель, вы можете добавить SalaryID в таблицу Employer2employee ИЛИ добавить employeeID только в ваш зарплатный стол. :)

В обоих случаях только стиль соединения с таблицами изменится во время выборки.

0 голосов
/ 30 июня 2018

Вы можете сделать это так, Table_Employee :: EmployeeId | FName | LName | CreatedDate | FkSuperEmployeeId

Здесь FkSuperEmployeeId получит идентификатор сотрудника из той же таблицы

Table_Salary :: SalaryId | SalaryAmount | SalaryDate

Теперь вы можете установить FkSalaryId в таблице Table_Employee и, если возможно, тогда вы можете установить SalaryAmount и SalaryDate в Table_Employee.

Таким образом, вы сможете легко справиться с этим.

...