我正在开发一个所谓的行为风险因素监测系统(BRFSS),这是一个处理每年调查问卷的网络查询系统.
我很难为它提出合适的数据库设计.问题在于:每个问卷包含大约80个问题,包括人口统计信息,例如年龄,教育等,以及调查问题,例如吸烟,健康等.每年,一些问题会发生变化,有些则不会.数据源是一个包含80多列的Excel文件.系统必须支持以下查询:
SELECT [question var], [demo var], count(*) FROM survey WHERE age in (...) AND educ in (...) [etc] GROUP BY
数据是只读的,即.导入后永远不会改变.所以它不必太过标准化.直观地说,类似电子表格的表格可以很好地完成.速度和空间.然而,这成为一个问题,因为问题会发生变化,然后我们无法将所有数据保留在此表中,这是因为跨年查询所必需的.
我尝试将响应规范化为三个表:问题,响应和response_values,它们可以支持问题变体.但是响应表一年超过98*14268 = 1,398,264行!这真的很大.查询很疯狂!
我该如何设计数据库?任何帮助表示赞赏!提前致谢!
PS.我使用的是Python + Django + Sqlite.
您是否检查了DatabaseAnswers以查看是否存在可用作起点的架构?