【发布时间】:2018-12-12 19:30:00
【问题描述】:
在设计问卷和多项选择答案的数据库架构时,我们需要一些帮助。
第一个选项是设计一个问题表和一个答案表,如下所示
* Question Table
- question_id auto integer
- question varchar
* Answer Table
- user_id integer
- question_id integer
- answer integer
但是,这种设计的问题在于,当用户提交问卷答案时,需要插入多行,因此写入和检索都会变慢。此外,表会变得非常大。但是,优点是它具有可扩展性,并且可以轻松添加新问题。
另一种方法是将所有答案放在一行但在不同的列中,像这样
* Answer Table
- user_id integer
- answer_1 integer
- answer_2 integer
...
- answer_n integer
优点是,一次只能写入或检索一行,因此它会比第一种方法快得多。但是,架构将是僵化的,如果添加任何新问题,则必须更改数据库架构以容纳新列。
我们有超过 300 万用户,每个用户有多个问卷。因此,速度绝对是一个标准。根据这个标准,你更喜欢哪一个?还有其他选择吗?
谢谢
【问题讨论】:
-
您添加新问题的频率如何?另外,您的 Answer 表中是否包含问卷调查 ID 字段?
标签: mysql database-design schema database-schema