模型( Model)是现实世界特征的模拟和抽象表达,其有助于人们更好地认识和理解客观世界中的事物、对象、过程等感兴趣的内容,例如汽车车模、飞机航模、建筑图纸、军事沙盘等。同样,为能表示和处理现实世界中的数据和信息,我们常使用数据模型(Data Model)这个工具来模拟和抽象现实世界中的数据特征。因此,数据模型也是一种模型,它是对现实世界数据特征的抽象,描述的是数据的共性内容。
数据特征与数据模型组成要素
般而言,数据具有静态和动态两种特征。其中,数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束;数据的动态特征是指对数据可以进行符合定规则的操作。相应地,对现实世界数据特征进行抽象的数据模型,需要描述数据的静态特征与动态行为,并为数据的表示和操纵提供框架。因此,数据模型是用来描述数据的结构、定义在结构上的操纵以及数据间的约束的一组概念和定义。 通常,任何一种数据模型都是严格定义的概念集合,而这些概念必须能够精确地描述系统的静态特性、动态特性和数据约束条件。因此,数据模型通常由数据结构、数据操作和数据约束三个要素组成,分别如下。
(1)数据结构
数据结构描述的是系统的静态特性,即数据对象的数据类型、内容、属性以及数据对象之间的联系。由于数据结构反映了数据模型最基本的特征,因此人们常常按照数据结构的类型来命名数据模型。例如,层次结构、网状结构、关系结构的数据模型分别命名为层次模型、网状模型和关系模型,以及近年来得到广泛应用的面向对象模型。
2)数据操作
数据操作描述的是系统的动态特性,是对各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。数据操作主要分为更新和检索两大类,其中更新包括插入、删除和修改。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。
(3)数据约束
数据约束描述数据结构中数据间的语法和语义关联,包括相互制约与依存关系以及数据动态变化规则,以保证数据的正确性、有效性与相容性。数据约束包括数据完整性约束、数据安全性约束以及并发控制约束,数据约束既刻画了数据静态特征,也表示了数据动态行为规则。任一数据模型应该反映和规定本数据模型必须遵守的、基本的、通用的数据约束,特别是数据完整性约束,它是一组完整性规则的集合,例如,在关系模型中,任何关系必须满足实体完整性和参照完整性这两类约束。此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件,例如,在某个网购数据库中规定购买某些在线商品的客户的年龄不得低于18岁。
数据模型的分类
现实世界中人们认识、理解的数据和信息,不能直接被计算机所处理,但可通过数据模型这个建模工具进行抽象表达,表示成计算机能够加工和处理的形式,并存放入数据库中进行存储与管理。因而,数据模型应满足三个方面的要求,即:能比较真实地模拟现实世界;容易为人们所理解;同时,便于在计算机上实现。然而,目前一种数据模型要很好地满足这三个方面的要求,仍很困难。 为此,人们通常是针对不同的使用对象和应用目的,采取逐步抽象的方法,在不同的抽象层面使用不同的数据模型,从而实现将现实世界中的具体事物逐步抽象、转换、组织成机器世界(即计算机)中某一具体数据库管理系统所支持的数据类型,即:首先,将现实世界中的客观对象抽象为信息世界中的某一种信息结构,这种信息结构并不依赖于具体的计算机系统,也不与具体的数据库管理系统相关,是一种概念级的模型;然后,再将概念级的模型转换为机器世界中某一具体的数据库管理系统支持的数据模型。 由此可见,数据模型是模型化数据和信息的工具,也是数据库系统的核心和基础。事实上,数据库技术的发展正是沿着数据模型的主线推进的。这里主要介绍两大类数据模型,它们分别属于两个不同的层次,即第一类是概念层数据模型,第二类是逻辑层数据模型和物理层数据模型。
概念层数据模型
概念层是数据抽象级别的最高层,其目的是按用户的观点来对世界建模。概念层数据模型,也称为数据的概念模型( Conceptual Model)或信息模型,它用来描述现实世界的事物,与具体的计算机系统无关,且独立于任何DBMS,但容易向DBMS所支持的逻辑数据模型转换。这类模型主要用于数据库的设计阶段,即在设计数据库时,通常用概念模型来抽象、表示现实世界的各种事物及其联系。
(1)信息世界中的基本概念
概念模型用于信息世界的建模,是实现世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言,因此概念模型一方面具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另方面它简单、清晰、易于用户理解。 通常,信息世界涉及的基本概念如下。
①实体( Entity)
客观存在并可相互区别的事物称为实体。实体可以是实际的事物,也可以是抽象的概念或联系,例如商品、学生、部门、课程、比赛等都可以作为实体。
②属性( Attribute)
实体所具有的某种特性称为实体的属性。一个实体可以由多个属性来描述,例如,学生具有学号、姓名、性别、出生日期等特性,也就是说学生实体具有学号、姓名、性别、出生日期等属性。
③码或键(Key)
可唯一标识实体的属性集称为码或键。例如,学号是学生实体的码或键。
④域( Domain)
属性的取值范围称为该属性的域。例如,学生实体中姓名的域为字符串集合,性别的域为(男,女)
⑤实体型( Entity Type)
具有相同属性的实体必然具有共同的特征和性质。用实体名与属性名集合来抽象和刻画同类实体,称为实体型。例如,学生(学号、姓名、性别、出生日期)就是一个实体型。
⑥实体集( Entity Set)
同型实体的集合称为实体集。例如,每个学生是一个实体,所有学生构成一个实体集
⑦联系( Relationship)
在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指实体各属性之间的联系,例如,确定了学号,就一定能知道与之对应的姓名,即学号与姓名这两个属性之间有联系。实体之间的联系是指不同实体之间的联系,例如,一个班有许多的学生,一个学生只属于一个班级,学生与班级这两个实体之间有联系。 需要注意的是,在数据模型中有“型”(type)和“值”( value)两个不同的概念。“型”指的是对某一类数据的结构和属性的说明,而“值”是型的一个具体赋值。例如,在客户档案中,客户信息定义为(姓名,性别,年龄,籍贯,所在城市,联系电话)这样的记录型,而(张三,男,26,北京,上海,13912345678)则是该记录型的一个记录值。
(2)概念模型的表示方法
概念模型是对信息世界建模,概念模型的表示方法很多,其中最为常用的是 P.P.S. Chen于1976年提出的实体联系方法( Entity-Relationship approach)。该方法用ER图(ERdiagram)来描述现实世界的概念模型,E-R方法也称为ER模型( E-R Model)。ER图提供了表示信息世界中实体、属性和联系的方法,其中表示实体、属性、联系的图形含义分别如下。
- 实体型,其用矩形表示,矩形框内写明实体的名称。
- 属性,其用椭圆形表示,并用无向边将其与相应的实体连接起来。
- 联系,其用菱形表示,菱形框内写明联系的名称,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(11、1N或MN),如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。例如图1.8中连接在“选课”联系上的“成绩”就是联系的属性。
说明:由于学生、课程等实体的属性较多,上图适当简化,部分属性没有标出。另外,关于使用ER图进行数据库概念结构设计的细节。 值得注意的是:实体-联系方法是抽象和描述现实世界的有力工具。用ER图表示的概念模型独立于具体的DBMS所支持的逻辑模型,它是各种逻辑模型的共同基础,因而比逻辑模型更一般、更抽象、更接近实现世界。
逻辑层数据模型
逻辑层是数据抽象的中间层,描述数据整体的逻辑结构。这一层的数据抽象称为逻辑层数据模型,也称为数据的逻辑模型( Logical Mode)。它是用户通过数据库管理系统看到的现实世界,是基于计算机系统的观点来对数据进行建模和表示。因此,它既要考虑用户容易理解,又要考虑便于DBMS实现。 任何DBMS都是基于某种逻辑数据模型。其中,主要的逻辑数据模型有层次模型( Hierarchical Model)、网状模型( Network Model)、关系模型( Relational Model)、面向对象模型( Object Oriented Model)等。这里只简要介绍这几类逻辑数据模型的基本概念,而基于关系模型的数据库,即关系数据库,是学习的重点。 (1)层次模型 层次模型是数据库系统最早使用的一种数据模型,它的数据结构是一棵“有向树”,树的每个结点对应一个记录集,也就是现实世界的实体集。层次模型的特点是:有且仅有一个结点没有父结点,它称作根结点;其他结点有且仅有一个父结点。我们所熟悉的组织机构就是典型的层次结构。但现实世界实体之间的关系有很多种,层次模型难以表达实体之间比较复杂的联系。 (2)网状模型 网状模型以网状结构表示实体与实体之间的联系。网状模型是层次模型的扩展,允许结点有多于一个父结点,并可以有一个以上的结点没有父结点。现实世界中实体集之间的关系很复杂,网状模型可以方便地表示实体间各种类型的联系,既可以表示从属的关系,也可以表示数据间的交叉关系,但结构复杂,实现的算法难以规范化。 (3)关系模型 关系模型是用二维表结构来表示实体及实体间联系的模型,并以二维表格的形式组织数据库中的数据。它具有下列优点
- 关系模型是建立在严格的数学概念的基础上的。
- 关系模型的概念单一,统一用关系来表示实体以及实体之间的联系,对数据的检索和更新结果同样也是用关系(即表)来表示。因而,关系模型的数据结构简单、清晰,用户易懂、易用。
- 关系模型的存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。
目前流行的商用数据库多是基于关系模型的。支持关系模型的数据库管理系统称为关系数据库管理系统,例如MsQL就是一个关系数据库管理系统。 4)面向对象模型 尽管关系模型简单灵活,但是对于现实世界中一些复杂的数据结构,很难用关系模型描述。面向对象方法与数据库相结合所构成的数据模型称为面向对象模型。面向对象模型既是概念模型又是逻辑模型。面向对象数据模型用面向对象观点来描述现实世界实体的逻辑组织、对象间的联系,其表达能力丰富,具有对象可复用、维护方便等优点,是正在发展的数据模型,也是数据库的发展方向之一。
物理层数据模型
物理层数据模型,也称为数据的物理模型( Physical Model),其描述数据在存储介质上的组织结构,是逻辑模型的物理实现,即每一种逻辑模型在实现时都有与其相对应的物理模型。物理模型是数据库最底层的抽象,它确定数据的物理存储结构、数据存取路径以及调整、优化数据库的性能。物理模型的设计目标是提高数据库性能和有效利用存储空间。物理数据模型不但由DBMS的设计决定,而且与操作系统、计算机硬件密切相关。物理数据结构一般都向用户屏蔽,用户不必了解其细节。 概括而言,这三个不同的数据模型之间既相互独立,而又存在着关联。从现实世界到概念模型的转换是由数据库设计人员完成的;从概念模型到逻辑模型的转换可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成;从逻辑模型到物理模型的转换主要是由数据库管理系统完成的。