在我的大学里,我被赋予了创建一个简单的大学数据库的任务,其中有一些表格,如学生,部门等。有一个有趣的时刻,我在学生和班级之间建立关系,一个学生可以选择多个班级,我被教导使用两个FK创建第三个表,它应该看起来像这个Adam(id - 1)需要数学课程(id - 5)而在第三个表中,记录将是(1,5),这里是一个问题为什么我们应该更喜欢第三个表而不是数组,对我来说,将学生的类作为学生表中的附加列看起来更容易。这是一个例子,想象学生表(id, name, age, arrayOfClassesID) (1, Adam, 20, [1,8,9,6,7])
。
附:这不是我的功课,我已经做过了,但这对我来说真的很有趣
从理论的角度来看,问题在于这种设计违反了第一种正常形式。这有实际的影响:
@>
运算符以有限的方式工作。使用LIKE
或>
进行搜索无法进行优化。使用映射表只是在关系数据库中执行此操作的自然方式。