Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 多维矩阵问题的关系数据库设计_Database_Schema_Relational - Fatal编程技术网

Database 多维矩阵问题的关系数据库设计

Database 多维矩阵问题的关系数据库设计,database,schema,relational,Database,Schema,Relational,我正在为在线调查设计一个关系数据库 但是,我不确定存储多维矩阵问题的最佳关系数据库设计是什么 比方说,我有以下问题(对不起,它不允许我插入HTML表): 你对……有什么经验 ----------| Not friendly| (2) |Very friendly|Length of stay|Visited in the last year?| Sydney |radio button | rb | rb | drop down | check box

我正在为在线调查设计一个关系数据库

但是,我不确定存储多维矩阵问题的最佳关系数据库设计是什么

比方说,我有以下问题(对不起,它不允许我插入HTML表):

你对……有什么经验

----------| Not friendly| (2) |Very friendly|Length of stay|Visited in the last year?|
Sydney    |radio button |  rb |        rb   |   drop down  |  check box              |   
--------------------------------------------------------------------------------------
New York  |     rb      |  rb |        rb   |   drop down  |  check box              | 
--------------------------------------------------------------------------------------
London    |     rb      |  rb |        rb   |   drop down  |  check box              |
--------------------------------------------------------------------------------------
你认为我应该按照下面的思路做些什么,还是有更好的方法

保留所有问题:

问题
问题ID
问题

问题矩阵2d
matrix2dID
问题ID
子问题ID
子问题

问题矩阵
问题ID
matrix2dID
问题\u parentID

并保存所有回复:

问题回答
问题ID
响应\u代码

问题矩阵x2dResponse
问题ID
子问题ID
响应\u代码


谢谢你的帮助。

做过类似的事情后,我建议不要把这变成关系问题。如果您有对象,只需将它们序列化为JSON之类的内容并将其存储,该怎么办

以关系方式这样做,您将花费大量时间制作表格,并将应用程序中复杂的绘图代码连接在一起,以确保问题/答案按正确的顺序绘制,等等


否则我认为你可以让你的方法奏效。在RDBMS中设计调查资料并没有灵丹妙药

我不同意ryan1234。这完全是一个关系问题,没有什么理由不把它放到数据库中

不过,我还是要做一些猜测,你在这里想要达到的目的。你有一个在线调查,所以我想它会被不止一个人使用。您的数据库需要有一个
会话
用户
表来满足这一需求,我将使用后者,因为它更易于阅读

其次,您有一个
位置列表
(悉尼、纽约、伦敦)。我假设这个列表可以随着时间的推移而改变,甚至可以从一个问卷到下一个问卷

然后你有一组
问题
。您没有明确声明这些将是可变的或固定的。既然你为此设计了一套表格,我想它应该是可变的。请注意,您的问题不是矩阵,而是列表。即使它们是分层的,它们仍然不构成矩阵

最后但并非最不重要的是,你已经找到了这些问题的答案

让我们创建一个
users
表:

user_id  user_name  
1        me
2        somebody else
第二个表很简单:
位置

location_id    location_name
1              Sidney
2              New York
3              London
第三张桌子有点复杂——老实说:简直太难看了。但如果在数据库中设计数据库,就会得到这样的结果,而替代方案(使用DDL或将该信息存储在XML/JSON中,甚至存储在数据库之外)也不是很好。如果存在分层问题(您的示例没有显示),您可以添加“parent\u question\u id”列

最后,您需要第四个表来存储所有答案

user_id    location_id     question_id     value
1          1               1               2          <-- value here means "rating of 2"
1          1               2               5          <-- value here means "5 days"
1          1               3               1          <-- value here means "yes, visited last year"
调查问题

survey_id question_id
1         1
1         2
1         3
2         1
survey_id location_id
1         1
2         1
2         2
测量位置

survey_id question_id
1         1
1         2
1         3
2         1
survey_id location_id
1         1
2         1
2         2

我放在这里的内容给你两个调查。调查#1将在一个地点问所有三个问题:“伦敦”。第二次调查只会问一个关于伦敦和纽约的问题。如果您想在不同的位置问不同的问题,您的表格布局将必须适应,但这样的系统将无法适应原始的表格式布局。

谢谢您的回答。你是对的-它将被多个用户使用,并且问题可以在不同的调查中改变。然而,你认为什么是最好的方式来表明所有这些问题都与你的经历有关。。。?因为对于那些将要分析数据的人来说,了解问题是如何被问到的是很重要的。我不知道你在问什么。第四个表
answers
有一列
question\u id
,该列直接链接到
questions
表,该表依次包含问题。将有外部人员查看这些调查。对于其中一些问题,准确了解问题是如何提出的很重要,因此介绍性问题“你在……方面的经历如何”没有得到任何回答,但当人们看到调查时,他们需要知道这是作为介绍提出的。我想在生成调查并向用户显示时,了解问题之间的关系是很重要的。谢谢。这是非常有用的。谢谢-数据必须可以查询。如果我将它存储为JSON,我不确定我是否能够非常轻松地完成它。我知道JSON查询有一些发展,但是有一些标准吗?