0
A
回答
0
最簡單的(有點大膽)的方式來建模,這是
- 學生表
- 教員表
現在給學生列FACULTY1和FACULTY2。兩者都是FACULTY的外鍵。用NOT_NULL約束FACULTY1。這強制學生至少有一個FACULTY。 FACULTY2可以爲null,但它仍然是一個外鍵。
FACULTY以某種方式不知道關於學生的任何事情。當沒有學生參考教師時,它沒有學生,任何數量的學生都可以參考教師。
這種模式有很多缺點(我說的是黑體):
一個學生僅一個教員被監督必須具有此集FACULTY1(不FACULTY2)。同樣,當受2個FACULTIES監督的學生刪除其中的一個時,您只能刪除FACULTY2,或者您必須先交換字段。你可以通過一個更聰明的約束來避開這個問題(FACULTY1不爲空或者FFACULTY2不爲空)
如果你想改變設計,那麼學生可以有3個FACULTIES,你需要添加專欄給STUDENT。然而,這並不像聽起來那麼糟糕。
在pro方面,除了引用完整性和NOT NULL之外沒有其他參與設計。
相關問題
- 1. jQuery:在這種情況下,.on()的正確用法是什麼?
- 2. 在這種情況下正確的mysql表設計/關係
- 3. 什麼是在這種情況下
- 4. 什麼是在這種情況下
- 5. 這種情況下最好的情況是什麼?
- 6. 在這種情況下正則表達式的正確使用是什麼?
- 7. 爲什麼變量在這種情況下是不確定的?
- 8. 這種情況的正確格式是什麼?
- 9. 爲什麼這種情況是正確的?
- 10. 在這種情況下使用什麼設計模式?
- 11. 這種情況的設計解決方案是什麼?
- 12. 我們是否需要Hibernate映射在這種情況下?
- 13. 在這種情況下,真正的負面會是什麼
- 14. 這種情況下最好的項目設置是什麼?
- 15. 在這種情況下應該是什麼樣的正確的JavaScript語法?
- 16. 什麼是wrapper_descriptor,在這種情況下爲什麼是Foo .__ init __()?
- 17. 這種情況下正確的標記是什麼(頁面標題和「rootline」)?
- 18. 在這種情況下,AVG()函數的正確用法是什麼?
- 19. 在這種情況下使用DTO的正確方法是什麼?
- 20. 在這種情況下使用Ember.js控制器的正確方法是什麼?
- 21. 在這種情況下,Sass/SCSS mixin參數的正確使用是什麼?
- 22. 這種情況下正確的WCF net.tcp綁定安全性是什麼?
- 23. 在這種情況下,正確的Rails模型關聯會是什麼?
- 24. 在這種情況下執行git-rebase的正確命令是什麼?
- 25. 爲什麼在這種情況下沒有正確設置聽衆
- 26. 什麼是在這種情況下使用的最佳軟件設計
- 27. 什麼可能是這種情況下的良好設計模式?
- 28. 面向對象:在這種情況下,什麼應該是正確的類設計?
- 29. 這是否正確使用$。在這種情況下推出?
- 30. 爲什麼在這三種情況下
到目前爲止您已嘗試過什麼,爲什麼您認爲它不正確? – EWit
現在我的設計看起來像這樣:一個監督[supervise_id,faculty_id,student_id]; supervise_id是pk,它不是null。有一個檢查條件像這樣SELECT COUNT(*)FROM監督GROUP BY student_id HAVING count(*)<2 ...至今我還沒有在DB上創建任何內容。在執行它們之前需要確保命令是正確的。但我覺得這種創建監督表的設計不符合給定的要求。我錯了@EWit先生嗎? –