24

我试图在 ER 图中显示以下内容:

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

在此处输入图像描述

在此处输入图像描述

我的问题是,两个图表之间有什么区别,换句话说,我们将哪条线变成箭头是否重要,或者仅重要的是箭头的方向?

另外,如果我们考虑映射基数;是1对多还是多对1?如果我们从课程的角度考虑,那就是多对一,但如果我们从教师的角度考虑,那就是一对多。我们如何决定这个?谢谢你。

4

4 回答 4

44

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

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

ER图

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

例如

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

b) 1 门课程只有 1 位讲师

所以在讲师方面,a) 和 b) 中总是有 1,但在课程中,a) 和 b) 中有 M 和 1,对于讲师来说:课程基数是 1:M

于 2013-04-09T12:59:21.630 回答
1

我不认为另一个答案是完全正确的。

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

我还建议基数只是一种约束,符号应该反映这一点。例如,关系的两个名称可以是“teaches (many)”和“isteacher by (exactly one)”。关键是你可能有“教(一个或两个)”或“由(正好两个)教”等等。

最好明确并清楚您的约束到底是什么。

于 2015-08-07T15:19:09.837 回答
0

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

简单干净的线条意味着很多。

箭头表示一。

如果我们考虑两者具有相同的基数。

那么,多对多应该通过遵循第二个约定来表示(请假设关系集为菱形,实体集为矩形)

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

这实际上没有任何意义。

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

那么,多对多应该通过遵循第二个约定来表示(请假设关系集为菱形,实体集为矩形)

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

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

于 2016-11-04T15:38:00.257 回答
0

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

于 2017-09-21T04:33:15.840 回答