清单数据库设计。一对多关系并存储用户信息

时间:2013-03-25 13:24:44

标签: sql database ms-access relationships

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

我目前的总体布局:

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

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

1 个答案:

答案 0 :(得分:0)

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

使用“连接表”。

  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。使用所有列使主键成为复合词。
  4. 主键想法

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