> For the complete documentation index, see [llms.txt](https://lewiszlw.gitbook.io/notebooks/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lewiszlw.gitbook.io/notebooks/blogs/history/shu-ju-ku-xu-lun.md).

# 数据库绪论

## 数据库系统概述

### 四个基本概念

* 数据（Data）：描述事物的符号记录称为数据。
* 数据库（DateBase,DB）：数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存，具有较小的冗余度、较高的数据独立性和易扩展性，并可为各种用户共享。
* 数据库管理系统（DateBase Management System,DBMS）：数据库管理系统是位于用户和操作系统之间的一层数据管理软件。主要功能：数据定义功能，数据组织、存储和管理，数据操作功能，数据库的事务管理和运行管理，数据库的建立和维护功能等。
* 数据库系统（DateBase System,DBS）：数据库系统是由数据库、数据库管理系统（及其应用开发工具）、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

### 数据管理技术的产生和发展

1.人工管理阶段。 2.文件系统阶段。 3.数据库系统阶段：从文件系统到数据库系统标志着数据管理技术的飞跃。

### 数据库系统的特点

#### 数据结构化

数据库系统实现整体数据的结构化，这是数据库的主要特征之一，也是数据库系统与文件系统的本质区别。所谓“整体”结构化是指数据库中的数据不再仅仅针对某一个应用，而是面向整个组织或企业；不仅数据内部是结构化的，而且整体是结构化的，数据之间是具有联系的。

#### 数据的共享性高、冗余度低且易扩充

数据共享可以大大减少数据冗余，节约存储空间。数据共享还能够避免数据之间的不相容性与不一致性。

#### 数据独立性高

物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的。 逻辑独立性是指用户的应用程序与数据库的逻辑结构时相互独立的。

#### 数据由数据库管理系统统一管理和控制

1.数据的安全性保护：数据的安全性是指保护数据以防止不合法使用造成的数据泄密和破坏。 2.数据的完整性检查：数据的完整性检查是指数据的正确性、有效性和相容性。 3.并发控制：对多用户的并发操作进行控制和协调。 4.数据库恢复：将数据库从错误状态恢复到某一已知的正确状态的功能。

综上所述，数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享，具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据进行统一控制，以保证数据的完整性和安全性，并在多用户同时使用数据库时进行并发控制，在发生故障后对数据库进行恢复。 数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。

## 数据模型

数据模型也是一种模型，它是对现实世界数据特征的抽象。数据模型是数据库系统的核心和基础。

### 两类数据模型

第一类是**概念模型**，第二类是**逻辑模型和物理模型**。 第一类概念模型，也称信息模型，它是按用户的观点来对数据和信息建模，主要用于数据库设计。 第二类的逻辑模型主要包括层次模型、网状模型、关系模型、面对对象数据模型、对象关系数据模型、半结构化数据模型等。它是按计算机系统的观点对数据建模，主要用于数据库管理系统的实现。 第二类的物理模型是对数据最底层的抽象，它描述数据在系统内部的表示方式和存取方法，或在磁盘或磁带上的存储方式和存取方法，是面向计算机系统的。

### 概念模型

#### 信息世界中的基本概念

1.实体：客观存在并可相互区别的事物称为实体。例如，一个职工，一个学生，一次选课等。 2.属性：实体所具有的某一特性称为属性。例如，学生实体可以由学号、姓名、性别等属性组成。 3.码：唯一标识实体的属性集称为码。例如学号是学生实体的码。 4.实体型：用实体名及其属性名集合来抽象和刻画同类实体，称为实体型。例如，学生（学号，姓名，性别，出生年月，所在院系，入学时间）就是一个实体型。 5.实体集：同一类型实体的集合称为实体集。例如，全体学生就是一个实体集。 6.联系：实体内部的联系通常是指组成实体的各属性之间的联系，实体之间的联系通常是指不同实体集之间的联系（一对一、一对多、多对多等）。

#### 概念模型的一种表示方法：实体-联系方法

该方法用E-R图来描述现实世界的概念模型，E-R方法也成为E-R模型。

### 数据模型的组成要素

数据模型通常由数据结构、数据操作和数据的完整性约束条件三部分组成。

#### 数据结构

数据结构描述数据库的组成对象以及对象之间的联系。

#### 数据操作

数据操作是指对数据库中各种对象（型）的实例（值）允许执行的操作的集合，包括操作及有关的操作规则。

#### 数据的完整性约束条件

数据的完整性约束条件是一组完整性规则。

### 常用的数据模型

主要的逻辑数据模型有：层次模型、网状模型、关系模型、面对对象数据模型、对象关系数据模型、半结构化数据模型。其中层次模型和网状模型统称为格式化模型。 在格式化模型中数据结构的单位是基本层次模型。所谓基本层次模型是指两个记录以及它们之间的一对多（包括一对一）的联系。

### 层次模型

#### 层次模型的数据结构

在数据库中定义满足下面两个条件的基本层次联系的集合为层次模型： 1.有且只有一个结点没有双亲结点，这个结点称为根结点； 2.根以外的其他结点有且只有一个双亲结点。

层次模型像一棵倒立的树，结点的双亲是唯一的。

#### 层次模型的数据操纵与完整性约束

层次模型的数据操纵主要有查询、插入、删除和更新。进行插入、删除、更新操作时要满足层次模型的完整性约束条件。

#### 层次模型的优缺点

优点有：

* 数据结构比较简单清晰。
* 数据库的查询效率高。
* 提供了良好的完整性支持。

缺点有：

* 现实世界中很多联系是非层次性的，如结点之间具有多对多联系，不适合用层次模型。
* 如果一个结点具有多个双亲结点等，用层次模型表示这类联系就很笨拙。
* 查询子女结点必须通过双亲结点。
* 由于结构严密，层次命令趋于程序化。

### 网状模型

网状数据模型的典型代表是DBTG系统，亦称CODASYL系统。

#### 网状模型的数据结构

在数据库中，把满足以下两个条件的基本层次联系集合称为网状模型： 1.允许一个以上的结点无双亲。 2.一个结点可以有多于一个的双亲。

从定义可以看出，层次模型中子女结点与双亲结点的联系是唯一的，而在网状模型中这种联系可以不唯一。

#### 网状模型的数组操纵和完整性约束

例如，DBTG在模式数据定义语言中提供了定义DBTG数据库完整性的若干概念和语句，主要有： 1.支持记录码概念。 2.保证一个联系中双亲记录和子女记录之间是一对多的联系。 3.可以支持双亲记录和子女记录之间的某些约束条件。

#### 网状模型的优缺点

优点有：

* 能更为直接地描述现实世界。
* 具有良好的性能，存储效率较高。

缺点有：

* 结构比较复杂。
* 网状模型的DDL、DML复杂，并且要嵌入某一种高级语言中，用户不容易掌握，不容易使用。
* 由于记录之间之间的联系是通过存取路径实现的，应用程序在访问数据时必须选择适当的存取路径，因此用户必须了解系统结构的细节，加重了编写应用程序的负担。

### 关系模型

关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。

#### 关系模型的数据结构

从用户观点看，关系模型由一组关系组成。每个关系的数据结构是一张规范化的二维表。相关的术语：

* 关系：一个关系对应通常说的一张表。
* 元组：表中的一行即为一个元组。
* 属性：表中的一列即为一个属性。
* 码：也称为码键。表中的某个属性组，它可以唯一确定一个元组。
* 域：域是一组具有相同数据结构的值的集合。例如性别的域是（男，女）。
* 分量：元组中的一个属性值。
* 关系模式：对关系的描述，一般表示为：关系名（属性1，属性2，...，属性n）。关系模式的要求关系必须是规范化的，最基本的一条是，关系的每一个分量必须是一个不可分的数据项，也就是说，不允许表中还有表。

#### 关系模型的数据操纵与完整性约束

数据操纵主要包括查询、插入、删除和更新数据。完整性约束条件包括三大类：实体完整性、参照完整性和用户定义的完整性。

#### 关系模型的优缺点

优点：

* 关系模型与格式化模型不同，它是建立在严格的数学概念的基础上的。
* 关系模型的概念单一，所以其数据结构简单、清晰、用户易懂易用。
* 关系模型的存取路径对用户透明，从而具有更高的数据独立性、更好的安全保密性，也简化了程序员的工作和数据库开发建立的工作。

## 数据库系统的结构

### 数据库系统模式的概念

在数据模型中有“型”（type）和“值”（value）的概念。型是指对某一类数据的结构和属性的说明，值是型的一个具体赋值。模式是数据库中全体数据的逻辑结构和特征的描述，它仅仅涉及型的描述，不涉及具体的值。模式的一个具体指称为模式的一个实例。同一个模式可以有很多实例。

### 数据库系统的三级模式结构

数据库系统的三级模式结构是指数据库系统是由外模式、模式和内模式三级构成。 ![数据库绪论1](http://ofolh8dcq.bkt.clouddn.com/%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A6%82%E8%AE%BA1.jpg)

#### 模式（schema）

模式也称逻辑模式，是数据库中全体数据的逻辑结构和特征的描述，是所有用户的公共数据视图。

#### 外模式（external schema）

外模式也称子模式或用户模式，它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述，是数据库用户的数据视图，是与某一应用有关的数据的逻辑表示。

#### 内模式（internal schema）

内模式也称存储模式，一个数据库只有一个内模式。它是数据物理结构和存储方式的描述，是数据在数据库内部的组织方式。

### 数据库的二级映像功能和数据独立性

#### 外模式/模式映像

对于每一个外模式，数据库系统都有一个外模式/模式映像，它定义了该外模式与模式之间的对应关系。当模式改变时（例如增加新的关系、属性或改变属性的数据类型等），由数据库管理员对各个外模式/模式的映像作相应的改变，可以使外模式保持不变。应用程序是依据数据的外模式编写的，从而应用程序不必修改，保证了数据与程序的逻辑独立性，简称数据的逻辑独立性。

#### 模式/内模式映像

数据库只有一个模式，也只有一个内模式，所以模式/内模式映像是唯一的，它定义了数据全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时（例如选用了另一种存储结构），由数据库管理员对模式/内模式映像做相应改变，可以使模式保持不变，从而应用程序也不必改变。保证了数据与程序的物理独立性，简称数据的物理独立性。 数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去。另外，由于数据的存取由数据库管理系统管理，从而简化了应用程序的编制，大大减少了应用程序的维护和修改。

## 数据库系统的组成

### 硬件平台和数据库

要求是：

* 要有足够大的内存，存放操作系统、数据库管理系统的核心模块、数据缓冲区和应用程序。
* 有足够大的磁盘或磁盘阵列等设备存放数据库，有足够大的磁带或光盘做数据备份。
* 要求系统有较高的通道能力，以提高数据传送率。

### 软件

主要包括：

* 数据库管理系统。
* 支持数据库管理系统运行的操作系统。
* 具有与数据库接口的高级语言及其编译系统，便于开发应用程序。
* 以数据库管理系统为核心的应用开发工具。
* 为特定应用环境开发的数据库应用系统。

### 人员

* 数据库管理员：①决定数据库中的信息内容和结构；②决定数据库的存储结构和存取策略；③定义数据的安全性要求和完整性约束条件；④监控数据库的使用和运行；⑤数据库的改进和重组、重构。
* 系统分析员和数据库设计人员。
* 应用程序员。
* 用户。

> 《数据库系统概论（第5版）》王珊 萨师煊 著
