2013-04-09 96 views
14

我試圖表現出ER圖如下:一到ER圖許多關係

There are instructors and courses, a course is taught by only one instructor 
whereas an instructor can give many courses. 

enter image description here

enter image description here

我的問題是,是否有任何兩者之間的區別換句話說,我們把哪一條線變成一個箭,或者唯一重要的只是箭的方向?

另外,如果我們考慮映射基數,是1到1還是很多?如果我們從課程的角度思考,那麼它是多對一的,但如果我們從教師的角度來看,那麼它就是一對多。我們如何確定這一點? 謝謝。

回答

30

在ER圖中,當表示關係時,不使用箭頭。一些教師在想要確定基數時使用這個箭頭,但這只是爲了獲得基數(1:1,1:M和N:M)

我已經在陳符號中附加了ER圖,使用Crow Notation你可以使用其中的任何一種。

ER Digram

決定了關係的基數是實際情況下沒有硬性並通過規則來獲得它。你需要做的是從關係的一邊開始,取一個元組(實例)並查看另一個實體中有多少個元組參與關係。然後做反之亦然。然後你知道每個實體對關係的元組參與數)。當你決定基數時(例如講師組,集合課程和一組教學關係類型),考慮數學中的集合論和函數,那麼這很容易,但如果你不是來自數學背景,只是想到實際情況。

對於實例

a)對於1名教練,他或她可以教很多(M)課程

B)爲1個療程,只有1指導員

所以在導師身邊還有在a)和b)中總是1,但是在課程中有a和b)和b)教練:課程基數爲1:M

+0

但是,如果我有兩個實體之間鑽石的屬性它是正確的? – hyperfkcb 2016-10-05 06:18:07

+0

@丹尼斯坦是的,這確實是可能的。多對多的關係可以用兩個一對多的關係來標準化,即一個聯結表。這將由一個抽象模型表示,它也可以包含屬性(即時間戳)。例如,SO中的問題和標籤是多對多的關係。問題的標籤可以用'question_tags'關係表示。這個關係可能有一個'inserted_at'字段,表示標籤分配的時間戳。 – Leviathlon 2017-01-12 01:29:05

0

我不認爲其他答案是完全正確的。

我要說的是一個應該用箭頭和一個應該使用的符號,給出了一個有意義的名稱,關係的每個方向。在這種情況下,它將在一個方向上「教」,而在另一個方向上「教」。可以使用名稱旁邊的箭頭,也可以將名稱放在它引用的實體附近。您可以使用一行(兩個箭頭)或兩行(每個箭頭一個)。

我還建議基數只是一種約束,符號應該反映這一點。例如,關係的兩個名稱可以是「教(許多)」和「由(正好一個)教」。關鍵是你可能有「教(一個或兩個)」或「由(正好兩個)教導」等等。

最好是明確清楚你的約束究竟是什麼。

0

兩者都有完全相反的基數

簡單幹淨的線條意味着很多。

箭頭表示一個。

如果我們考慮具有相同的基數。

然後,多對多應該由下面的第二約定來表示(請承擔關係來設置和矩形對實體集合金剛石)

INSTRUCTOR <---- TEACHES -----> COURSE 

這實際上是沒有意義的。

如果我們考慮具有相反的基數。

然後,多對多應按照第二公約來表示(請承擔的關係,並設定爲矩形實體集菱形)

INSTRUCTOR ----- TEACHES ------ COURSE 

沒有明確的方向始終被認爲是多對多。所以,這是正確的(只有當我們考慮兩者相反)

+0

任何來源支持你的答案? – momo 2018-01-25 09:54:54

0

考慮一個'員工'實體集和'部門'實體集,將關係設置爲'管理'。 員工-------------管理--------------------部門 (實體集)(關係集)(實體集) 一對多關係意味着一個員工集合中的一個實體可以與部門實體集合中的多個實體相關聯,但是一個部門集合中的實體最多可以與員工實體集合中的一個實體相關聯。 這意味着如果員工和部門實體集之間存在一對多關係,那麼每個員工可以管理多個部門,同時每個部門至多由一個僱主管理。