小编Pau*_*aul的帖子

最小化/避免数据重复并在复合键和唯一索引之间进行选择

我对数据库开发完全陌生,我基本上正在尝试建立一个问题库。

问题必须根据类别、主题和主题进行分类。由于每个类可以有许多主题,并且每个主题可以在许多类中,因此我制作了一个名为 tb_SubjectClass 的连接表,其中主题和类是主键。

为了唯一标识任何章节,我需要主题和类的组合,因此我创建了 tb_Chapters,其中章节、主题和类作为主键,主题和类来自 tb_SubjectClass。然后我用 tb_Topics 重复了同样的事情,因为每个主题只能用主题、类和章节的组合来标识。

我把关系图放在下面。知道我期望在这个数据库中存储大约 50000 个问题(带有方程和图表)也可能是相关的。

数据库关系

主要问题:如果我决定坚持使用复合键/复合键,我的设计是否合适或可以进一步改进?

附带问题:在我的情况下,最好的方法是什么,考虑到以下因素:

  • 预计记录约 50000
  • 问题表 (tb_QnA) 将成为查询最多的表(用于选择和添加/删除数据)
  • 表 tb_Class、tb_Subjects 和 tb_SubjectClass 根本不会改变
  • 将数据库连接到 ac# winform 应用程序时易于编写查询(用于数据输入和生成报告)
  • 该项目将基于桌面

我主要一直都在数据库设计教程上tekstenuitleg.net和视频教程由WiseOwlTutorials。我最近也开始阅读Jan L. Harrington所著的Relational Database Design Clearly Explained一书。

database-design sql-server sql-server-2014 unique-constraint

5
推荐指数
1
解决办法
426
查看次数