2013-04-09 114 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

考虑一个'员工'实体集和'部门'实体集,将关系设置为'管理'。 员工-------------管理--------------------部门 (实体集)(关系集)(实体集) 一对多关系意味着一个员工集合中的一个实体可以与部门实体集合中的多个实体相关联,但是一个部门集合中的实体最多可以与员工实体集合中的一个实体相关联。 这意味着如果员工和部门实体集之间存在一对多关系,那么每个员工可以管理多个部门,同时每个部门至多由一个雇主管理。