我正在为我正在进行的项目设计数据库。我有3个任务(用户可以选择)
第一项任务提出了10个问题 第二项任务提出20个问题 第三项任务提出30个问题
我想出了一个改进的设计,但我仍在苦苦挣扎。
看起来像:
User
(user_id,Name,reg_date)
Test
(test_id,task_type [1,2,3],类别[有5种不同的类别])
Response
(Response_id,user_id,test_id,response_date,response_1a,response_1b,response_2a,response_2b,...,response_30a,response_30b)
对于每个问题,将有两个答案。答案1和答案2.因此,如果有10个问题,将记录总共20个答案。每个答案都是0~1.0的十进制值。
但是,我遇到了响应表有+120列的问题。
请注意,如果test_id为1,则只有10个问题,因此Response表中从response_11a到response_30b的列将为null。
示例记录将是:
回应(1,1,1,2015 / 04 / 30,0.5,0.5,0.7,0.7,0.8,0.8,......(很多记录)......,1.0,0.3,null,null, null,(所有空值,因为test_id只有10个问题。))
我想不出另一种方法。 :/
这是设计数据库的好方法吗?
编辑:
我知道这样做。
User
(user_id,Name,reg_date)
Test
(test_id,task_type [1,2,3],类别[有5种不同的类别])
Response
(resp_id,user_id,test_id,resp_date)
answers
(resp_id(链接到响应表),current_question_number,ans1,ans2)
因此,如果有10个问题,在answers
表中,将有10条记录如下:
(1, 1, 0.0, 0.0)
(1, 2, 0.0, 0.5)
(1, 3, 0.3, 0.6)
(1, 4, 0.5, 0.5)
...
(1, 10, 0.3, 0.3)
这个设计怎么样?
稍后,我将使用此数据绘制图表,以便我可以轻松访问每个回复。
答案 0 :(得分:1)
在数据库设计中,您经常需要考虑更多字段或更多记录,以及数据库需要如何规范化,而您上面建议的内容并未完全规范化。
DB101规范化 http://en.wikipedia.org/wiki/Database_normalization
我建议第4张桌子,也许是第5张桌子
答案 1 :(得分:0)
我对数据库设计有一个建议。
我在响应表中做了一些修改并创建了一个新表。
如果您有任何疑惑,请查看并告诉我。
问候。
请查看New_Response表
(Response_id,user_id,test_id,Trans_id,Ans1,Ans2,Flag)
答案 2 :(得分:0)
您需要进一步规范化您的表格。您需要另一张表格'问题'防止冗余数据存储。