2013-03-25 73 views
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 

,并通过用户所做的所有细节。

+0

令人困惑。你的清单表有一个工作代码,但是在你的文本中,你显示与清单相关的程序,而不是工作。另外,对于每项工作,只有某些程序是允许的,而且只有某些清单?还是三者允许的组合? – radarbob 2013-03-25 14:40:15

+0

那么,每个工作就像一个包含过程列表(其基本上是该作业所需的所有东西的列表)的标题。每个程序清单都包含需要检查并存储在一个地方的步骤。所以要回答你的问题。它就像我想的嵌套表达式。 – wtz 2013-03-25 15:19:47

回答

0

我假设关系是作业1:m程序1:m清单。用户可以选择任意数量的作业。 Job/Procedure/Checklist的组合由用户选择。例如,我假设一个作业可能有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放在此表中。使用所有列将主键设为复合键。

主键的想法

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