数据库原理:数据库系统概述
数据
数据(data)是描述事物的符号记录,具有多种表现形式,例如数字、文字、图像、音频和视频等。数据在数据库中的存在往往是有结构的,例如对于题目信息,一条题目记录将会包含题目名称、题干和题目分值等信息。
单纯的数据并不能表现出确切的含义,往往需要有语义对该数据的含义和功能进行解释。例如 36 这个数据可能是一本书的单价,也可能是一个班级的总人数,也有可能是某位同学某门课程的平时成绩。由此可见如果没有语义对数据的含义进行界定,数据本身能说明的事情是非常有限的。
数据库的发展
数据库的发展经历了3个主要阶段,分别是人工管理阶段、文件系统阶段和数据库系统阶段。
人工管理阶段
人工管理阶段在 20 世纪 50 年代中期以前,计算机主要用于科学计算,该阶段的应用程序和数据的关系如下图所示。
人工管理数据具有特点:
- 数据不保存:使用数据时才将数据输入,用完也不对数据进行保存;
- 应用程序管理数据数据:数据的存储和管理全部由应用程序自行设计,包括存储的形式和读写的方式都要由程序员自行开发;
- 数据不共享:数据都是基于某个应用程序而存在的,一组数据不能被其他的程序访问和使用;
- 数据不具有独立性:数据只能依托于应用程序存在而不能独立存在,数据的改动意味着对应的应用程序也需要做相应的改动。
文件系统阶段
文件系统阶段在 20 世纪 50 年代后期到 60 年代中期,这时硬件方面已有了磁盘等直接存取存储设备,且操作系统中已经有文件系统来管理数据处,该阶段的应用程序和数据的关系如下图所示。
用文件系统管理数据具有如下特点:
- 数据可以长期保存:数据长期保留在外存上反复被操作;
- 由文件系统进行数据管理:文件系统把数据组织成相互独立的数据文件,并且能够对文件进行管理和读写。
文件系统的缺点有:
- 数据共享性差,冗余度大:文件中的数据仍然是依托于具体的应用程序,当不同的应用程序仍然不能共享相同的数据;
- 数据独立性差:数据依赖于具体应用程序,因此当数据的存储形式和读写方式发生改变时,应用程序需要做对应的修改。
数据库系统阶段
数据库系统阶段在 20 世纪 60 年代后期以来,硬件方面已有大容量磁盘且价格下降,软件的开发成本增加,数据的开放性提升。数据规模量激增,尤其是到现在已经进入了大数据时代,不经每时每刻都产生大量数据,新的形式的数据也不断被创造。以文件系统作为数据管理手段显然不能满足应用的需求,统一管理数据的专门软件系统—数据库管理系统就被开发出来了。该阶段的应用程序和数据的关系如下图所示。
数据库
数据是数据库中存储的基本对象,而数据库(DB)就是存储数据的仓库。数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度,较高的数据独立性和可扩展性,可以被用户共享。开发者往往会收集关于某个方面的大量数据存储于数据库中,当需要时从数据库获取数据进行加工处理。简单地说,数据库的 3 大基本特点为:永久存储、有组织和可共享。
数据库管理系统
数据库管理系统(DBMS)是用于操作和管理数据库的计算机基础软件,主要的功能是用于建立、使用和维护数据库。DBMS 的一些功能说明如下:
功能 | 说明 |
---|---|
定义数据 | 开发者可以用 DBMS 提供的数据库定义语言(DDL),对数据库存储的数据对象的组成和结构进行定义 |
组织、存储和管理数据 | DBMS 将以某种存取方式,以某种文件结构存储数据,通过合理的方式组织和管理数据,并且提供多种读取数据的方式 |
操作数据 | 用户通过 DBMS 可以对数据库进行基本的增、删、查、改的操作 |
事务管理和运行管理 | 管理数据库的建立、运用和维护等工作,保证各项事务能够正确运行,保证数据的安全性、完整性和并发使用,在发生错误时能有一定的恢复能力 |
数据库的建立和维护功能 | 包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等 |
其他功能 | 包括数据库管理系统与网络中其他软件系统的通信功能,数据库管理系统之间或和文件系统的数据转换功能,异构数据库之间的互访和互操作功能等 |
数据库系统
数据库系统(DBS)是由数据库、数据库管理系统、应用程序和数据库管理员(DBA)组成的,用于存储、管理、处理和维护数据的系统。数据库提供数据的存储功能,数据库管理系统提供数据的组织、存取、管理和维护等基础功能,数据库应用系统根据应用需求使用数据库,数据库管理员负责全面管理数据库系统。
数据库系统有数据结构化、共享性高且冗余度低、数据独立性高、统一管理和控制 4 个特点。
数据结构化
在文件系统中,文件中的记录内部具有结构,但是当应用程序使用其中的数据时还是要经过处理,开发的负担就被加重了。数据结构化后,数据和数据之间就不是彼此分裂的孤岛,数据之间的关系变得清晰。这就要求在描述数据时不仅要描述数据本身,还要描述数据之间的联系。同时开发者并不需要对数据做复杂的处理,需要使用时把数据查出来即可,并不需要为不同的数据写做不同的处理方式。例如对于在线做题程序,题目集的数据可以用如下方式结构化。
共享性高、冗余度低
数据不再依托于某个应用而存在,数据可以被多个用户、多个应用共享使用。数据共享可以大大减少数据冗余,节约存储空间。
数据独立性高
数据独立性包括数据的物理独立性和逻辑独立性。物理独立性是指用户的应用程序与数据库中数据的物理存储是相互独立的,也就是说应用程序不需要知道数据在存储介质中如何存在,只需要再逻辑上对数据进行使用。类似于 DAO 模式,我们不需要去关心底层究竟发生了什么,只需要调用对应的接口实现功能就行。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。也就是说数据的逻辑结构改变时用户程序也可以不变。
统一管理和控制
数据库的共享将会带来数据库的安全隐患,且当多个用户访问数据库时会带来并发控制问题。对于数据的安全性,数据库管理系统保护数据以防止不合法使用造成的数据泄密和破坏。对于数据的的完整性,能检查数据的完整性指数据的正确性、有效性和相容性,将数据控制在有效的范围内。对于并发,同时数据库系统对多用户的并发操作加以控制和协调。对于恢复功能,具有将数据库从错误状态恢复到某一已知的正确状态的功能。
数据库系统结构
从数据库系统内部的系统结构看,数据库系统通常采用三级模式结构。从数据库系统外部的体系结构看,数据库系统的结构分为单用户结构、主从式结构、分布式结构、客户-服务器、浏览器-应用服务器/数据库服务器多层结构等。
系统模式的概念
在数据模型中有型(type)是指对某一类数据的结构和属性的说明,值(value)是型的一个具体赋值。例如图书记录的型和值可以定义为:
型:(国际标准书号,书名,作者,价格)
值:(9787040406641,数据库系统概论,王珊,39.6)
模式(schema)是数据库中全体数据的逻辑结构和特征的描述,仅仅涉及型的描述而不涉及具体的值。模式的一个具体值称为模式的一个实例(instance),同一个模式可以有很多实例。例如在书城购物数据库模式中包含书籍记录、消费者记录和购书选课记录,现有一个具体的书城购物数据库实例,该实例包含了今年年学校中所有消费者购书的记录。模式是相对稳定的,反映的是数据的结构及其联系,而实例会随着数据的更新而相对变动,反映的是数据库某一时刻的状态。
三级模式结构
虽然实际的数据库管理系统产品种类很多,但它们在体系结构上通常都具有相同的特征,采用三级模式结构并提供两级映像功能。
数据库系统的三级模式是数据的三个抽象级别,由数据库系统进行数据的具体组织,用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。
模式结构 | 说明 |
---|---|
模式 | 也称逻辑模式,数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,不涉及数据的物理存储细节、硬件环境、应用程序和开发语言 |
外模式 | 也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示 |
内模式 | 也称存储模式,一个数据库只有一个内模式,是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式 |
为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统提供了两层映像。
映像 | 说明 |
---|---|
外模式/模式映像 | 每一个外模式,数据库系统都有一个外模式/模式映像定义了该外模式与模式之间的对应关系 |
模式/内模式映像 | 数据库中只有一个模式和一个内模式,模式/内模式映像定义了数据全局逻辑结构与存储结构之间的对应关系 |
对这两种映像进行修改,就可以保证逻辑独立性和物理独立性,使得数据的定义和描述可以从应用程序中分离。由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制。
独立性 | 说明 |
---|---|
逻辑独立性 | 当模式改变时(例如增加新的关系、新的属性、改变属性的数据类型等),只需要对各个外模式/模式的映像作相应改变,就可以使外模式保持不变,从而应用程序不必修改 |
物理独立性 | 当数据库的存储结构改变时(例如选用了另一种存储结构),只需要对模式/内模式映像作相应改变,可以使模式保持不变,从而应用程序也不必改变 |
数据库语言
数据库语言分为 6 种,分别是:
数据库语言 | 说明 |
---|---|
数据查询语言(DQL) | DQL 用于从表中获得数据,也称为“数据检索语句”,SELECT 可以说是 SQL 用得最多的操作了 |
数据操作语言(DML) | 被成为动作查询语言,用于对数据库的表进行增、删、改的操作,SQL 中分别是 INSERT,UPDATE 和 DELETE |
事务处理语言(TPL) | 确保被 DML 语句影响的表的所有行及时得以更新 |
数据控制语言(DCL) | 用于确定单个用户和用户组对数据库对象的访问 |
数据定义语言(DDL) | 用于在数据库中创建新表或删除表,为表加入索引,为表创建或删除列等 |
指针控制语言(CCL) | 用于对一个或多个表单独行的操作 |
在数据库技术中,编写应用程序的语言仍然是例如 C、Java 等高级语言,这些语言被称为宿主语言(或主语言,Host Language)。为了使程序员编程时既可以使用数据库语言又可使用常规的程序设计语言,数据库系统需要把数据库语言嵌入到宿主语言中。
数据库系统的组成
硬件和软件
由于数据库系统的数据量都很大,因此要有足够大的内存存放系统的核心模块和相关组件,也要有足够大的磁盘或磁盘阵列等设备存放数据库和数据备份。同时要求有较高的通道能力,以提高数据传送率。
数据库管理系统是为数据库的建立、使用和维护配置的系统软件,同时要有支持数据库管理系统运行的操作系统。需要具有与数据库接口的高级语言和编译系统,开发者通过开发工具进行程序设计。
相关人员
不同的人员涉及不同的数据抽象级别,具有不同的数据视图。
人员 | 说明 |
---|---|
数据库管理员 | 决定数据库中的信息内容和结构、决定数据库的存储结构和存取策略、定义数据的安全性要求和完整性约束条件、监控数据库的使用和运行、数据库的改进和重组重构 |
系统分析员和数据库设计人员 | 系统分析员负责应用系统的需求分析和规范说明,数据库设计人员负责数据库中数据的确定及数据库各级模式的设计 |
应用程序员 | 应用程序员负责设计和编写应用系统的程序模块,并进行调试和安装 |
最终用户 | 最终用户通过应用系统的用户接口使用数据库,还可以细分为偶然用户、简单用户和复杂用户 |
参考资料
《数据库系统概论(第5版)》,王珊 萨师煊 编著,高等教育出版社
百度百科:结构化查询语言