0

我基本上是在设计一个网络清单。过程如下:用户登录,选择列表的“工作名称”,点击它,进入下一页,从列表中选择“程序列表”,点击它,进入下一页,他看到了一个清单,他基本上可以在其中添加评论,然后单击单个列表上的复选框。我知道如何编写大部分代码,但目前我正在尝试弄清楚如何设置关系+要添加哪些额外的表来保存信息。

我目前的总体布局:

Table: User_list
User_ID
Username

Table: Job_list
Job_ID
Job Name

Table: Procedure_List
Procedure_ID
Procedure Name
Job_ID

Table: Check_List
Job_ID
Checklist_ID
Description

Job_ID -> Procedure_ID -> Checklist_ID 是一对多的...但是如何添加用户列表以存储用户所做的所有更改。

所以你基本上可以有一页看到:

Job Name
Procedure
Checklist done

以及用户完成的所有细节。

4

1 回答 1

0

我假设这些关系是 Job 1:m Procedure 1:m Checklist。并且用户可以选择任意数量的工作。作业/程序/清单的组合由用户选择。例如,我假设一个 Job 可能有 10 个关联的过程,并且用户选择其中的 1 个或多个。程序相同:给定程序具有与其关联的某些清单,用户可以选择任意数量的这些清单。

使用“连接表”。

  1. User_Job 表。用户可以与任何工作或任何数量的工作相关联。user_ID 和 job_ID 进入 User_Job 表。将主键设为 User_ID + job_ID。
  2. Job_Procedure 表。将 User_Job 键(两列)和 procedure_id 放在此表中。制作主键User_ID、Job_ID、Procedure_ID
  3. Procedure_Checklist 表。将 Job_procedure 键(所有列)和 checklist_id 放在此表中。使用所有列使主键成为复合键。

主键的想法

每个表的主键的序列号将限制相关表中的列数。但是,此键没有真正的意义,例如,如果您正在查看 Procedure_Checklist 表,则如果不查询其他表 - PITA,您将无法分辨出哪个作业和用户。对这样的key进行排序也是没有意义的。它并不能防止重复行。

于 2013-03-25T15:23:48.743 回答