创建链接到多对多关系表的数据库表

时间:2018-12-04 17:12:57

标签: mysql database forms database-design access

我目前正在使用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。但是,此结构无法检索具有与之相关的所有process_id的唯一的staff_a_position。

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

0 个答案:

没有答案