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 日
|