数据库设计中E—R模型设计的探究

2014-08-30 20:21温杰
无线互联科技 2014年8期
关键词:属性实体数据库

温杰

摘 要:数据库设计中概念模型设计的核心是E-R模型设计。设计实践中,设计者感到更多的困惑是实体的选择、属性的确定及实体间联系的确定。在此提出了如何选择实体,如何确定实体的属性及如何确定实体间的联系。这就是文中要侧重探讨的问题。

关键词:数据库;设计;E-R模型;实体;属性

Abstract:The core design of conceptual model in database design is the design of E-R model.In the design practice,Designers feel more confused is to determine the relationship of entities,attributes the choice between.In this paper presents how to select entity,How to determine the attributes of entities and how to determine the link between the entity.This article is to focus on the problem.

Key words:data base;design;E-R model;entity;property

1 问题提出

实体-联系模型(简称E-R模型或E-R图),在软件工程、数据库设计以及信息系统开发中都占有重要位置,已经成为一个必用的工具,与之相关的文章也很多。在E-R模型设计实践中,设计者感到更多的困惑是实体的选择、属性的确定及实体间联系的确定。这就是文章中要侧重探讨的问题。

2 E-R模型概述

E-R模型是不受任何DBMS约束的面向用户的表达方法,在数据库设计中,它是数据库概念模型设计中被广泛应用的数据建模工具。

E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:

⑴实体用矩形框表示,矩形框内写上实体名。

⑵实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体相连。

⑶实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型。联系的类型可分为:

1:1(一对一),如一个厂长管理一个工厂,一个工厂有一个厂长。

1:N(一对多),如一个厂长领导多名员工,一个员工被一个厂长所领导。

M:N(多对多),如一个机器由多种零部件组成,一种零部件可以用到多个机器上。

例如,学生成绩管理E-R图如图1所示。

3 实体的选择

一个信息系统会涉及到很多实体,如一个教学管理系统,可能涉及到的实体有:学生、学生宿舍、学生家庭、学生活动、教师、教师家庭、教学管理人员、课程、教材、教材管理员、教室、教师管理人员、教室设备等若干实体。如何确定哪些实体是我们所需要的,就是我们这里要讨论的。

实体是对问题域中有意义的事物的抽象,它们既可能是物理实体,也可能是抽象概念。具体地说,大多数客观事物可分为下述4类:

⑴可感知的物理实体,例如,飞机、汽车、书、房屋等等。

⑵人或组织的角色,例如,医生、教师、雇主、雇员、计算机系、财务处等等。

⑶应该记忆的事件,例如,会议、演出、访问、交通事故等等。

⑷需要说明的概念,例如,政策、保险政策、版权法等等。

在分析所设计的系统中,可以参照上列4类常见事物,找出在当前问题域中的候选实体。如上述学生成绩管理,我们可以找出很多实体,如任课教师、上课教室、所用教材等。但是,现实世界中存在的许多实体,不能把它们都纳入到系统中来,仅需要把与本问题密切相关的实体确定为目标系统中的实体。有些实体在其他问题中可能很重要,但与当前要解决的问题无关,同样也应该把它们删掉。如任课教师,很多人会想到学生成绩管理离不开教师。如果我们的问题中仅仅需要学生成绩,而不需要知道任课教师信息,那么,我们就不要选择教师做该问题的实体了。

4 实体属性的确定

属性就是描述实体的特征值。任何实体都会有很多属性。如学生实体的属性可以有:学号、姓名、性别、出生日、籍贯、政治面貌、专业、家长、身高、体重、视力…。在设计E-R图时如何确定哪些属性是我们所需要的?

属性的确定既与问题域有关,也和目标系统的任务有关。应该仅考虑与具体应用直接相关的属性,不要考虑那些超出所要解决的问题范围的属性。

确定属性的几条原则:

⑴该系统系需要保留的数据(即原始数据)。根据用户的需求陈述或系统应实现的功能,可知道系统需要记录(保留)的数据。如本例中,所选用的学生属性是学生实体最基本的属性,也是学生管理者所需要的学生基本属性。另外,该系统又有别于“学生管理”,所以在这里没有出现更多的学生属性。

⑵该系统加工处理所需要的数据(即原始数据)。这是从系统加工处理的角度来考虑的原始数据。如本例中有功能描述“统计每个学生已经获得的学分”;我们可以知道,除了成绩数据,学分也是不可少的原始数据,而学分属性是课程实体的属性。

