mysql - 如何设计数据表?
阿神
阿神 2017-04-17 13:48:07
[MySQL讨论组]
阿神
阿神

闭关修行中......

全部回复(4)
PHP中文网

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,用来查询问题和选项的信息。

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

如果AnswerCnt=1,为单选,AnswerCnt>1, 多选。

PHP中文网

简单点
将选项保存为数组并且json_encode为json格式存入choice
每次查询出choice值json_decode为数组处理

复杂点可以这样两张表
第一张
tb_question
questionID type question answer
第二张
tb_choice
choiceID questionID choiceValue

PHP中文网

由于这是一个问答的数据结构,数组不会太长,我觉得把所有的choice当一个字符串来存储会简单些。然后在程序里面再字符串分割出数组。

高洛峰

把数组序列化成字符串存进去,取出来的时候再反序列化。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号