我有一些困惑/困難企圖拉攏和了解的ERD圖,下面是這樣一個問題:如何創建實體關係模型?
「招收的學生在其提供由教師講授的課程院校。當學生註冊時,他們必須註冊他們想要學習的課程。然後,學院將爲學生指定一位導師,他是一名教師。「
這是正確的圖嗎?
大學應該是學生實體的實體或屬性?
我有一些困惑/困難企圖拉攏和了解的ERD圖,下面是這樣一個問題:如何創建實體關係模型?
「招收的學生在其提供由教師講授的課程院校。當學生註冊時,他們必須註冊他們想要學習的課程。然後,學院將爲學生指定一位導師,他是一名教師。「
這是正確的圖嗎?
大學應該是學生實體的實體或屬性?
大學應該是學生實體的一個實體還是屬性?
問題是:「沒有第一個學生參加,大學能否存在?」。
是的,爲了讓學生上大學必須存在的大學;因此大學是一個獨立實體。
接下來的問題是:大學應該是學生實體中的一個屬性,還是需要一個單獨的關係(表,實體){STUDENT_ID, COLLEGE_ID}
?
這取決於你的「業務規則」(約束)。
[1]
如果規則(約束)是:
[c1]
每個學生都可以參加只有一個大學;對於每所大學而言,有可能有不止一名學生參加該大學。
然後將COLLEGE_ID
添加到學生實體。
[2]
如果規則(約束)是:
[c2]
每個學生都可以參加一個以上的大學;對於每所大學而言,有可能有不止一名學生參加該大學。
比你需要添加一個依賴實體{STUDENT_ID, COLLEGE_ID}
排序出老師,當然,學生的詳細信息,請參閱this SO example。
你原來的模式有一個像一些額外的弱點:
大學能提供的課程沒有一個學生報名參加課程第一?
老師可以在一個以上的大學教書嗎?
老師可以教一個以上的課程嗎?
一個以上的老師可以教一門課嗎?
如何確定學生是否參加課程,教師是否指導學生;那個老師還教這個課程?
在您完成此工作時,您將添加更多實體。
你的圖不是一個合適的ER圖。儘管忽略屬性以專注於實體和關係會很有用,但您至少應該使用一個形狀來表示關係集,以便符號不會排除三元關係和更高關係。在陳的符號中,關係由菱形表示。因爲它與多個其他實體集(Student
,Course
,可能Teacher
爲好)相關聯作爲一個獨立的實體集
College
最好處理,。當某些東西是關係和屬性的主題時,它應該是一個實體集合。在ER中,屬性是從實體集合(或關係集合)到值集合的映射,即它們應該用於標籤和度量。
您選擇的關係看起來很合理,但我建議您考慮直接將Teacher
與College
關聯起來。根據你如何處理Course
(大學可以提供相同的課程,或者每個人都提供自己的實例嗎?)和Student
(學生可以在多個大學註冊,可以沒有任何學生註冊的課程?),這可能是不可能的得出Teacher
和College
之間的關係。
在ER中,屬性不僅僅是列,而是從實體或關係集到值集的映射。如果'College'是一個獨立的實體集,'Student'表中的'COLLEGE_ID'列不會被視爲屬性,而是由'STUDENT_ID,COLLEGE_ID'表示的關係的一部分。另外,_dependent entity_不是ER模型中的一個術語 - 我們稱之爲關係。表格代表實體和FK約束表示關係的想法來自網絡數據模型,而不是ER模型。 – reaanb
@reaanb,謝謝澄清。 –
@reaanb,densityx,https://en.wikipedia.org/wiki/IDEF1X –