1.4 绘制E-R图设计数据库
E-R(Entity-Relationship)图又叫实体联系图、E-R模型,是描述现实世界的概念模型。在关系型数据库设计之前,首要的任务就是绘制E-R图。数据库设计人员一定要根据绘制的E-R图来完成最后的数据库设计,这样才能确保数据库设计的准确性和完整性。本节就详细地讲解如何绘制E-R图。
1.4.1 绘制E-R图的基本要素
在E-R图中涉及的基本要素有实体,属性、码、域、联系及属性等,下面就对实体、属性及关系这三个要素进行详细说明。
(1)实体(Entity)
实体是客观存在并可以相互区别的事物。实体既可以是人、物也可以是抽象的概念,比如,一个医生,一个司机,一本书都可以认为是一个实体。相同类型的实体可以构成一个实体集(Entity Set),比如,某车队的全体司机就可以构成一个实体集。在E-R图中实体一般用矩形框表示,矩形框内写明实体的名称,例如,表示一个司机的实体,如图1.1所示。
图1.1 司机实体的表示
(2)属性(Attribute)
实体所具有的某一特性都可以称为一个属性,一个实体可由若干个属性组成。在E-R图中一般用椭圆形表示,并用无向边将其与相应的实体连接起来,比如图书的价格、名称、作者、出版社等信息都可以称为属性。例如,给图1.1所示的司机实体加上姓名、年龄、性别、驾龄、所属车队5个属性,如图1.2所示。
图1.2 司机属性的表示
(3)关系(Relationship)
关系是指信息世界中实体内部或实体之间的联系。关系分为实体内部关系和实体之间的关系。实体内部关系通常是指组成实体的各属性之间的关系;实体之间的关系通常是指不同实体集之间的关系。联系在E-R图中用菱形框表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上关系的类型。实体之间存在着三种关系类型,分别是1对1、1对多、多对多,它们反映到E-R图中为相应的关系类型,即1:1、1:N和M:N。
● 1对1(1:1):1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。比如,给司机分车,“司机”实体和“车”实体之间的关系,每一个司机最多可以分得一个车,同时每一个车最多只能有一个司机来开。用图形表示如图1.3所示。
图1.3 1对1关系
● 1对多(1:N):1对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。比如:“司机”实体和“车队”实体之间的关系,一个车队里面有若干个司机,而每一个司机只属于这一个车队。用图形表示如图1.4所示。
图1.4 1对多关系
● 多对多(M:N):多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。比如,学生选课,一个学生可以选择多门课程;同时,一门课程也可以被多个学生选。用图形表示如图1.5所示。
图1.5 多对多联系
其实,实体之间的这三种关系,不仅对两个实体有效,也可以表示多个实体之间的关系。
1.4.2 E-R图绘制实例
绘制一个学生选课系统的E-R图,在学生选课系统中可以分析出学生、课程、专业、教师四个实体,下面分别绘制每个实体属性图并在最后绘制一个整体的E-R图。
1.学生实体属性图
学生实体主要包括学号、姓名、年龄、性别、身份证号、联系方式、专业7个属性,实体属性图如图1.6所示。
图1.6 学生实体属性图
2.课程实体属性图
课程实体主要包括课程编号、课程名称、授课时间、授课教师、所属专业、课程描述6个属性,实体属性图如图1.7所示。
图1.7 课程实体属性图
3.专业实体属性图
专业实体主要包括专业编号、专业名称两个属性,实体属性图如图1.8所示。
图1.8 专业实体属性图
4.教师实体属性图
教师实体主要包括教师编号、姓名、年龄、性别、专业、职称、联系方式7个属性,实体属性图如图1.9所示。
图1.9 教师实体属性图
5.学生选课系统E-R图
在绘制整体的E-R图之前,要理解学生选课系统的流程。具体流程是由学生查看所有的课程信息,查看自己专业开设的课程及每门课程的授课教师等情况,然后学生根据需要选择要选修的课程,最后将学生所选修的课程存到学生选课信息表中。那么,上述的四个实体之间是什么关系呢?
● 学生和课程之间的关系是多对多的关系,1门课程可以被多个学生选修,同时,1个学生也可以选修多门课程,但是课程不能重复。
● 教师和课程之间的关系是多对多的关系,1门课程可以有多个教师教,同时,1个老师也可以教多门课程。例如,不同的专业都可以开设计算机基础课,那么所有专业的计算机基础课可以是同一个老师教也可以是不同的老师教;同理,1个计算机老师既可以讲计算机基础课也可以讲其他的计算机课程。
● 课程和专业之间的关系是多对多的关系,1个专业的课程都由多个课程组成,每1门课程特别是公共课可以属于多个专业。例如,计算机基础课可以被多个专业开设。
● 学生和专业之间的关系是多对1的关系,1个学生只能属于1个专业,而1个专业可以由多个学生组成。
具体的E-R图,如图1.10所示。
图1.10 选课系统的E-R图