2016-06-14 59 views
0

我有三個實體:學生,教授和essay_topics。建模:三個表的關係

現狀:學生可以寫一些隨筆教授監督的essay_topic。 (粗體:實體)

但是他們只能在一次的特定教授的監督下寫一篇短文。 (不是同一位教授的兩倍) 而且他們可以不是寫作文與相同 essay_topic和他們一樣。

這是唯一的限制,但它應該是可能的:一位教授可以用同樣的論文主題監督幾個學生。不同的教授可以用同樣的論文主題來監督不同的學生。

所以我們有一篇關係文章(StudentID,EssayTopicID,ProfessorID)。 但我現在沒有看到主鍵。或者我們在這裏有什麼樣的關係?我猜想n:1:1(呃模型)。但是,只有StudentID纔是該表的主鍵 - 實際上是錯誤的,因爲學生只能寫一篇文章...

+0

我將學生表,散文表和教授表與非規範化的表加入所有三個具有聯合唯一鍵約束的學生ID和教授編號 –

回答

0

如果你寫下你的限制功能的依賴關係,它有助於瞭解情況:

(student, essay_topic) -> professor 
(student, professor) -> essay_topic 

你有兩個重疊的候選鍵 - (student, essay_topic)(student, professor) 。您可以選擇作爲物理模型中的主鍵,只要您爲另一個添加唯一約束即可。

我懷疑這是一種無法在ER中精確建模的情況(是的,與關係模型不同,ER不是一個完整的數據模型)。我將忽略基數指標,並將FD列入評論。

PS。請不要混淆實體之間的關係和表之間的關係。實體之間的關係作爲(通常是不同的)實體集之間的關聯記錄在IN表中。表之間的關係是外鍵約束,並對同一個實體集的兩列實施子集限制。

0

如果您希望您的數據庫引擎阻止爲每個學生添加多個平等主題和教授,您將需要在student_id + topic_id + professor_id上使用複合鍵/複合約束。看看這個問題: How do I specify unique constraint for multiple columns in MySQL?

+0

謝謝參考。但是我想知道的是在實體關係模型中它會是什麼樣子? – ScientiaEtVeritas

+0

你的意思是你想讓他爲你生成一個ER圖? – Drew

+0

據我所知,你至少有4張桌子:學生,主題,教授和散文。就我而言,散文將student_id,topic_id和professor_id作爲外鍵。 – Marat