实体关系(ER)图是数据库中数据的图解表示,它显示了数据之间的关系。
注意:这篇文章是为那些已经知道什么是ER图以及如何绘制ER图的人准备的。
1) 当有多对一的时候 基数 在里面 这个 呃,图表。 例如,一个学生只能注册一门课程,但一门课程可以由许多学生注册。
对于Student(SID,Name),SID是主键。对于课程(CID,C_name),CID是主键
Student Course (SID Name) ( CID C_name ) -------------- ----------------- 1 A c1 Z 2 B c2 Y 3 C c3 X 4 D Enroll (SID CID) ---------- 1 C1 2 C1 3 c3 4 C2
现在的问题是,注册的主键应该是什么?应该是SID或CID,或者两者合并为一个。我们不能将CID作为主键,因为一个CID可以有多个SID。(SID,CID)可以唯一地区分表,但它不是最小值。所以SID是关系注册的主键。
对于上面的ER图,我们考虑了数据库中的三个表
Student EnrollCourse
但我们可以将Student和Enroll表合并为Student_Enroll。
Student_Enroll ( SID Name CID ) --------------------- 1 A c1 2 B c1 3 C c3 4 D c2
学生表和注册表现在合并。
因此,学生注册和课程至少需要两个DBMS表。
注: 在一对多关系中,我们至少可以有两个表。
2.什么时候到 是ER图中的多对多基数。 让我们考虑一下上面的例子,学生现在可以参加超过1门课程。
Student Course( SID Name) ( CID C_name )-------------- ----------------- 1 A c1 Z 2 B c2 Y 3 C c3 X 4 D Enroll ( SID CID ) ---------- 1 C1 1 C2 2 C1 2 C2 3 c3 4 C2
现在,同样的问题出现了。注册关系的主键是什么?如果我们仔细分析,登记表的主键是(SID,CID)。
但在这种情况下,我们不能将注册表与任何一个学生和课程合并。如果我们试图将注册与任何一个学生和课程合并,就会产生冗余数据。
注: 在多对多关系中,至少需要三个表。
3.一对一的关系
有两种可能性 A) 如果我们有一对一的关系,我们至少有一个目的完全参与。
例如,考虑下面的ER图。
A1和B1分别是E1和E2的主键。
在上图中,我们在E1端有全部参与。
在这种情况下,只需要一个表,主键为E1。
由于E1完全参与,E1中的每个条目只与E2中的一个条目相关,但并非E2中的所有条目都与E1中的一个条目相关。
应允许E1的主键作为简化表的主键,因为如果使用E2的主键,简化表中的许多条目可能会有空值。
注: 只需要一张桌子。
B) 没有完全参与的一对一关系。
A1和B1分别是E1和E2的主键。
R的主键可以是A1或B1,但我们仍然不能将所有三个表合并为一个表。如果我们这样做,组合表中的某些条目可能有空条目。因此,将三个表合并为一个表的想法并不好。
但我们可以把R合并成E1或E2。因此,至少需要两张表格。
下面是去年的问题。 https://www.geeksforgeeks.org/gate-gate-cs-2008-question-82/ https://www.geeksforgeeks.org/gate-gate-cs-2008-question-83/
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论