2011-06-15 69 views
0

表:
學生
教授
項(有數據庫中的條目沒有物理表intry然而,這個表是在前端,所以它可能是由多個輔助表,如果由。我們需要他們只需要創建有效的ERD)問題上的數據庫建模

Preambula: 一個學生可以有一個關聯到很多教授 一位教授可以有一個關聯到很多學生 一個條目可以有0,1或更多的學生或教授在裏面。需要 教授與一個或更多的學生有任何教授 協會它應該更喜歡這個(前端條目表) 學生不需要相關:

enter image description here

任何教授(例如Wandy與Alex關聯) 學生(但可能)不需要在此表中有相關​​的教授 一行(例如Linda(Student),凱利(教授),維克多(教授)) 不能以任何方式相互關聯。但是,如果琳達與大衛聯繫在一起,那絕對沒問題。

問題是我不太明白一列如何可以有不同的表的ID(這些是多個!)並不太明白如何構建有效的erd。 我會回答您需要的任何其他問題。非常感謝!

回答

1

如果你只是想要一個學生和教授之間的關聯 - 只需在ERD中建立一個多對多的關係。在邏輯(關係)模式中,它將創建一個帶外鍵的中間表給Student和Professor表。 但是從你的例子看來,你需要爲你的「PeopleEntries」設計數據庫,這不是直截了當的。ERD似乎有以下實體:

  • 學生(ID,姓名)
  • 教授(ID, 名)
  • PeopleEntries(ID,LoveCats, LoveDogs,LoveAnts)

人際關係(考慮到人們不能多次出現在參賽作品中):

  • 學生個許多 - 1個 PeopleEntries
  • 教授許多 - 1個 PeopleEntries
  • 學生很多 - 很多教授

關係模式會(根據ERD關係外鍵)包含表:

  • 學生(身份證,姓名,人民郵政編碼FK
  • 教授(ID,姓名,PeopleEntryID FK
  • PeopleEntries(ID,LoveCats,LoveDogs, LoveAnts)
  • StudentProfessor(StudentID FK, ProfessorID FK

我不知道如何在概念層面(ER圖)實施約束,不允許來自同一條目的人之間的關聯。在物理層面上,您可以在觸發器或更新過程中實施邏輯來檢查。

0

按我的理解快,

與下面的列 PERSONNAME 指定 創建一個表.....

再創建一個表

PERSONNAME LinksTo

在第二個表中每個人的條目將有多個記錄基於關係

0

你想結合表:

ID StudentID ProfessorID 
0 23   34 
1 22   34 
2 12   33 
3 12   34 

在上表中,一個教授有3個學生,一個學生都有兩位教授。

StudentID和ProfessorID應該一起成爲唯一索引以避免重複關係。

+0

學生不需要教授。在這種情況下,我們需要教授。所以我們需要的是一個或另一個,但「其他」(這是教授)應該與學生有聯繫 – user194076 2011-06-15 02:45:53