调查数据库设计。桥牌表太多了?

时间:2014-02-17 15:44:09

标签: database-design ms-access-2010

首先要做的事情:

  • 这是一个用于存储调查及其响应的数据库,以便可以使用报告软件对其进行分析
  • 它在MS Access 2010中建模,但一旦设计完成,将迁移到更强大的平台(如MS SQL Server)
  • 这只是数据库的一部分,我想要帮助的部分

问题:

  • 我很担心我的桥牌表数量(调查部分部分问题等)以及它可能过于复杂。您能否看到我可以减少并发症但保持速度和效率的方法?
  • 我预见答案表可能有数千行(如果有一千名受访者参加了一项有60个问题的调查)。我想知道这是否会有问题,还有其他方法来存储答案吗?
  • 一般来说,有没有人看到这个设计的潜在问题? (这是我创建的最复杂的数据库)

ERD

1 个答案:

答案 0 :(得分:1)

您可以通过设计系统来清理事物,使得一个问题只能存在于一个部分上,一个部分只能存在于一个调查中。这同样适用于QuestionOptions,尽管这个领域对我来说不太清楚。这将消除对那些交叉表的需要。此更改可能要求您在客户端应用程序中将代码添加到复制移动一个部分或问题(包括所有选项),从一个调查/部分到另一个调查/部分。

您需要在Section,Questions和OptionGroups中添加一列来存储位置/序数信息,因为您希望它们以预先选择的顺序显示。

此外,您还有一些几乎完全由外键组成的小表。在这些情况下,使用自动编号ID列作为代理键并不总是一个好主意,而是定义一个主键,它是外键的复合键。如果您选择保留所有相交表,则尤其如此。如果不这样做,则至少还需要对这些列具有唯一约束。