2.2 数据模型
2.2.1 数据模型的概念
在现实世界中,人们对模型并不陌生。比如一张图、一组建筑沙盘、一架飞机航模,一眼看上去,就会使人联想到真实生活中对应的事物。模型是对现实世界中某个对象特征的模拟和抽象。
数据模型(Data Model)也是一种模型,它是对现实世界中数据特征及数据之间联系的抽象。也就是说,数据模型用来描述数据组成、数据关系、数据约束的抽象结构及其说明和对数据进行操作。由于计算机不可能直接处理现实世界中的具体事物,所以现实世界中的事物必须先转换成计算机能够处理的数据,即数字化,把具体的人、物、活动、概念等用数据模型来抽象表示和处理。所以数据模型是实现数据抽象的主要工具。
数据模型是数据库系统的核心和基础,决定了数据库系统的结构、数据定义语言和数据操作语言、数据库设计方法、数据库管理系统软件的设计和实现。它也是数据库系统中用于信息表示和提供操作手段的形式化工具。
数据模型应满足三个方面的要求:一是能比较真实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。
数据模型是现实世界数据特征的抽象,用于描述一组数据的概念和定义。数据模型是数据库中数据的存储方式,是数据库系统的基础。在数据库中,数据的物理结构又称数据的存储结构,就是数据元素在计算机存储器中的表示及其配置;数据的逻辑结构则是指数据元素之间的逻辑关系,它是数据在用户或程序员面前的表现形式,数据的存储结构不一定与逻辑结构一致。
2.2.2 数据处理三层抽象描述
不同的数据模型是提供给模型化数据和信息的不同工具。一种数据模型要很好地满足上述提到的三个方面的要求在目前尚很困难,在数据库系统中针对不同的使用对象和应用目的,通常采用逐步抽象的方法,在不同层次采用不同的数据模型。一般可分为概念层、逻辑层、物理层。
1.概念层
概念层是数据抽象级别的最高层,其目的是按用户的观点来对现实世界建模。概念层的数据模型称为概念数据模型,简称概念模型。概念模型独立于任何DBMS,但容易向DBMS所支持的逻辑模型转换。
常用的概念模型有实体-联系模型(Entity-Relationship Model,E-R模型)。
2.逻辑层
逻辑层是数据抽象的中间层,描述数据库数据整体的逻辑结构。这一层的数据抽象称为逻辑数据模型,简称数据模型。它是用户通过DBMS看到的现实世界,是基于计算机系统的观点来对数据进行建模和表示。因此,它既要考虑用户容易理解,又要考虑便于DBMS实现。不同的DBMS提供不同的逻辑数据模型
常见的数据模型有层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relation Model)和面向对象模型(Object Oriented Model)。
3.物理层
物理层是数据抽象的最底层,用来描述数据物理存储结构和存储方法。这一层的数据抽象称为物理数据模型,它不但由DBMS的设计决定,而且与操作系统、计算机硬件密切相关。物理数据结构一般都向用户屏蔽,用户不必了解其细节。
2.2.3 数据模型的要素
一般地讲,数据模型是严格定义的一组概念的集合。这些概念精确地描述了系统的静态特征、动态特征和完整性约束条件。因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。
1.数据结构
数据结构描述数据库的组成对象以及对象之间的联系。描述的内容有两类:一类是与对象的类型、内容、性质有关的,例如网状模型中的数据项、记录,关系模型中的域、属性、关系等;另一类是与数据之间联系有关的对象,例如网状模型中的系型。
数据结构是刻画一个数据模型性质最重要的方面。因此,在数据库系统中,人们通常按照其数据结构的类型来命名数据模型。例如,层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型和关系模型。总之,数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
● 数据结构是描述数据模型最重要的方面,通常按数据结构的类型来命名数据模型。例如,层次结构即树结构的数据模型叫作层次模型,网状结构即图结构的数据模型叫作网状模型,关系结构即表结构的数据模型叫作关系模型。
● 数据对象类型的集合包括与数据类型、性质及数据之间联系有关的对象,如关系型中的域、属性、关系、各种键等。
● 表示数据之间的联系有隐式的和显式的两类。隐式联系是指通过数据本身关联相对位置顺序表明联系;显式联系是指通过附加指针表明联系或直接表示。
2.数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。数据库主要有检索和更新(包括插入、删除、修改)两大类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。数据操作是对系统动态特性的描述。
3.数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。完整性规则主要描述数据结构中数据之间的语义联系、数据之间的制约和依存关系,以及数据动态变化规则。数据约束主要用于保证数据的完整性、有效性和相容性。
数据模型应该反映和规定本数据模型必须遵守的基本的通用的完整性约束条件。例如,在关系模型中,任何关系必须满足实体完整性和参照完整性两个条件(在关系数据库和数据库完整性等有关章节中将详细讨论这两个完整性约束条件)。此外,数据模型还应该提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。例如,在某大学的数据库中规定学生的成绩如果有6门以上不及格将不能授予学士学位,教授的退休年龄是65周岁,男职工的退休年龄是60周岁等。
2.3.4 数据模型与数据模式的区别
在第1章,我们讲过数据模式(Data Schema),它是以一定的数据模型对一个单位的数据的类型、结构及其相互间的关系所进行的描述。数据模式有型与值之分,型是指框架,而值是指框架中的实例。例如,学生记录的型为(姓名、性别、出生年月、籍贯、所在系别、入学时间),而(李一明,女,2000-10-25,江苏,计算机系,2017)是上述框架的一个值。
数据模型和数据模式的主要区别在于数据模型是描述现实世界数据的手段和工具。数据模式是利用这个手段和工具对相互间的关系所进行的描述,是关于型的描述,它与DBMS和OS硬件无关。
数据模型和数据模式都分了三个层次,其对应关系如下。
① 概念模式:是用逻辑数据模型对一个单位的数据的描述。
② 外模式:外模式也称子模式或用户模式,是与应用程序对应的数据库视图,是数据库的一个子集,是用逻辑模型对用户所用到的那部分数据的描述。
③ 内模式:是数据物理结构和存储方式的描述,是数据在数据库内部表示的方式。内模式也称存储模式。
概念模式、外模式和内模式都存于数据目录中,是数据目录的基本内容。DBMS通过数据目录管理和访问数据模式。一般数据库系统中用户只能看到外模式。