Mysql 几乎无限列

Mysql 几乎无限列,mysql,database-design,Mysql,Database Design,我想创建不同的问题集并存储答案 这就是我试过的 表格问题 身份证,姓名 表格字段 标识 表关系 id,问题id,字段id 这非常有效,但仅适用于问题的显示部分 但是存储答案呢?我不能水平存储答案,因为我没有引用(列名称),垂直存储对数据库非常不利,对吗 我正在使用mysql。最好的方法是什么?谢谢 您只需再添加一个表来存储答案: question_id PK INT user_id PK INT <-- or maybe anything that identifies

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

这就是我试过的

表格问题 身份证,姓名

表格字段 标识

表关系 id,问题id,字段id

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


我正在使用mysql。最好的方法是什么?谢谢

您只需再添加一个表来存储答案:

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
要返回特定用户的结果,请执行以下操作:

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}
当然,您必须进一步处理结果。

简单

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

答案 身份证 问题编号 字段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 question_id={question id here}