Создайте таблицу базы данных, связанную с таблицей отношений «многие ко многим» - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время я создаю внутреннюю базу данных персонала для своей команды, используя Access.

Мне трудно понять, как создать некоторые из моих таблиц.

У меня есть таблица с именем Staffing_Type.Запрос для создания моей таблицы:

Create Table Staffing_Type (
staffing_type_id autoincrement Primary Key, 
statffing_type text(150)
);

Эта таблица содержит все типы персонала, которые могут запустить процесс.Существует более 3 типов персонала ... Это только примеры.

+----+--------------------+
| ID |   staffing_type    |
+----+--------------------+
|  1 | Acting             |
|  2 | Student Employment |
|  3 | Casual             |
+----+--------------------+

У меня есть таблица с именем Process.Они запрашивают для этой таблицы:

Create Table Process (
process_id autoincrement Primary Key, 
process text(150)
);

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

+----+-----------------------------------------------+
| ID |                    process                    |
+----+-----------------------------------------------+
|  1 | Approval from department                      |
|  2 | Confirm employee meets conditon of employment |
|  3 | Determine candidate's rate of pay             |
|  4 | Gather and complete all forms and documents   |
|  5 | Contact and evaluate student                  |
+----+-----------------------------------------------+

У меня есть таблица с именем staffing_processes.Запрос для этой таблицы:

Create Table Staffing_Processes (
staffing_type_id integer, 
process_id integer, 
Primary Key (staffing_type_id, process_id),
CONSTRAINT type_staffing_Processes Foreign Key (staffing_type_id) references Staffing_Type(staffing_type_id),
CONSTRAINT process_staffing_Processes Foreign Key   (process_id) references Process(process_id)
);

Это таблица отношений «многие ко многим» между различным типом staffing_type и различными процессами.

+------------------+------------+
| staffing_type_ID | process_ID |
+------------------+------------+
|                1 |          1 |
|                1 |          2 |
|                1 |          3 |
|                1 |          4 |
|                2 |          1 |
|                2 |          2 |
|                2 |          3 |
|                2 |          4 |
+------------------+------------+

Пока что моя логика работает нормально.

Например, скоро начнется действие, у меня есть запрос, который возвращает весь процесс для этого типа персонала.

SELECT Process.process
FROM Staffing_Type INNER JOIN (Process INNER JOIN Staffing_Processes ON Process.process_id = Staffing_Processes.process_id) ON Staffing_Type.staffing_type_id = Staffing_Processes.staffing_type_id
WHERE (((Staffing_Processes.staffing_type_id)=1));

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

Я попытался создать таблицу staff_a_position.Но эта структура не работает, чтобы иметь возможность получить уникальное staff_a_position со всеми относящимися к нему process_id.

Create Table Staff_a_Position (
staff_a_position_id autoincrement Primary key,
staffing_type_id integer, 
process_id integer, 
isDone bit, 
whenCompleted date
);
...