因为每道题答案选项个数不一致,有的还是多选。这种是用关系数据库建多个表好,还是用 mongodb 建一个表搞定?一道题一条记录。
1
miemiekurisu Sep 17, 2015 via Android 不违反三范式的前提下,感觉题目横表,选项和用户答案纵表。
当然也可以 mongodb 一个 document 搞定。 |
2
ljbha007 Sep 17, 2015 forms
==== id int (pk ) userId int (fk ) title varchar description varchar questions ===== id int (pk ) form_id int (fk ) question varchar answer_type enum (multi_choice, single_choice, text ) choices ===== id int (pk ) question_id int (fk ) description varchar text_answers ====== id int (pk ) session_id int question_id int (fk ) content varchar choice_answers ======= id int (pk ) session_id int question_id int (fk ) choice_id int 大概这个样子 根据问题表的 answer_type 判断时多选、单选还是 文字回答 1. 单选、多选都去 choices 表查选项 只是前端控件不一样 用户填完就插入到 choice_answers 2. 文字回答就直接插入到 text_answers 里 大概就是这样 |
3
Mirana Sep 17, 2015 mongo 的应用场景不就在这吗
|
4
ldehai OP |
10
ljbha007 Sep 17, 2015
@ldehai
下面两种都是一对多关系 但是会根据情况直接 embed 进去还是用集合间关联 http://docs.mongodb.org/master/tutorial/model-referenced-one-to-many-relationships-between-documents/ http://docs.mongodb.org/master/tutorial/model-embedded-one-to-many-relationships-between-documents/ 主要是下面两个判断准则 1. 如果把“一”的 document 嵌入到多个“多”的 document 中时发生的冗余是否可以接受 2. “多”的 document 是否需要 再整个集合中而非单个 document 中进行条件查询、排序等操作 |
12
keithsun80 Sep 17, 2015
|
13
keithsun80 Sep 17, 2015
mongoDB 尽可能冗余
|
14
ljbha007 Sep 17, 2015
@keithsun80 他这个情况是没有必要 有些情况应该做关联 比如我发那个链接的第一种
|
15
keithsun80 Sep 17, 2015
@ljbha007 学习了,谢谢。
|
16
orvice Sep 17, 2015
mongo 吧
如果需要统计新增记录的时候顺便统计 |
17
oojiayu Sep 17, 2015
去看看问卷星不就 OK 了吗?
问卷星已经做得很完善了~ 基本很少有同行可以超越~ |
18
EyreFree Sep 18, 2015
|