数据库基础(二)——数据模型与数据结构

这是第二篇笔记

第一章简单的介绍了关于数据库的一些常识,数据、数据库等基本概念、两种数据管理技术的比较、对比,也简单介绍了数据的独立性和数据库系统的具体组成。那么,这篇文章总结的是第二章的内容,具体将要总结数据模型的基本概念和数据库的结构,关于程序与数据相互独立的基本原理。

数据和数据模型

数据与信息

数据,是数据库中存储的基本概念;信息,是用来描述客观世界事物的信息。我们把事物的特征抽象出来,把这些信息写成一行数据,就成为了一个记录。

我们将描述事物的符号记录称为数据,从数据中提炼出来的有意义的内容称为信息。数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。
而数据库中的数据,具有动态特征和静态特征两个方面。

  1. 静态特征。包括数据额基本结构、数据间的联系以及对数据取值范围的约束。
  2. 动态特征。指对数据可以进行的操作以及操作规则。一般就是指增删改查。

数据模型

数据模型是一种对现实世界数据特征的抽象。数据库中用数据模型这个工具来抽象表示和处理现实世界中的数据和信息。为了让数据模型既可以面向现实世界,又面向机器世界,一般要求其满足三个方面:

  1. 能够真实地模拟现实世界。构建模型是为了真是形象地表达现实世界的情况。
  2. 容易被人理解。
  3. 能够方便在计算机上实现。

当然,同一个模型很难实现三方面要求。所以数据库要根据不同情况,采用不同的数据模型。按应用分类,模型要分为两大类,分别属于两个层次。

分类 概念层数据模型 组织层数据模型
又名 概念模型/信息模型 组织模型
建模方式 从数据应用语义来抽取现实世界中有价值的数据,并按用户的观点对数据进行建模 以数据的组织形式来描述数据,主要从计算机系统的观点对数据进行建模
和所使用的数据库管理系统是否相关 无关 相关
实现方式 无关 主要采用了以下组织方式:层次模型、网状模型、关系模型、对象-关系模型

从现实世界到机器世界的过程如下图所示
1
由图可知,概念层模型实际上只是一个中间层,机器世界实现的最终目的是反映和描述现实世界。

概念层数据模型

基本概念

概念层数据模型是现实世界到信息世界的第一层抽象,一方面应具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面还应该简单清晰和易于被用户理解。

常用的概念层数据模型有实体-联系(E-R模型)、语义对象模型。最常用的就是E-R模型。

E-R模型

E-R方法的实用工具称为E-R图,他所描述的信息结果称为企业模式。该模型主要涉及实体、属性和联系三方面内容。

  1. 实体:具有公共性质,并可以相互去分的现实世界对象的集合。E-R图中使用矩形边框表示。
  2. 属性:属于一个实体的所有实例都具有相同的性质和特征。E-R图中用圆角矩形表示。在实体的属性中,能够唯一标识实体的一个或最小的一组属性称为属性的标识属性
  3. 联系:分为实体内部和实体之间,都指的是属性之间的联系。E-R图中用菱形边框表示。
    两个实体之间的联系通常有三类:
一对一联系
(1:1)
实体A中的每个实例在实体B中至多有一个(或没有)实例与之关联,反之亦然。
一对多联系
(1:n)
实体A中的每个实例在实体B中有n(n>=0)个实例与之关联,而实体B中的每个实例在实体A中最多只有一个实例与之关联
多对多联系
(n:n)
实体A中的每个实例在实体B中有n(n>=0)个实例与之关联,反之亦然

组织层数据模型

主要分为层次模型、网状模型、面向对象模型和对象关系模型。前两者称为非关系模型,已逐渐被淘汰

层次数据模型

使用树形结构表示实体和实体之间的联系,这种联系是一对多的。层次模型有两点限制:1. 有且仅有一个节点无父节点,及树的根2. 其他节点有且仅有一个父节点

层次模型的一个基本特点是:任何一个给定的记录值只有从层次模型的根部开始按路径查看时,才能明确其含义,任何子节点都不能脱离父节点而存在。

网状数据模型

去掉层次模型中的两点限制,允许一个以上的节点无父节点,并且每个子节点可以有多个父节点,这便构成了网状模型。这种联系可以是多对多的。显然网状数据模型和层次数据模型无论逻辑结构还是物理结构都十分相似,只是网络数据模型更为复杂罢了。

关系数据模型

目前最为重要的一种数据模型。实体间的联系不再通过指针来实现。在关系数据库中,记录仅仅构成关系,关系之间的联系是靠语义相同的字段值表达的。

面向对象数据模型

面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为。面向对象数据库通过逻辑包含来维护联系。

数据库结构

数据库的结构从不同角度层次考虑是不同的,比如从管理角度看,数据库通常采用三级模式结构,这就是内部的系统结构;而从最终用户角度看,结构分为集中式结构、文件服务器结构、客户/服务器结构等,这是外部结构。

此处讨论的是内部结构。

模式的基本概念

组织层数据模型描述数据的组织形式,模式是用给定的数据模型对具体数据的描述。

我认为,模式其实有点类似于“类”的概念,首先,它仅仅描述“型”,不涉及具体的值。比如关系模式就是关系的“型”或说是元组的结构共性的描述,实际上对应的是关系表的表头。
其次,模式的一个具体值称为模式的一个实例,一个模式可以有多个实例,模式稳定而实例变动。

三级模式结构

三级模式的三级指的是外模式、模式和内模式
2

模式 描述 对应到关系数据库
外模式 又称为用户模式和子模式,内容来源于模式。是面向用户的对整体数据的局部描述。是模式的子集或局部重构,对不同用户有不同的外模式的描述,是保证数据库安全的一个措施 外部视图
模式 又称为逻辑模式或概念模式,是对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。是数据库结构的中间层,及不涉及物理存储细节,也不涉及具体应用程序。模式由概念记录类型的值构成,概念记录是数据的一种逻辑表达,是数据库数据在逻辑级上的逻辑表达 关系数据库管理系统提供模式定义语言DDL来定义数据库的模式
内模式 又称为组织模式,是整个数据库的底层描述,描述了数据的存储结构,但不涉及物理记录的形式,不考虑具体设备。 内模式不是关系的

模式映像和数据独立性

为了实现数据库的三级模式的联系和转换,产生了两级映像:

  1. 外模式/模式映像 每个数据库有多个外模式和一个模式,每个外模式都有一个到模式的映像,定义了其与模式之间的对应关系。当模式改变时,调整映像,基于外模式编写的应用程序不会受影响
  2. 模式/内模式映像 定义了数据库的逻辑结构与物理存储之间的对应关系,该关系保存在数据库的系统表。

三级模式结构中,模式是数据库的中心和关键,独立于数据库的其他层。

数据库管理系统提供的两级映像保证了外模式的稳定性,从而保证了应用程序的稳定性。因为应用程序都是在外模式描述的数据结构上编写的。