我在我的数据库设计中遇到问题,其中包括QUestion bank的php项目
用户可以创建问题并为其分配无限数量的答案。
问题是我目前存储的问题如下:
身份证,问题,答案
1,“引擎盖颜色?” ,“green = hgreen,yellow = yellow”
我将所有的答案存储为seperatore和=来将实际值与应该向用户显示的值分开!。
所以上面的例子是
<span>Hood color</span>
<input type=checkbox value=hyellow>yellow
<input type=checkbox value=hgreen>green
任何更好的想法?
答案 0 :(得分:1)
是的,为答案创建一个不同的表格:
Table Questions: QuestionId Question Table Answers: AnswerId QuestionId Answer (real answer) Caption (caption to be shown to the user)
编辑:
选择问题及其答案。如果没有答案,则不返回任何问题。
select
q.QuestionId,
q.Question,
a.AnswerId,
a.Answer,
a.Caption
from
Questions q
inner join Answers a on a.QuestionId = q.QuestionId
将inner join
更改为left join
,以便在没有答案的情况下获得单行。 a。*在这些行中将为NULL。
其他解决方案,首先查询问题列表并获得每个问题的答案:
select
a.AnswerId,
a.Answer,
a.Caption
from
Answers a
where
a.QuestionId = <QuestionId you retrieved before>
答案 1 :(得分:0)
PHP有一些非常好的JSON支持,您可以将其保存为JSON字符串({"green": "hgreen", "yellow": "hyellow"})
答案 2 :(得分:0)
表用户和表格答案(有2个或更多列,如“right_answer”和“wrong_answer”......)也许你可以使用mysql workbench来创建数据库结构=)