Database 多维矩阵问题的关系数据库设计
我正在为在线调查设计一个关系数据库 但是,我不确定存储多维矩阵问题的最佳关系数据库设计是什么 比方说,我有以下问题(对不起,它不允许我插入HTML表): 你对……有什么经验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
----------| 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查询有一些发展,但是有一些标准吗?