嘗試實現一個ER模型,我有實體:教師,學生,論文和關係:發佈,建議。老師和學生都可以發表論文,但只有老師可以給論文提供建議。我是否應該爲學生和老師重複發佈關係,還是讓它看起來像是一種與老師和學生之間沒有關係的三方關係?與兩個實體沒有任何關係的三個實體設計關係
回答
這聽起來像你可以模擬它想:
student(student_id, name, etc)
teacher(teacher_id, name, etc)
paper(paper_id, title, text, etc)
contributor(contributor_id, paper_id, contribution_type, contributor_type)
貢獻在哪裏類型是枚舉(發行人,顧問),同樣貢獻類型是枚舉(教師,學生)......或布爾is_publisher, is_adviser。
缺點是,這不允許外鍵從學生/老師的貢獻者,並且你沒有從顧問到教師的嚴格限制。表格顧問(teacher_id,paper_id)允許對顧問進行約束,但仍然不允許在學生ID上使用約束或外鍵。
另一個選擇可能是將它分解爲:
teacher_contribution(teacher_id, paper_id, is_adviser)
student_contribution(student_id, paper_id)
,這將允許完全數據庫限制於預期的模式,但可能會比較困難在某些情況下查詢。
任何都可以接受。它在某種程度上取決於您的特定應用程序以及您打算如何查詢數據。
我更喜歡大多數任務的第二種方法,因爲它使DRI更容易(即使在角色鑑別器列(如「is_advisor」)上執行某些邏輯)。視圖通常可以處理「我希望我使用單個鏈接表,這樣這個查詢更容易」的情況。 – user2864740
我傾向於進一步和每個人打電話,然後有一個PERSON_PAPER協會與角色枚舉.. – Randy
@Randy我傾向於有人在「其他」一側鏈接 - 例如學生和老師仍然都是人。雖然這個建議在這裏看起來不錯 - 如果一個人不再是學生呢?他們*還*撰寫了論文。 (我主要處理「快照」數據集。) – user2864740
- 1. doctrine2與三個實體的關係
- 2. 實體關係 - DB設計
- 3. 實體關係模型:三元關係
- 4. 兩個實體之間的關係
- 5. symfony2兩個實體之間的關係
- 6. Doctrine2兩個實體的多重關係
- 7. 兩個實體之間的關係
- 8. 實體關係
- 9. 實體關係
- 10. 實體關係
- 11. 實體關係
- 12. 實體關係
- 13. 實體關係
- 14. 核心數據關係 - 兩個實體到一個實體
- 15. 如何添加一個沒有相關實體但保存關係的實體?
- 16. 如何設計符合關係模型的實體關係?
- 17. 與一個實體有多個關係而沒有反向?
- 18. Core Data中沒有關係的兩個實體是不好的設計?
- 19. 實體設計中的外鍵關係
- 20. 關係兩個實體之間的一對多關係symfony
- 21. OneToOne-與實現接口的兩個實體的關係
- 22. 在Hibernate中,兩個實體如何能夠與第三個實體具有多對多的單向關係?
- 23. 保存與兩個實體之間的關係N-N關聯
- 24. ERD:關聯實體能否與弱實體有關係?
- 25. JPA與Netbeans實體關係
- 26. 使用JPA2設計實體關係
- 27. 我們如何設計與兩個實體保持關係的Dynamo db
- 28. 更新與另一個實體關係的實體春天
- 29. 找到所有實體沒有關係
- 30. JayData實體關係
如果我嘗試實現這樣的數據庫,Papers表中是否包含來自教師和學生的兩個外鍵? – Menderft
您需要更好地定義您的規則。一篇論文可以只由一位教師,還是可能由多位教師提供建議?教師是否建議學生或只有論文?教師發表的論文是否也會得到老師的建議?論文是否有多個出版商(在現實生活中,學術論文往往會有很多名字)。 – Brian
@Brian是的,我應該更好地定義我的規則。一篇論文可以由許多學生和許多教師同時出版,並且有很多顧問。 – Menderft