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