我在几个实体之间有一个相当复杂的关系:
TeacherTable
|
TeacherClassLinkTable
|
ClassTable
|
StudentClassLinkTable
|
StudentTable
|
StudentTestResults
|
TestTable
|
TestModuleTable
这适用于我需要用它做的大多数事情,但是当我试图找到类所采用的模块时,它失败了。我能够找出学生在课堂上学习的模块,但学生可以在极少数情况下参加不同课程的多个课程。所以我不一定能得到一个准确的结果来找到一个类所采用的模块。因此,我想插入一个新的表,它将是ClassModuleLinkTable。这将允许我轻松地建立该链接,但它会在我的数据库结构中形成一个循环,我不确定我的数据库是否因此保持在第3范式。
TeacherTable
|
TeacherClassLinkTable
|
ClassTable----------------------------
| |
StudentClassLinkTable |
| |
StudentTable |
| |
StudentTestResults |
| |
TestTable |
| |
TestModuleTable--------------ClassModuleLinkTable
答案 0 :(得分:0)
我不认为这是一个问题,我实际上并不认为这就是我所谓的循环或循环引用。
循环参考是例如表A具有不可为空的FK到表B,其具有与表A不可为空的FK(或者该圆可以是A到B到C到D到A)。如果两个表都是空的,则实际上无法向其中任何一个表添加行,因为两个表都需要引用另一个表中的行。我不确定这种情况是否违反3NF,但这显然是一个问题!
你的情况没有循环引用,所以就我而言,它很好。