邵 超,万春红
(河南财经政法大学 计算机与信息工程学院,河南 郑州450002)
摘 要:E-R图设计是数据库设计的关键,目前诸多流行的数据库原理教材,对E-R图设计部分的讨论均显得不够精细。针对这一现状,文章通过分析不同应用环境下实体之间的联系,提出E-R图的精细设计方案,说明E-R图的正确设计方法。
教育期刊网 http://www.jyqkw.com
关键词 :数据库设计;E-R图;实体;联系
0 引 言
数据库原理是计算机相关专业的一门专业主干课,目的是使学生掌握数据库的基本概念、基本理论和基本操作方法,理解数据库作为目前最有效的数据管理手段,在信息系统中的基础地位和重要作用,学会用数据库对大量数据进行有效的组织、存储和管理。因此,针对一个具体的应用环境,设计一个结构良好的数据库就成为该门课程的教学重点之一。
数据库设计人员设计的数据库结构能否真正符合应用环境和普通用户的要求,需要由普通用户来进行评判,这就要求在设计数据库的逻辑结构和物理结构之前,先设计一个普通用户也能够理解的、更加抽象的概念结构,通过概念结构使普通用户能够积极地参与到数据库设计中来,以保证整个数据库系统的最终成功运行。因此,概念结构设计是数据库设计的关键,最常用来描述概念结构的工具就是E-R图。
然而,目前诸多流行的数据库原理教材[1-4]对E-R图设计部分的讨论均不够精细,实际教学也大都跟随教材浮于表面,从而使学生难以设计正确反映应用环境实际语义的E-R图,造成随后转换得到的关系模式码不正确、数据冗余度大、规范化程度低等问题。
1 E-R图的设计
E-R图设计的正确与否取决于数据库设计人员能否真正把握应用环境的业务流程以及在该业务流程中所涉及的各个客观对象和他们之间发生的活动,这需要作准确深入的用户需求分析。这些客观对象如果需要记录的话,就抽象为E-R图中的实体(描述实体的众多相关数据就抽象为实体的属性,将具有相同属性的众多实体抽象为实体型)。它们之间发生的活动如果也需要记录的话,就抽象为E-R图中的联系,这是E-R图设计的重点。
以高校学生选课系统为例,假设学校只有一种类型的学生,每名学生有唯一的一个学号,还有姓名、性别、年龄和班级信息;学校开设了多门课程,每门课程有唯一的一个课程号,还有课程名、学分、先行课和课程简介信息。由于一门课程同时可以由多个教师讲授,因此,在上一学期末进行选课的时候,每名学生可以根据主讲教师(有唯一的教师编号)的姓名、性别、年龄和职称信息,有选择地选修由某些教师讲授的某些课程。每个教师同时可以讲授多门课程,每门课程可以供多名学生选修,如果由某个教师讲授的某门课程没有学生选修,则取消由这个教师讲授的这门课程。主讲教师会在学期末将自己所教学生的所有课程成绩输入到数据库中,以供学生在网上进行查询[4]。
首先,我们根据用户需求,分析潜在的实体。实体通常是需求文档中的中心名词,主要活动都是围绕它们开展的。显然,该系统存在学生、课程和教师这3类客观对象,每一类客观对象都有很多数据需要记录,这就构成了该系统需要记录的第一部分主要数据;此外,该系统中的主要活动——课程的选修与讲授以及成绩的输入与查询,都是围绕这3类客观对象开展的。因此,这3类客观对象就抽象为E-R图中的3个实体型,描述这3个实体型的E-R图如图1所示(带有下划线的属性为码)。
其次,根据用户需求,确定实体之间的联系。实体之间的联系通常是需求文档中的中心动词,表示实体之间发生的活动或隶属关系。在该系统中,这3个实体型之间发生的主要活动包括学生选修教师的课程(或教师给学生讲授课程)、教师输入成绩和学生查询成绩。由于一名学生可以有选择地选修由不同教师讲授的不同课程,一个教师可以给不同学生讲授不同课程,一门课程可以由不同教师给不同学生讲授。因此,选修(或讲授)活动涉及这3个实体型,是这3个实体型之间的一个多对多联系(在这种情况下,选修和讲授是同一个联系)。将该活动抽象为E-R图中的一个联系,是因为系统需要记录这样的活动,即哪名学生选修了哪个教师讲授的哪门课程,以及由此活动产生的数据——成绩(抽象为该联系的一个属性),这就构成了该系统需要记录的另外一部分主要数据。该系统还有两个活动:教师输入成绩和学生查询成绩,由于它们都只是对成绩属性的数据操作,系统并不需要对这样的数据操作也进行记录,因此,它们并不抽象为E-R图中的联系。该E-R图如图2所示。
很多教材[1-2]都将图2中的选修联系看成是学生和课程这2个实体型之间的一个多对多联系(如图3所示),但这只有在学生只管选课而无需考虑主讲教师的情况下是正确的。在这种情况下,为了确定成绩最终由哪个主讲教师向数据库中输入(在图2所示的情况下,这是很直接的),一个教师只能被指定为某一个或几个班级讲授课程,如图4所示,这样才可以根据学生所在的班级及其选修的课程来综合确定哪个教师是其主讲教师,负责为其输入成绩。因此,E-R图的设计应该具体情况具体分析,要根据应用环境的业务流程有针对性地进行设计。
2 E-R图的精细设计
图2和图4还存在一定的问题。虽然学生(在图4中为班级)、课程和教师之间是多对多联系,但一名学生(在图4中为班级)选修了一门课程,只会有一个主讲教师,这在图2和图4中是反映不出来的。
此外,根据E-R图向关系模型的转换原则——“3个或3个以上实体间的一个多元联系可以转换成一个关系模式,各实体的码组成关系的码或关系码的一部分”[1-2],图2中的选修联系和图4中的讲授联系分别转换为:
选修(学号,课程号,教师编号,成绩)
和
讲授(班号,课程号,教师编号)(班号为班级实体的码)。
然而,根据上述语义,存在函数依赖“(学号,课程号)→教师编号”和“(班号,课程号)→教师编号”,因此,这2个关系模式的码并不正确,应改为:
选修(学号,课程号,教师编号,成绩)
和
讲授(班号,课程号,教师编号)。
然而,这与转换原则相悖。
为解决这个问题,我们对以上E-R图进行更加精细的设计,引入教学班实体型,选修同一个教师、同一门课程的所有学生组成一个教学班(这也是很多高校的实际做法)。一名学生参加了一个教学班,就意味着选修了某个教师讲授的某门课程,因此,教师、课程和学生之间是通过教学班联系起来的(如图5所示)。
再举一个例子。一般的销售系统都存在顾客浏览和订购商品这样的主要活动,其中,顾客浏览商品只能算是一个数据操作,顾客订购商品需要系统记录相应的数据,包括哪个顾客订购了哪些商品及其订购数量、订购时间、收货地址等,因此需要抽象为E-R图中的一个联系,如图6所示。
然而,图6还存在一定的问题,一个顾客一次订购了多种商品,它们的订购时间和收货地址是完全相同的,其后果就是由图6转换得到的关系模式“订购(顾客编号、商品编号、订购数量、订购时间、收货地址)”(顾客编号和商品编号分别为顾客和商品这2个实体型的码)存在大量的数据冗余。事实上,顾客订购商品是通过订单体现的,订购时间和收货地址只是订单实体型的2个属性,因此,图6应修正为图7。
现在很多销售系统都会进行打折,以实现提高顾客忠诚度和促销商品的双重目的,为此,E-R图中需要增加一个折扣规则实体型,以存放这些打折信息,但不同系统进行打折的方法是不同的,相应的E-R图自然也要有所区别。
有的系统会根据顾客的等级进行打折,而不考虑该顾客购买的是哪些商品,这样的系统主要为提高顾客忠诚度,这种情况下的E-R图就应该如图8所示。
有的系统只是对商品进行打折,而不考虑是哪些顾客购买了该商品,这样的系统主要为促销商品,这种情况下的E-R图就应该如图9所示。
然而,在实际应用中,如果系统足够复杂,为了简化E-R图,上述的参照联系也可以不用画出来。
3 结 语
针对目前流行的数据库原理教材对E-R图设计部分讨论不够精细,从而使学生难以准确掌握E-R图设计的问题,我们给出了一些E-R图精细设计的案例,从中可以理解E-R图设计的根本在于正确分析具体应用环境中的业务流程及其语义,尤其是实体之间存在的各种联系,以克服E-R图描述不清、随后转换得到的关系模式码不正确、数据冗余度大、规范化程度低等问题。通过两年的教学实践,这些教学案例的应用效果良好。为了应付各行各业信息系统的需要,今后还需要进一步丰富各行各业的教学案例,使学生能更好地掌握E-R图的分析与设计方法。
基金项目:国家自然科学基金(61202285);河南省基础与前沿技术研究项目(112300410201);河南省高等教育教学改革项目“财经类高校计算机专业综合改革研究与实践”(2014SJGLX233)。
第一作者简介:邵超,男,副教授,研究方向为机器学习、数据挖掘与数据可视化, sc_flying@163.com。
教育期刊网 http://www.jyqkw.com
参考文献:
[1] 王珊, 萨师煊. 数据库系统概论[M]. 4版. 北京: 高等教育出版社, 2006: 209-224.
[2] 范明. 数据库原理教程[M]. 北京: 科学出版社, 2008: 26-28.
[3] Silberschatz A. 数据库系统概念[M]. 5版. 杨冬青, 马秀莉, 唐世渭, 等译. 北京: 机械工业出版社, 2008: 130-154.
[4] 邵超. 数据库实用教程: SQL Server 2008[M]. 北京: 清华大学出版社, 2009: 63-68.
(编辑:郭田珍)