如何设计数据表?

发布于 2022-09-02 01:51:47 字数 274 浏览 18 评论 0

需要组织成如下的JSON,怎么设计数据表来存储数据?其中该数据由人工录入

{
 id:'123wer',//唯一
 type:'radio',//单选
 question:'今天几号',//问题描述
 choice:['1','2','3','4'],//选项,选项个数不定
 answer:0//正确答案
}

其中想不通的就是choice如何存储,他是一个数组,想过想把数组转换成字符串,选项之间以特殊的字符隔断,但是每个选项里如果有特殊字符怎么办,求更好的设计方案

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不打扰别人 2022-09-09 01:51:47

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, 多选。

谁许谁一生繁华 2022-09-09 01:51:47

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

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

懷念過去 2022-09-09 01:51:47

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

空名 2022-09-09 01:51:47

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文