规范化数据库(第三范式)中是否有循环



我在几个实体之间有一个相当复杂的关系:

TeacherTable
      |
TeacherClassLinkTable
      |
ClassTable
      |
StudentClassLinkTable
      |
StudentTable
      |
StudentTestResults
      |
TestTable
      |
TestModuleTable

这适用于我需要用它做的大多数事情,但是当我尝试查找类占用的模块时,它会失败。我能够找出属于班级一部分的学生学习了哪些模块,但在极少数情况下,学生可以属于多个班级,学习不同的模块。因此,我不一定会得到准确的结果来查找类采用的模块。因此,我想插入一个新表,它将是ClassModuleLinkTable。这将允许我轻松建立该链接,但是它会在我的数据库结构中形成一个循环,我不确定我的数据库是否会因此保持第三范式。

TeacherTable
      |
TeacherClassLinkTable
      |
ClassTable----------------------------
      |                              |
StudentClassLinkTable                |
      |                              |
StudentTable                         |
      |                              |
StudentTestResults                   |
      |                              |
TestTable                            |
      |                              |
TestModuleTable--------------ClassModuleLinkTable
我不

认为这是一个问题,我实际上也不认为这就是我所说的循环或循环引用。

循环引用是指例如,表 A 对表 B 具有不可为空的 FK,而表 A 具有不可为空的 FK(或者圆可以是 A 到 B 到 C 到 D 到 A)。如果两个表都为空,则实际上无法向其中任何一个表添加行,因为两个表都需要引用另一个表中的行。我实际上不确定这种情况是否针对 3NF,但这显然是一个问题!

您的情况没有循环参考,因此就我而言,这很好。

最新更新