1.3 数据模型
数据(data)是描述事物的符号记录。模型(Model)是现实世界的抽象。数据模型(Data Model)是数据特征的抽象,是数据库管理的教学形式框架。数据库系统是提供信息表示和操作手段的形式构架。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。
数据模型描述的内容包括三部分:数据结构、数据操作、数据约束。
数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束。
数据操作:数据模型中的数据操作主要描述在相应的数据结构上的操作类型和操作方式。
数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容。
数据模型按不同的应用层次分成三种:概念数据模型、逻辑数据模型、物理数据模型。
(1)概念数据模型(Conceptual Data Model)
概念数据模型简称概念模型,是面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,使数据库的设计人员在设计的初始阶段,摆脱计算机系统及数据库管理系统(DBMS)的具体技术问题,集中精力分析数据和数据之间的联系等,与具体的数据管理系统无关。概念数据模型必须转换成逻辑数据模型,才能在数据库管理系统中实现。
(2)逻辑数据模型(Logical Data Model)
逻辑数据模型简称数据模型,是用户从数据库所看到的模型,是具体的数据库管理系统所支持的数据模型,如网状数据模型(Network Data Model)、层次数据模型(Hierarchical Data Model)等。数据模型既要面向用户,又要面向系统,主要用于数据库管理系统的实现。
(3)物理数据模型(Physical Data Model)
物理数据模型简称物理模型,是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,不但与具体的数据库管理系统有关,而且与操作系统和硬件有关。每种逻辑数据模型在实现时都有其对应的物理数据模型。数据库管理系统为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。
概念数据模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型。逻辑数据类型中最常用的是层次模型、网状模型、关系模型,应用最广泛的是关系模型。
1.3.1 E-R概念模型
概念数据模型是现实世界到信息世界的抽象表示。最常用的概念数据模型是E-R(Entity Relationship,实体-关系)模型。E-R模型中的主要概念有实体、实体型、实体集、属性、码及实体间的联系。
1.实体(Entity)
实体表示客观存在的可以相互区别的事物。实体可以是具体的人、事及物,也可以是抽象的概念与关系,如一个学生、一本书、一个公司、某个学校、某份合同、一门课程等。
实体用其特征来描述,如学生“王五”可以有姓名、学号、性别、年龄等特征;又如,书可以用书名、作者、出版社、出版时间等描述。
实体是指现实世界存在的个体,具有同类特征的个体的集合形成一个实体集。所谓“同类特征”,是指研究问题的某方面,如同是学生、同是教师、同是学校的员工等。为了抽象描述一个实体集,用实体名及表征实体的多个特征的集合来描述,称为实体的“型”,实体集里的每个实体是它的值或实例。
〖例1-1〗 在“人才档案管理系统”中,具体的实体如一个专门人才、一个成果、一项成就等,抽象的实体如某个求职期望、一张证明、一份工作报告等。
〖例1-2〗 在“人才档案管理系统”中,可以将“人才档案”、“成就成果”、“专业特长”和“联系方式”等定义成不同的实体集。
① “人才档案”实体集中包含的是“人才档案管理系统”全体人才,是有关专门人才的自然情况(人才编号、姓名、性别、出生日期、政治面貌、民族、学历、工资现状、工作简历、照片等)的全部信息记录。
② “成就成果”实体集中包含的是“人才档案管理系统”全体人才的成就成果,是有关专门人才成就成果(成果编号、成果名称、成果类别、成果出处、成果完成人)的全部信息记录。
③ “联系”实体集中包含的是“人才档案管理系统”全体人才联系方式,是有关人才联系方式(联系编号、联系人、工作单位、电话、手机、E-mail、邮编、通讯地址)的全部信息记录。
以上几个实体集仅仅是“人才档案管理系统”中的部分实体集,“人才档案管理系统”除上述实体集外,还包含求职期望、人才需求等实体集,这里不再一一列举。
在一个具体的数据库应用系统中,实体型与实体集二者的关系是相对的,“型”的含义在于说明实体的属性“类型”, “集”的含义在于说明所谓该类型实体的“集合”,它们都是用来说明同类实体的。
另外,实体的概念有“型(Type)”和“值(value)”之分。例如,“人才档案”的属性(人才编号、姓名、性别、出生日期、政治面貌、民族、学历、工资现状、工作简历、照片)是实体的“型”,而对于一个具体的“人才”实体,如(Gz05002,杨行东,男,03/30/1949,党员,汉族,大学,4260,略,略)就是实体的“值”。
同样,实体集是用“型”来描述的,而每个具体的实体则是实体的“值”或称为实例,若干个实体的“值”便是实体集的“值”。为了叙述方便,在不引起混淆的情况下,可以不去仔细区分实体“型”和“值”,简称“实体”。
2.属性(Attribute)
实体具有若干特征或性质,这些特征或性质称之为属性。也可以说,属性是用于描述实体特征和性质的,具有相同属性的实体具有相同的特征和性质,属性不能独立于实体而存在。
每个属性有一定的取值范围,称为该属性的域。例如,学生实体的属性学号的域可以是5位的整数,姓名的域是字符串的集合,性别的域为男和女等,用这些属性对应的一组值可以表示具体的实体。
〖例1-3〗 在“人才档案管理系统”中:每个人才是一个个体,可看成是一个实体,“人才档案”实体的属性有人才编号、姓名、性别、出生日期、政治面貌、民族、学历、工资现状、工作简历、照片,用来描述人才信息记录。例如:
(Gz05002,杨行东,男,03/30/1949,党员,汉族,大学,4260,略,略)
表示一个人才,是一个实体。
每个成就成果是一个事件,可看成是一个实体。“成就成果”实体的属性有成果编号、成果名称、成果类别、成果出处、成果完成人,用来描述与专门人才相关的成就成果信息记录。例如:
(0001, Visual FoxPro高级编程技术,著作,电子工业出版社,刘伟箭、杨行东等)
表示一项成就成果,是一个实体。
〖例1-4〗 在“人才档案管理系统”中,“人才档案”、“成就成果”和“联系方式”实体型表示如下:
人才档案(人才编号,姓名,性别,出生日期,政治面貌,民族,学历,工资现状,工作简历,照片)
成就成果(成果编号,成果名称,成果类别,成果出处,成果完成人)
联系方式(联系编号,联系人,工作单位,电话,手机,E-mail,邮编,通讯地址)
3.码(Key)
为了区别实体集中的每个实体,用能起标志作用的一个或一组属性加以区别,这个或组属性称为实体的码(或关键字)。如学生实体集中的属性学号能够标志学生实体,可作为学生实体的码,这样可以用学号来区分标志具有相同姓名的不同学生。作为码的属性或属性集又称为主属性,否则称为非主属性。
〖例1-5〗 在“人才档案管理系统”的“人才档案”实体集中,因为专门人才是通过人才编号来区分的,所以“人才编号”可作为“人才档案”实体集中的码。在“成就成果”实体集中,因为成就成果是通过成果编号来区分的,所以“成果编号”可作为“成就成果”实体集中的码。
4.实体间的联系(Relationship)
联系是两个或两个以上的实体集间关联关系的描述。
〖例1-6〗 在“人才档案管理系统”中,“人才档案”实体集与“成就成果”实体集之间可构成关联关系,“成就成果”中的成果是属于“人才档案”中的某个或某几个专门人才的。在“人才档案管理系统”中,“人才档案”实体集与“工资”实体集之间可构成关联关系,“工资”中记录的是“人才档案”中的某一个人现有的工资状况。
在现实世界中,事物的联系有两种:事物内部的联系和事物之间的联系,在概念模型中表现为实体内部的联系和实体间的联系。实体内部的联系是指实体的各属性之间的联系,实体间的联系是指不同实体集间的联系。两个实体集之间的联系,称为二元联系。两个实体集之间有以下三种联系。
(1)一对一的联系
一对一的联系是实体间最简单的一种联系,表示了两个实体集中的个体间存在着一对一的联系。例如,在学校中,一个系有一个系主任,而这个系主任只能在一个系中任职,则实体集系与实体系主任之间的联系就是一对一的。又如,一个班级有一个班长,一个班长只能属于一个学生班级,则班级与班长之间也是一对一的联系。一对一的联系记为1︰1。
(2)一对多的联系
实体间的另一种联系是一对多的联系。例如,一个班级有若干名学生,每个学生只在一个班级,则班级与学生间的联系就是一对多的。一对多的联系记为1︰n。
(3)多对多的联系
多对多的联系是现实世界存在的较为普遍的联系。例如学生与课程,一个学生可以选修多门课程,而一门课程可供多个学生选修,则学生与课程之间就是多对多的联系。多对多的联系记为m︰n。
实体间的各种联系可用图1-8示意,分别表示了班级与班长、班级与学生和学生与课程之间的1︰1、1︰n、m︰n的联系。
图1-8
在多个实体间也可以存在有联系,称为多元联系,如供应商、零件、工程之间的关系,可用图1-9所示。
图1-9
除了不同实体间的联系外,在一个实体集内部的不同实体间也可能存在着一对一、一对多、多对多的联系。图1-10表示了职工实体之间存在的领导与被领导的一对多的关系。
图1-10
5.E-R图(实体-联系图)
概念模型可通过E-R图来描述,即通过图形描述实体、实体属性和实体之间的联系。因此,概念模型也称为E-R模型。
在E-R模型中,数据的结构被表示为E-R图,图中有3个主要的元素,即实体集、属性和联系。其中:“矩形”框用于表示实体集,“椭圆形”框用于表示实体集中实体的公共属性,“菱形”框用于表示实体集之间的联系。
〖例1-7〗 绘制实体集图。
在“人才档案管理系统”中,有“人才档案”、“成就成果”、“专业”、“联系”、“求职期望”和“人才需求”等实体集,其对应的E-R图如图1-11所示。
图1-11
〖例1-8〗 绘制实体集公共属性图。
“联系方式”实体集中,每个实体具有联系编号、联系人、工作单位、电话、手机、E-mail、邮编、通信地址等属性,其对应的E-R图如图1-12所示。
图1-12
〖例1-9〗 绘制实体集之间的联系图。
① 在人才档案管理活动中,由于“人才档案”实体集与“联系”实体集具有关联关系,其对应的E-R图如图1-13(a)所示。
② 在人才档案管理活动中,由于“人才档案”实体集与“求职期望”实体集具有关联关系,其对应的E-R图如图1-13(b)所示。
③ 在人才档案管理活动中,由于“人才需求”实体集与“成就成果”实体集具有关联关系,其对应的E-R图如图1-13(c)所示。
图1-13
6.E-R模型的设计实例
“人才档案管理系统”是一个包含人才档案信息管理、人才需求信息管理和求职期望的综合信息管理系统。实体集个数较多,实体集中实体公共属性较多,实体集之间的相互关联关系复杂,绘制其E-R模型相对复杂,通常采用的设计思想是:“化全局”为“局部”,再做“局部集成”。
“人才档案管理系统”E-R模型具体设计步骤如下:
<1> 绘制“人才档案管理系统”总体功能框图,如图1-14所示。
图1-14
<2> 绘制“人才档案管理系统”每个子系统的E-R模型图,如图1-15所示。
图1-15
<3> 绘制“人才档案管理系统”几个子系统的E-R模型图的集成图:人才档案信息管理子系统、人才需求信息管理子系统和求职期望信息管理子系统部分E-R模型图集成图,如图1-16所示。
图1-16
1.3.2 层次模型
层次数据模型(Hierarchical Model)是较早用于数据库技术的一种数据模型。现实世界中如组织机构、家族关系、物品分类等之间都存在着自然的层次关系。用树型(层次)结构表示实体类型及实体间联系的数据模型称为层次模型。
层次模型是指用树结构表示实体及其之间的联系,树中每个节点代表一个记录类型,树结构表示实体型之间的联系。一个层次模型中的限制条件是:有且仅有一个节点,无父节点,此节点为树的根;其他节点有且仅有一个父节点。
层次模型的特点是记录之间的联系通过指针实现,查询效率高。其缺点是只能表示1︰n的联系。尽管有许多辅助手段实现m︰n的联系,但比较复杂,不易掌握。层次模型的示例如图1-17所示。
图1-17
1.3.3 网状模型
在现实世界中,事物间的关系多数是非层次关系,如果用层次模型描述非层次关系就有一定的困难。基于这种情况,引入了网状模型。网状模型(Network Model)是层次模型的扩展,表示多个从属关系的层次结构,呈现一种交叉关系的网络结构,网状模型是有向图结构。其主要特征如下:允许一个以上的节点无父节点,一个节点可以有多个父节点。
在网状模型中,每个节点表示一个记录类型,节点之间的连线表示记录类型间的联系,从一个节点到另一个节点用有向线段表示,箭头指向“一对多”联系的“多”方。
网状模型是比层次模型更具有普遍性的数据结构,层次模型是网状模型的特例。图1-18是两个简单的网状模型的例子。
图1-18
1.3.4 关系模型
尽管网状数据模型比层次模型更具有普遍性,由于其结构比较复杂,所以不利于应用程序的实现,操作上也有很多不便。为此,新的数椐模型——关系模型便应运而生。目前,主流数据库大都是基于关系模型的数据库系统的。
关系模型(Relational Model)中的“关系”是有特定含义的。一般来说,任何数据模型都描述一定数据之间的关系。层次模型描述数据之间的从属层次关系,网状模型描述数据之间的多种从属网状关系。关系模型中的“关系”虽然也适用于这种一般的理解,但又特指那种具有相关性而非从属性的按照某种平行序列排列的数据集合关系。关系模型用“二维表”表示事物间的联系。
关系模型的数据结构是一种二维表格结构,现实世界的实体与实体之间的联系在关系模型中均用二维表格来表示,如图1-19所示。
图1-19
1.3.5 面向对象模型
面向对象的概念最初出现在程序设计方法中,由于其优点突出,便于描述复杂的客观现实,因此迅速渗透到计算机科学领域的众多分支。面向对象模型是面向对象概念与数据库技术相结合的产物,用于支持非传统应用领域对数据模型提出的新要求。
面向对象模型(Object Oriented Model)最基本的概念是对象(Object)和类(Class)。在面向对象模型中,对象是指客观的某一事物,对对象的描述具有整体性、完整性,对象不仅包含描述它的数据,而且包含对它进行操作的方法的定义,对象的外部特征与行为是封装在一起的。其中,对象的状态是该对象属性集,对象的行为是在对象状态上操作的方法集。共享同一属性集和方法集的所有对象构成了类。
面向对象模型是用“面向对象”的观点来描述客观事物的逻辑组织、对象间联系和约束的模型,能完整地描述现实世界的数据结构,具有丰富的表达能力。由于该模型相对比较复杂,涉及的知识比较多,因此尚未达到关系模型的普及程度。
综上所述,有了数据模型,我们就可以在数据库中用数据模型这个工具来抽象、表达和处理现实世界中的事物及事物间的关联关系。
数据模型是数据库系统设计的核心,规范了数据库中数据的组织形式,表示了数据与数据之间的联系。数据模型的好坏直接影响数据库的性能。
任何数据模型都描述一定数据之间的关系。层次模型描述数据之间的从属层次关系,网状模型描述数据之间的多种从属的网状关系,关系模型描述非从属性平行数据之间的集合关系,面向对象模型描述数据对象之间的关联关系。
层次模型和网状模型是早期的数据模型,现已逐渐退出市场。由于关系模型有更简单、灵活的特点,因此目前流行的数据库软件大多使用关系模型。但是,随着信息的大量传播,现实生活中有着许多更复杂的数据结构和应用领域,对这些复杂数据的处理,使用关系模型来描述也会显得较为困难,因此面向对象模型是正在发展中的、具有广泛应用开发价值的模型。