几乎无限的列

时间:2013-04-03 02:39:59

标签: mysql database-design

我想创建不同的问题集并存储答案

这是我试过的

表格问题 id,name

表格字段 id,label

表关系 id,question_id,field_id

这很有效,但仅适用于问题的显示部分 但是存储答案呢?我不能水平存储答案因为我没有引用(列名),而且垂直对数据库来说非常糟糕吗?

即时通讯使用mysql。什么是最好的方法呢? THX!

2 个答案:

答案 0 :(得分:2)

您可以再添加1个表来存储答案:

question_id  PK   INT
user_id      PK   INT <-- or maybe anything that identifies the user
field_id     PK   INT
answer            VARCHAR <-- or TEXT , depends on your usage

要返回所有结果(假设答案表名为tbl_answer):

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 

返回特定用户的结果:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE user_id={user id here}

返回特定问题的结果:

SELECT `c.name` AS question, b.label, answer FROM tbl_answer a 
LEFT JOIN fields b ON a.field_id=b.id 
LEFT JOIN questions c ON a.question_id=c.id 
WHERE question_id={question id here}

当然,您必须进一步处理结果。

答案 1 :(得分:1)

简单。

您只需要另一张表来存储答案:

的答案

ID question_id field_id(回答)

您可能还需要一个字段来将您的“答案”与某些内容相关联,例如正在回答的人或问卷。