我引用的是封闭的堆栈溢出帖子
帖子中的最高答案给出了用于调查数据库的表格的很好概述,并具有良好的表格关系视图。我的问题附在调查表上,尤其是存储顶级调查记录的表。对于在指定时期内进行的调查(初次调查,6个月后,12个月后等),如果调查没有不同的问题和答案(只是初次调查的重复),在顶层调查表中创建不同的调查作为不同的调查记录,或者最好在完成的调查表中添加一个字段作为辅助标识符。
例如,如果一项调查(称为“健康评估”)具有初始调查,则在6个月后进行一次调查,这将是更好的解决方案:
希望这是有道理的。我认为任何一种解决方案都可能有效;我只想要更好的解决方案。
答案 0 :(得分:0)
继续使用现有设计;假设SurveyID是唯一的主键,您已经认识到的第一个建议将导致冗余数据,除非打算随时间改变问题。第二个选项也不是很好,因为我认为它将使Survey表上的StartDate,EndDate和IsOpened字段的目的无效。
如何创建Survey_Instance表?每次发布调查时,“调查”表将保存“调查ID”和描述,新表将保存“开始”,“结束”和“ IsOpened”属性。可以通过“ SurveyInstanceID”链接响应,并且可以将问题链接到“调查”表。这具有将响应链接到特定时间范围的附加好处,因此您可以观察响应随时间的变化。