Database design 调查数据库设计。桥牌桌太多了?

Database design 调查数据库设计。桥牌桌太多了?,database-design,ms-access-2010,Database Design,Ms Access 2010,第一件事: 这是一个数据库,用于存储调查及其响应,以便使用报告软件对其进行分析 它在MS Access 2010中建模,但在设计完成后将迁移到更健壮的平台(如MS SQL Server) 这只是数据库的一部分,我想帮助的部分 问题: 我担心我拥有的桥接表的数量(调查部分,部分问题,等等)以及它可能会如何过度复杂化。你能看到我有什么方法可以减少复杂性,同时保持速度和效率吗 我预计答案表可能会有数千行(如果有1000名受访者参与了包含60个问题的调查)。我想知道这是否是一个问题,是否有其他方法

第一件事:

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

  • 我担心我拥有的桥接表的数量(调查部分部分问题,等等)以及它可能会如何过度复杂化。你能看到我有什么方法可以减少复杂性,同时保持速度和效率吗
  • 我预计答案表可能会有数千行(如果有1000名受访者参与了包含60个问题的调查)。我想知道这是否是一个问题,是否有其他方法来存储答案
  • 一般来说,有人认为这种设计存在潜在问题吗?(这是我创建过的最复杂的数据库)

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

您需要在节、问题和选项组中添加一列以存储位置/顺序信息,因为您希望它们按预先选择的顺序显示


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

60000行不是很多,请放心。用户可以进行多个调查吗?你的答案是否也需要输入调查id和答案id?每次调查60000个,可能有数百个调查。此外,用户id是一个任意数字,以保持用户的匿名性。因此,简单地说,没有一个用户不能对你的建议进行多次调查。另外,使用位置信息列也是个好主意。完全忽略了这一点。