数据库系统(1):数据库简介
1. 基于文件的系统
基于文件的系统 ( $Traditional\ \ File-Based\ \ Systems$ ) 是一组为终端用户提供服务的应用程序,每一个程序定义和管理它自己的数据。相较于使用纸质文件进行管理的手工文件系统,基于文件的系统更加高效。但是它未能集中存储组织机构的运行数据,而是采用了分散的方法,即每一个部门在数据处理 ( $DP$ ) 人员的帮助下存储和控制它们的数据。通过编写应用程序来管理和查询数据,具有程序-数据依赖性 ( $Program-data\ \ Dependence$ ) 。
1.1 术语
文件 ( $File$ ) 是一些记录 ( $Records$ ) 的简单集合,这些记录中包含逻辑上相关的数据。每一条记录包含一组逻辑上相关的一个或多个数据项/域 ( $Fields$ ) 。
1.2 局限性
- 数据被分离和孤立
数据被孤立在分离的文件中,如果要访问处于不同文件之间的数据,需要创建一个临时文件。 - 数据存在冗余
由于文件间的分离,有时需要重复记录一些数据。 - 数据存在依赖性
数据文件的物理结构和存储方式是由应用程序定义的,很难做出改变,也即程序-数据依赖性。 - 文件格式不相容
文件结构嵌入应用程序,因此由应用程序语言决定。难以兼容其他使用不同语言的文件结构。 - 需要不断更改应用程序
完全依赖于开发人员,要求开发人员以编程方式实现所有查询和表。如果查询需求发生了变化,需要重新编写程序或更改文件。
2. 数据库方法
基于文件的系统存在许多问题,总结原因是:
- 数据内嵌应用程序
- 无法实现程序规定之外的操作
因此我们需要一种更加高效的方法,数据库 ( $Database$ ) 和 数据库管理系统 ( $Database\ \ Management\ \ System,\ \ DBMS$ ) 应运而生。
2.1 数据库
数据库是为满足某个组织机构的信息要求而设计的一个逻辑相关数据及其描述的共享集合。在数据库内,所有的数据项都被集中起来,具有很少的冗余,为所有部门共享的资源。在其内部不仅含有组织的运行数据,还含有对这些数据的描述。因此,有时数据库也被定义为一组集成记录的自描述的集合。
2.1.1 术语
对数据的描述称为系统目录 ( $system\ \ catalog$ ) /数据字典 ( $Data\ \ Dictionary$ ) /元数据 ( $Metadata$ ) 。也正是因为该功能,数据库具有程序-数据独立性 ( $Program-data\ \ Independence$ ) 。
数据库系统采用数据的定义与程序分离的方法,对象使用者只能看到对象的外部定义,不能看到其内部工作原理。以此,我们可以任意更改其内部定义而不影响到外部定义,这个优点称为数据抽象 ( $Data\ \ Abstraction$ ) 。
实体 ( $Entity$ ) 是一个独立的、将要在数据库中体现出来的对象。属性 ( $Attribute$ ) 描述我们想要记录的对象的某一方面的特性。联系 ( $Relationship$ ) 描述实体之间的关联。
2.2 数据库管理系统
DBMS
是一个支持用户对数据库进行定义、创建、维护及控制访问的软件系统。与基于文件的系统相比,数据的物理结构和存储结构是由DBMS
定义的。
2.2.1 功能
- 通过使用数据定义语言 ( $Data\ \ Definition\ \ Language$, $DDL$ ) ,用户可以指定数据类型、数据结构以及被存储到数据库中的数据的约束;
- 通过使用数据操作语言 ( $Data\ \ Manipulation\ \ Language$, $DML$ ) ,用户可以在数据库中进行增删改查操作。由于集中存放所有的数据和数据描述,因此允许
DML
提供给一个对这些数据进行一般查询的机制,称为查询语言 ( $Query\ \ Language$ ) ,最常见的查询语言是结构化查询语言 ( $Structured\ \ Query\ \ Language$, $SQL$ ) ; - 提供数据库的受控访问。
- 安全系统,禁止未授权的用户访问数据库
- 完整性系统,保持所有数据一致性
- 并发控制系统,允许数据库的共享访问
- 恢复控制系统,能够将数据库恢复到故障前的状态
- 用户访问目录,描述数据库中的数据
2.3 数据库应用程序
数据库应用程序是通过向DBMS
提出请求来与数据库交互的程序。
2.3.1 视图
视图 ( $View$ ) 是数据库的一个子集,用于查看数据。使用视图的优点:
- 提供保密级别,可以将一些用户不能查看的数据排除在外
- 提供一个自定义数据库外观的机制
- 动态,当数据库改变时仍可以查询数据,有助于提高程序-数据独立性。
3. DBMS
环境的组成部分
- 硬件
DBMS
和应用程序的运行要求硬件支撑,可以是一台个人计算器或者是计算机连接的网络,有些DBMS
只能在特定的系统上运行。一般DBMS
都对内存和外存具有一个最低要求。 - 软件
软件包含DBMS
、DBMS
应用程序和操作系统,如果是在网络中使用,还包括网络软件。 - 数据
从用户的观点来看,数据是DBMS
环境中最重要的部分,在机器和人之间起到了桥梁的作用。数据库结构称为模式 ( $Schema$ ) ,模式包含四个文件/表 ( $Table$ ) ,表中存储字段/属性。 - 过程
过程是对数据库的设计和使用进行控制的一组命令和规则。系统用户和数据库管理人员要求提供使用和运行DBMS
的文档形式的过程说明。 - 人
- 管理数据资源的数据管理员 ( $DA$ );
- 负责数据库的物理实现的数据库管理员 ( $DBA$ );
- 负责标识数据、数据之间联系以及对存储到数据库的数据的约束/业务规则 ( $Business\ \ Rules$ ) 的逻辑数据库设计人员 ( $Logical\ \ Database\ \ Designer$ );决定逻辑数据库的设计如何以武力的形式实现的物理数据库设计人员 ( $Physical\ \ Database\ \ Designer$ )。两者统称为数据库设计人员;
- 应用开发人员 ( $Application\ \ Developers$ ) 开发满足终端用户功能需求的应用程序;
- 终端用户 ( $End-Users$ ) ,包括不了解
DBMS
的简单用户 ( $Naive\ \ User$ ) 和对数据库结构与DBMS
相当熟悉的熟练用户 ( $Sophisticated\ \ Users$ )。
4. DBMS
的优点和缺点
4.1 优点
- 受控的数据冗余;
- 数据一致性;
- 相同数据量表示更多信息;
- 数据共享;
- 增强的数据完整性;
完整性指的是数据的有效性和一致性,通常使用完整约束进行表达,约束指的是数据库不能违反的一致性规则。 - 增强的安全性;
- 强制执行标准;
- 经济合算的规模;
- 平衡各种需求冲突;
- 增强的数据可访问性和响应性;
- 提高生产率;
- 通过数据独立性增强可维护性;
DBMS
将数据从应用程序中分离出来,使数据描述的改变不再影响应用程序,这就是数据独立性 ( $Data-Independence$ )。 - 提高并发性;
- 增强的备份和恢复服务。
4.2 缺点
- 复杂;
- 体积大;
- 昂贵;
- 需要附加的硬件专门用于存储和运行;
- 转化费用高。与其将现有应用转为可在
DBMS
和硬件上运行的应用,不如购买新的DBMS
和硬件; - 性能低。
DBMS
需要满足不同用途因而性能较低; - 增加了系统的脆弱性,任何组成部分的故障都可能导致停止运行。