
1 miemiekurisu 2015 年 9 月 17 日 via Android 不违反三范式的前提下,感觉题目横表,选项和用户答案纵表。 当然也可以 mongodb 一个 document 搞定。 |
2 ljbha007 2015 年 9 月 17 日 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 2015 年 9 月 17 日 mongo 的应用场景不就在这吗 |
4 ldehai OP |
10 ljbha007 2015 年 9 月 17 日 @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 2015 年 9 月 17 日 |
13 keithsun80 2015 年 9 月 17 日 mongoDB 尽可能冗余 |
14 ljbha007 2015 年 9 月 17 日 @keithsun80 他这个情况是没有必要 有些情况应该做关联 比如我发那个链接的第一种 |
15 keithsun80 2015 年 9 月 17 日 @ljbha007 学习了,谢谢。 |
16 orvice 2015 年 9 月 17 日 mongo 吧 如果需要统计新增记录的时候顺便统计 |
17 oojiayu 2015 年 9 月 17 日 去看看问卷星不就 OK 了吗? 问卷星已经做得很完善了~ 基本很少有同行可以超越~ |
18 EyreFree 2015 年 9 月 18 日 |