CREATE VIEW Question_V AS
SELECT q.QuestionId as Id, q.Description as Question, c.Description as Choice, c.IsAnswer
FROM Question q
JOIN Choice c on c.QuestionId = q.QuestionId
type是导出数据
SELECT q.QuestionId,
(SELECT COUNT(*) FROM Choice c WHERE c.QuestionId = q.QuestionId AND c.IsAnswer = 1) as AnswerCnt
FROM Question q
Question 和 Choice 是一对多的关系。
Question (QuestionId, Description)
Choice (QuestionId FK, ChoiceNumber, Description, IsAnswer)
示例数据:
Question (‘123wer’, '今天几号')
Choice (‘123wer’, 1, '1号', false)
Choice (‘123wer’, 2, '2号', false)
Choice (‘123wer’, 3, '3号', true)
Choice (‘123wer’, 4, '4号', false)
你可以创建一个view,用来查询问题和选项的信息。
type是导出数据
如果AnswerCnt=1,为单选,AnswerCnt>1, 多选。
简单点
将选项保存为数组并且json_encode为json格式存入choice
每次查询出choice值json_decode为数组处理
复杂点可以这样两张表
第一张
tb_question
questionID type question answer
第二张
tb_choice
choiceID questionID choiceValue
由于这是一个问答的数据结构,数组不会太长,我觉得把所有的choice当一个字符串来存储会简单些。然后在程序里面再字符串分割出数组。
把数组序列化成字符串存进去,取出来的时候再反序列化。