Pau*_*aul 5 database-design sql-server sql-server-2014 unique-constraint
我对数据库开发完全陌生,我基本上正在尝试建立一个问题库。
问题必须根据类别、主题和主题进行分类。由于每个类可以有许多主题,并且每个主题可以在许多类中,因此我制作了一个名为 tb_SubjectClass 的连接表,其中主题和类是主键。
为了唯一标识任何章节,我需要主题和类的组合,因此我创建了 tb_Chapters,其中章节、主题和类作为主键,主题和类来自 tb_SubjectClass。然后我用 tb_Topics 重复了同样的事情,因为每个主题只能用主题、类和章节的组合来标识。
我把关系图放在下面。知道我期望在这个数据库中存储大约 50000 个问题(带有方程和图表)也可能是相关的。
主要问题:如果我决定坚持使用复合键/复合键,我的设计是否合适或可以进一步改进?
附带问题:在我的情况下,最好的方法是什么,考虑到以下因素:
我主要一直都在数据库设计教程上tekstenuitleg.net和视频教程由WiseOwlTutorials。我最近也开始阅读Jan L. Harrington所著的Relational Database Design Clearly Explained一书。
创建外键是否会导致数据重复/重复,或者只是对父表中存储的数据的引用/指针?
外键根据另一个表列中是否存在相同值来限制一个表列中的可能值。值存储在两个表中,因此它们是重复的。为了避免(实际上是减少)重复,应该使用标准化。这意味着您拥有存储所有不同值的引用表,而所有其他表仅包含该值的 ID。
是否应该尽可能避免使用复合键?
不。更重要的是,复合键是加快涉及多列的复杂条件查询的唯一方法。可以通过性能代价来避免复合键。
| 归档时间: |
|
| 查看次数: |
426 次 |
| 最近记录: |