2013-07-08 103 views
0

我正在研究學生,TA,老師和班級關係。 每個班級與一位教授和一位助教關聯,但助教也可以是一位學生。所以,我想出了這樣的想法(下圖),但我不確定創建這種循環關係是正確的嗎?學生管理中的循環關係

預先感謝您。

Database 1

+0

這將取決於你想如何建模。對? –

+0

但是就你的班級實體而言,在學生的上下文中,TA不是該班級的一部分,對嗎?爲什麼不創建一個單獨的TA實體?你迫使學生也是TA(IsTA)的旗幟。如果將來您需要將其他屬性添加到TA(辦公室電話號碼,電子郵件)或其他屬性,這與學生無關?這些屬性去哪裏?或者創建一個可由TA和教授使用的Faculty實體。只是一個想法。 – OldProgrammer

+0

您的意思是將TA與教授合併爲一個Faculty實體嗎?如果是的話,我們怎麼知道教授是誰,誰是TA?此外,我們必須創建兩條從教師到班級的線路,因爲我們有一位助理教授和一位教授被分配到一個班級。 –

回答

0

當且僅當一個永遠不能既是同一類學生和TA,它不應該全面構建循環關係。您可以通過在允許在數據庫中設置值之前檢查該情況來防止發生這種情況。

即使發生了,我也不相信會有問題。循環關係的問題是一個值永遠不會被定義(也就是StudentID被引用爲每個表的外鍵,但從未定義過)。數據庫佈局中不是這種情況。

+0

如果一個人既可以是同一個班級的學生,也可以是TA,這是不現實的。但是,謝謝你回答我並指出我必須阻止的其他情況。 –

0

您的佈局不是循環的;您有:

Class-list -> Student

Class-list -> Class -> Student

您的佈局,如果你提供Student -> Class-list

我沒有看到你有問題只會變得圓。

0

它看起來對我很好,但你可能想要考慮是否所有的助教將成爲學生。

表格之間的界限是關係。所以在這種情況下你並不真正創建循環引用。

在一條路徑中,你是說一個class_list有一個學生,一個班有多個class_lists。在另一條路上,你說的是一個班有一個TA,他必須是學生(可能是「isTA」標誌)

這裏沒有任何東西阻止學生參加班級和TA,但是這個也不會是世界的盡頭。很可能會出現這種情況。

+0

有沒有更好的方法來模擬學生,助教和老師? –

+0

問題是,你認爲哪個更好?你可以創建一個「人」表而不是學生/助教/助教表,以防教員也是學生。它會更好嗎?我不知道。 –