ER图中的一对多关系

时间:2013-04-09 08:15:25

标签: database relational-database entity-relationship

我想在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?如果我们从课程的角度思考,那么它就是多对一的,但如果我们从教师的角度思考,那么它就是一对一的。我们如何决定这个? 谢谢。

4 个答案:

答案 0 :(得分:32)

在ER图中,当表示关系时,不使用箭头。一些教师在想要确定基数时使用此箭头,但这只是为了获得基数(1:1,1:M和N:M)

我已经用Chen表示法附加了ER图,并且还使用了Crow Notation,你可以使用其中任何一个。

ER Digram

确定关系的基数是一个实际情况,没有硬性和通过规则来获得它。你需要做的是从关系的一方开始,拿一个元组(实例),看看有多少来自另一个实体的元组参与这个关系。然后反之亦然。然后你知道从每个实体到关系的元组的参与数量。当你决定基数(即教师组,课程组和教学组关系类型)时,考虑数学中的集合论和函数,那么这很容易,但如果你不是数学背景,只需考虑实际情况。 / p>

例如

a)对于1名教师,他或她可以教授许多(M)课程

b)对于1个课程,只有1个教练

所以在教师方面,a)和b)总是1,但是在课程中a)中有M和1,b)教师有:课程基数是1:M

答案 1 :(得分:1)

我不认为其他答案是完全正确的。

我会说一个应该使用箭头,并且应该使用一个符号,为关系的每个方向提供一个有意义的名称。在这种情况下,它将在一个方向上“教导”,而在另一个方向上“教导”。使用名称旁边的箭头或将名称放在它所引用的实体附近。您可以使用一行(带两个箭头)或两行(每行一个箭头)。

我还建议基数只是一种约束,符号应该反映出来。例如,关系的两个名称可以是“教导(许多)”和“由(恰好一个)教授”。关键是你可能有“教(一两个)”或“教授(正好两个)”等等。

最好明确清楚地说明你的约束究竟是什么。

答案 2 :(得分:0)

两者都具有完全相反的基数

简洁线条意味着很多。

箭头意味着一个。

如果我们两个都考虑相同的基数。

然后,应该通过遵循第二个约定来表示多个到多个(请假设关系集的菱形和实体集的矩形)

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

实际上没有任何意义。

如果我们两者都考虑相反的基数。

然后,应该通过遵循第二个约定来表示多个到多个(请假设关系集的菱形和实体集的矩形)

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

没有明确的箭头总是被认为是多对多。所以,这是正确的(只有当我们考虑相反时)

答案 3 :(得分:0)

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