1.2 数据模型
数据模型(data model)是对现实世界数据特征的抽象。
数据模型是数据库系统的核心和基础。
1.2.1 两类数据模型
数据模型应满足三方面要求:一是能比较真实地模拟现实世界,二是容易为人所理解,三是便于在计算机上实现。
根据模型应用的不同目的,可以将这些模型划分为两大类,它们分别属于两个不同的层次。第一类是概念模型,第二类是逻辑模型和物理模型。
第一类概念模型(conceptual model),也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。
第二类中的逻辑模型主要包括层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象数据模型(object oriented data model)和对象关系数据模型(object relational data model)、半结构化数据模型(semistructured data model)等。它是按计算机系统的观点对数据建模,主要用于数据库管理系统的实现。
第二类中的物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法,是面向计算机系统的。物理模型的具体实现是数据库管理系统的任务,数据库设计人员要了解和选择物理模型,最终用户则不必考虑物理级的细节。
从现实世界到概念模型的转换是由数据库设计人员完成的;从概念模型到逻辑模型的转换可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成;从逻辑模型到物理模型的转换主要是由数据库管理系统完成的。
1.2.2 概念模型
01 信息世界中的基本概念
(1)实体(entity):客观存在并可以相互区别的事物称为实体。
(2)属性(attribute):实体所具有的某一特性称为属性。
(3)码(key):唯一标识实体的属性集称为码。
(4)实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。
(5)实体集(entity set):同一类型实体的集合称为实体集。
(6)联系(relationship):在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。
实体之间的联系有一对一、一对多和多对多等多种类型。
02概念模型的一种表示方法
实体-联系方法(Entity-Relationship approach),即E-R模型。
1.2.3 数据模型的组成要素
数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。
01数据结构
数据结构描述数据库的组成对象以及对象之间的联系。
数据结构是所描述的对象类型的集合,是对系统静态特性的描述。
02数据操作
数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。
数据操作是对系统动态特性的描述。
03数据的完整性约束条件
数据的完整性约束条件是一组完整性规则。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。
1.2.4 常用的数据模型
层次模型(hierarchal model)
网状模型(network model)
关系模型(relational model)
面向对象数据模型(object oriented data model)
对象关系数据模型(object relational data model)
半结构化数据模型(semistructure data model)
1.2.5 层次模型
层次模型是数据库系统中最早出现的数据模型,层次数据库系统采用层次模型作为数据的组织方式。层次模型用树形结构来表示各类实体以及实体间的联系。
01层次模型的数据结构
在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型:
>>有且只有一个结点没有双亲结点,这个结点称为根节点;
>>根以外的其他结点有且只有一个双亲结点。
图3 一个层次模型的示例
02层次模型的特点
①结点的双亲是唯一的。
②只能直接处理一对多的实体联系。
③每个记录类型可以定义一个排序字段,也称为码字段。
④任何记录值只有按其路径查看时,才能显出它的全部意义。
⑤没有一个子女记录值能够摆脱双亲记录值而独立存在。
03层次模型的数据操纵
查询、插入、删除、更新
04层次模型的完整性约束条件
①无相应的双亲结点值就不能插入子女结点值。
②如果删除双亲结点值,则相应的子女结点值也被同时删除。
③更新操作时,应更新所有相应记录,以保证数据的一致性。
05层次模型的优点
①层次模型的数据结构比较简单清晰。
②查询效率高,性能优于关系模型,不低于网状模型。
③层次数据模型提供了良好的完整性支持。
06层次模型的缺点
①结点之间的多对多联系表示不自然。
②对插入和删除操作的限制多,应用程序的编写比较复杂。
③查询子女结点必须通过双亲结点。
④层次命令趋于程序化。
1.2.6 网状模型
网状数据库系统采用网状模型作为数据的组织方式。网状数据模型的典型代表是DBTG系统,亦称CODASYL系统。
01网状模型的数据结构
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
>>允许一个以上的结点无双亲。
>>一个结点可以有多于一个的双亲。
02表示方法(与层次数据模型相同)
实体型:用记录类型描述,每个结点表示一个记录类型(实体)。
属性:用字段描述,每个记录类型可包含若干个字段。
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系。
03网状模型与层次模型的区别
①网状模型允许多个结点没有双亲结点。
②网状模型允许结点有多个双亲结点。
③网状模型允许两个结点之间有多种联系(复合联系)。
④网状模型可以更直接地描述现实世界。
⑤层次模型实际上是网状模型的一个特例。
04网状模型中子女结点与双亲结点的联系
网状模型中子女结点与双亲结点的联系可以不唯一。
05网状模型的数据操纵与完整性约束
网状数据库系统(如DBTG)对数据操纵加了一些限制,提供了一定的完整性约束
①码:唯一标识记录的数据项的集合。
②一个联系中双亲记录与子女记录之间是一对多联系。
③支持双亲记录和子女记录之间某些约束条件。
06网状模型的优点
①能够更为直接地描述现实世界,如一个结点可以有多个双亲。
②具有良好的性能,存取效率高。
07网状模型的缺点
①结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。
②DDL、DML语言复杂,用户不容易使用
③记录之间联系是通过存取路径实现的,用户必须了解系统结构的细节。
1.2.7 关系模型
关系数据库系统采用关系模型作为数据的组织方式。1970年美国IBM公司San Jose研究员E.F.Codd首次提出了数据库系统的关系模型。
01关系模型的数据结构
(1)关系(Relation):一个关系对应通常说的一张表。
(2)元组(Tuple):表中的一行即为一个元组。
(3)属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名。
(4)主码(Key):也称码键。表中的某个属性组,它可以唯一确定一个元组。
(5)域(Domain):是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
(6)分量:元组中的一个属性值。
(7)关系模式:对关系的描述,一般表示为:关系名(属性1,属性2,···,属性n)
关系模型要求关系必须是规范化的,满足一定的规范条件。最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表。
02关系模型的数据操纵与完整性约束
关系模型的数据操纵主要包括查询、插入、删除和更新数据。
关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。
03关系模型的优点
(1)建立在严格的数学概念的基础上。
(2)概念单一,实体和各类联系都用关系来表示,对数据的检索结果也是关系。
(3)关系模型的存取路径对用户透明,具有更高的数据独立性,更好的安全保密性,简化了程序员的工作和数据库开发建立的工作。
04关系模型的缺点
(1)存取路径对用户透明,查询效率往往不如格式化数据模型。
(2)为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。