2014-05-04 52 views
0

我需要模擬此問題:這種情況下ER映射的正確設計是什麼?

一個教師可能會監督幾個學生或不。一名學生在 至少有一名,最多兩名主管。

我正在尋找關於如何做到這一點的實際關係表設計。

+0

到目前爲止您已嘗試過什麼,爲什麼您認爲它不正確? – EWit

+0

現在我的設計看起來像這樣:一個監督[supervise_id,faculty_id,student_id]; supervise_id是pk,它不是null。有一個檢查條件像這樣SELECT COUNT(*)FROM監督GROUP BY student_id HAVING count(*)<2 ...至今我還沒有在DB上創建任何內容。在執行它們之前需要確保命令是正確的。但我覺得這種創建監督表的設計不符合給定的要求。我錯了@EWit先生嗎? –

回答

0

最簡單的(有點大膽)的方式來建模,這是

  • 學生表
  • 教員表

現在給學生列FACULTY1和FACULTY2。兩者都是FACULTY的外鍵。用NOT_NULL約束FACULTY1。這強制學生至少有一個FACULTY。 FACULTY2可以爲null,但它仍然是一個外鍵。

FACULTY以某種方式不知道關於學生的任何事情。當沒有學生參考教師時,它沒有學生,任何數量的學生都可以參考教師。

這種模式有很多缺點(我說的是黑體):

  • 一個學生僅一個教員被監督必須具有此集FACULTY1(不FACULTY2)。同樣,當受2個FACULTIES監督的學生刪除其中的一個時,您只能刪除FACULTY2,或者您必須先交換字段。你可以通過一個更聰明的約束來避開這個問題(FACULTY1不爲空或者FFACULTY2不爲空)

  • 如果你想改變設計,那麼學生可以有3個FACULTIES,你需要添加專欄給STUDENT。然而,這並不像聽起來那麼糟糕。

在pro方面,除了引用完整性和NOT NULL之外沒有其他參與設計。

相關問題