⑶输出(包括查询)的信息所包含的数据(即原始数据或结果数据);一般,查询可能需要输出原始数据,而打印的统计报表多为结果数据。如本例中有功能描述“学生可以查询自己的全部成绩”,为实现此功能,需要使用该系统的原始数据——成绩。又如功能描述“打印《专业成绩统计表》”,为实现此功能,需要在系统中有“专业成绩统计”的加工处理,并将原始数据加工成《专业成绩统计表》中的数据(结果数据)并保存。而“打印《专业成绩统计表》”所用的就是这个已经保存结果数据。

⑷实体的属性应该是与该实体自身紧密相关的特征值。这一点对是关系规范化理论的通俗解释。我们所设计的关系,通常应满足第三范式(3NF)。因为E-R模型的最终实现是要建立关系数据库。

⑸所确定的实体属性以够用为佳。这是从提高系统运行效率、减少数据输入量、减少存储空间的占用量等方面考虑的。

⑹对于联系类型为1:1的两个实体,需要在双方实体的属性中,加上对方的主键(双向联系),或只在联系的主要方实体的属性中,加上对方的主键(单项联系)。如“学生”和“家长”是1:1的联系,如果只需要“根据学生查看其家长信息”,那么,就可以只建立从学生到家长的单项联系。再如,“厂长”和“工厂”是1:1的联系,如果 “有时需要根据厂长查看其工厂信息,而有时又需要根据工厂查看其厂长信息”,这种情况的需求,就要建立二者的双向联系。

⑺对于联系类型为1:N的两个实体,需要在N方实体的属性中,加上1方实体的主键。如“厂长”和“员工”是1:N联系。在需求陈述中有“在查询职工信息时,有时需要查看其厂长信息”。这就需要用上面的方法实现这种联系。

⑻如果两个实体间的联系类型为M:N的。实现这种联系的方法是另外建立一个关系(在逻辑模型中要单独建立一个关系,在E-R模型中可以不表示)。但是,当这种联系带有属性时(如本例中的联系“学习”就带有属性“成绩”),这个属性就必须要在E-R图中表示出来。

5 实体间联系的确定

实体之间的联系是客观存在的,尤其是一个系统中的实体,总会找出各种各样的、相互交错的联系。正如一个家庭中的每个成员,都会与其他成员存在多种联系。在设计E-R图时,是不是都要把这些联系表示出来?回答是“否”!那么,哪些联系要表示,哪些不要表示呢?这要看“用户需求”。假如上面说的一个家庭,需求陈述说“只需要查看每个成员的个人信息”。那么,就可以不必建立成员之间的联系。再如,前面的“成绩管理”例子,如果改成“学生及课程查询系统”,需求是“查询学生信息”和“查询课程信息”。那么,“学生”实体和“课程”实体就没有必要建立联系了。

联系的确定既与问题域(用户需求)有关,也和目标系统的任务有关。应该仅考虑与具体应用所需要的联系,不要考虑那些超出所要解决的问题范围的联系。这里也明确提出,一个问题中的实体不一定都要建立联系。

有些联系是可以直接从需求陈述或系统的功能中找到,如“根据学生信息查找其学习的课程”;就可以确定“学生”实体和“课程”实体之间有联系。但也有一些联系是间接找到的,这些实体之间通常具有交易或接触的性质,例如,学习、购买、构成、纳税、结婚等等,而且这些联系往往还带有重要的属性。如“成绩管理”例子中的联系“学习”,其属性“成绩”是很重要的。再如“顾客购买商品”,就有“顾客”实体,“商品”实体,它们的联系是“购买”,其重要属性是“购买数量”。

6 结束语

一个实际系统的E-R模型是数据库设计的基础,它应该与具体的问题域和目标系统的任务密切相关,不可照搬照套!此文特别提出了如何选择实体,如何确定实体的属性及如何确定实体间的联系。

文章中所提出的观点属于个人经验总结,是否合适,还要请有关专家学者们批评指正。

[参考文献]

[1]WANG Shan,SA Shixuan.Introduction to database systems [M] (Fourth Edition).Beijing:Higher Education Press (HEP),2010.王珊,萨师煊.数据库系统概论(第4版),北京:高等教育出版社,2010.

[2]MIAO Xuelan.Principles and applications of database systems [M].Beijing:Higher Education Press (HEP),2007.8.苗雪兰,等.数据库系统原理及应用教程,北京:机械工业出版社,2007.8.

[3]Love208e column- CSDN blog,Database design--ER plans[EB/OL].love208e的专栏-CSDN博客,数据库设计--ER图[EB/OL].

猜你喜欢
属性实体数据库
前海自贸区:金融服务实体
实体的可感部分与实体——兼论亚里士多德分析实体的两种模式
两会进行时:紧扣实体经济“钉钉子”
振兴实体经济地方如何“钉钉子”
数据库
对两种实体观的探析
用好文件“属性” 解决实际问题
论集体建设用地使用权的用益物权属性
关于公允价值本质与特性的探析
数据库