php:Mysql:问题库数据库设计

时间:2011-05-15 10:09:40

标签: php mysql design-patterns

我在我的数据库设计中遇到问题,其中包括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

任何更好的想法?

3 个答案:

答案 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来创建数据库结构=)