Sql 数据库设计中的循环关系

Sql 数据库设计中的循环关系,sql,database,Sql,Database,我对我的数据库设计有些怀疑。我有四个表遵循以下规则: 一个表单可以有许多问题(0..n) 一个表单可以有多个响应(0..n) 问题属于一种形式(1) 响应属于一种形式(1) 一个答案对一个问题有很多答案(答案表)(0..n) 答案属于形式(1)的特定问题 该设计产生了一个圆形依赖关系图,如下所示: Form这种方法似乎是错误的。“一种形式可以有许多问题。一种形式可以有许多答案。答案属于一种形式。” 否,答案应指向特定的问题。如果一个问题属于一种形式,那么答案确实隐式地属于该形式,但只是间接地

我对我的数据库设计有些怀疑。我有四个表遵循以下规则:

  • 一个表单可以有许多问题(0..n)
  • 一个表单可以有多个响应(0..n)
  • 问题属于一种形式(1)
  • 响应属于一种形式(1)
  • 一个答案对一个问题有很多答案(答案表)(0..n)
  • 答案属于形式(1)的特定问题
该设计产生了一个圆形依赖关系图,如下所示:

Form这种方法似乎是错误的。“一种形式可以有许多问题。一种形式可以有许多答案。答案属于一种形式。”

否,答案应指向特定的问题。如果一个问题属于一种形式,那么答案确实隐式地属于该形式,但只是间接地,因为它们属于一个问题

归结起来是:

  • 一个表单可以有很多问题
  • 一个问题可以有很多答案
以表格的形式:

  • 表格表格(表格id,…)
  • 表格问题(问题id,问题文本,…,表格id)
  • 表格答案(答案id、答案文本、…、问题id)
根据最新请求更新编辑:

所以你有表格、问题和问答,如上图所示。此外,您还希望存储响应。一个响应包含几个答案和一些统计数据

  • 表响应(响应id、表单id、提交时间等)
  • 表response\u answer(response\u id,answer\u id)

我认为你错了,你错过了表格和问题之间的另一张表格,问题和回答也一样answers@Sami:在我的模型中,问题只属于一种形式,答案只属于一个问题。如果你想在多个表格中使用同一个问题,或者在多个问题中使用同一个答案,那么是的,你应该使用桥接表。是的,我认为这些规则(OP编写的)不正确,这根本不符合逻辑对不起,我忘了提到答案表是用来保存信息的,不是关于某个问题的具体答案,而是保存诸如提交时间或关于受访者网络的信息。因此,表单的答案包含了这些信息,并且对表单的问题有很多答案。对不起,我的英语不太懂。表格有问题。这些问题有答案。然后你想储存关于答案的统计数据?这可能是另一个表
answer\u stat(answer\u stat\u id,answer\u id,submit\u time,ping\u time,…)
。我不认为表单可以有多个问题,没有答案可以有很多问题,你写的那些规则对我来说似乎是错误的。