【发布时间】:2010-10-09 18:12:18
【问题描述】:
我正在开发一个所谓的行为风险因素监测系统 (BRFSS),这是一个处理每年都会出现的问卷的网络查询系统。
我很难为它想出一个合适的数据库设计。问题是:每份问卷包含大约 80 个问题,包括人口统计信息,例如年龄,教育等,以及调查问题,例如吸烟、健康等。每年,有些问题会发生变化,有些则不会。数据源是一个包含 80 多列的 Excel 文件。系统必须支持以下查询:
SELECT [question var], [demo var], count(*)
FROM survey
WHERE age in (...) AND educ in (...) [etc]
GROUP BY <question var>
数据是只读的,即。导入后永不改变。所以它不必被规范化太多。直观地说,类似电子表格的表格会做得很好。速度和空间。但是,这成为了一个问题,因为问题会发生变化,那么我们无法将所有数据保留在此表中,因为跨年度查询是必要的。
我尝试将回复标准化为三个表格:问题、回复和 response_values,它们可以支持问题的变化。但随后响应表跨越了 98*14268 = 1,398,264 行一年!这真的很大。查询速度很慢!
我应该如何设计数据库?任何帮助表示赞赏!提前致谢!
ps。我正在使用 Python+Django+Sqlite。
【问题讨论】:
标签: python database django sqlite