ER图的极小化

实体关系(ER)图是数据库中数据的图解表示,它显示了数据之间的关系。

null

注意:这篇文章是为那些已经知道什么是ER图以及如何绘制ER图的人准备的。

1) 当有多对一的时候 基数 在里面 这个 呃,图表。 例如,一个学生只能注册一门课程,但一门课程可以由许多学生注册。

many2one

对于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门课程。

many2many

  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图。

one2oneT

A1和B1分别是E1和E2的主键。

在上图中,我们在E1端有全部参与。

在这种情况下,只需要一个表,主键为E1。

由于E1完全参与,E1中的每个条目只与E2中的一个条目相关,但并非E2中的所有条目都与E1中的一个条目相关。

应允许E1的主键作为简化表的主键,因为如果使用E2的主键,简化表中的许多条目可能会有空值。

注: 只需要一张桌子。

B) 没有完全参与的一对一关系。

one2one

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/

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享