2014-02-28 61 views
1

我有幾個實體之間的相當複雜的關係:歸一化數據庫(第3範式)是否有循環?

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

這適用於,我需要用它做最多的事,但是當我試圖找到哪些模塊採取一類失敗。我能夠找出哪些模塊已被學生作爲班級的一部分,但學生可以屬於多個班級,在極少數情況下可以使用不同的模塊。所以我不一定會得到一個準確的結果來找出一個班級採取什麼模塊。因此,我想插入一個新的表,它將是ClassModuleLinkTable。這將允許我輕鬆地創建該鏈接,但是它會在我的數據庫結構中形成一個循環,而且我不確定我的數據庫是否會保持第三範式。

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

回答

0

我不認爲這是一個問題,我真的不認爲這就是我所說的循環或循環引用。

圓形參考是例如,表A對錶B有一個不可空的FK,對錶A有一個不可空的FK(或者該圓可以是A到B到C到D到A)。如果兩個表都是空的,你實際上不能添加一行到其中任何一行,因爲兩者都需要引用另一行中的行。我不確定這種情況是否與3NF相反,但這顯然是一個問題!

您的情況沒有循環引用,所以就我而言它很好。

+0

我需要確定它是正常化的。 – rowanphilip

+0

你在做什麼不會破壞3NF,並且不會導致問題。 –