- 数据库系统:原理、设计与编程(MOOC版)
- 陆鑫 张凤荔 陈安龙
- 4928字
- 2020-06-28 00:53:38
1.1 数据库及其系统的概念
在信息时代,无论是信息系统,还是互联网服务,它们都需要对各类数据进行存储、管理、分析等。这些数据处理都离不开数据库及其数据库管理系统软件的支持。什么是数据库?数据库如何组织、存储数据?数据库管理系统如何创建、访问和管理数据库?这些都是学习者需要了解与掌握的数据库领域知识。
扫码预习
1.1.1 数据库的定义
任何信息系统的技术实现,均需要使用具有特定数据模型的系统容器组织与存储数据,同时还需要相应系统软件支持应用程序对系统容器中的数据进行共享操作。在计算机领域中,这类组织与存储数据的系统容器被称为“数据库”。例如,电子商务系统将商品信息、销售价格信息、销售服务信息等业务数据分别写入由多个相关数据表构成的数据库中进行数据存储。当客户访问电子商务系统时,系统就立刻将每个商品的信息从数据库中提取出来,并呈现在电子商务网站页面中。若客户需要购买商品,可以在电子商务系统中填写订单信息,并支付货款,以完成一次客户与商家的线上交易活动。在电子商务系统中,所有业务实现都依赖数据库的支持。同样,各个机构的办公管理系统、财务管理系统、人力资源管理系统、薪酬管理系统等业务信息系统都需要数据库来实现数据管理。因此,数据库是信息系统最重要的组成部分。
一些学者分别对数据库(DataBase)给出了更专业的定义。
定义1:简单来说,数据库是一种电子化的文件柜,用户可以对文件柜中的数据进行新增、检索、更新、删除等操作。
定义2:数据库是以一定方式存储在一起的、能为多个用户所共享的数据集合。
定义3:数据库是依照某种数据模型组织起来,并存放在存储器中的数据集合。这种数据集合具有如下特点:尽可能不重复存储数据,以优化方式为用户存取数据提供服务,其数据结构独立于使用它的应用程序,其数据的增、删、改和检索由统一软件进行管理和控制。
综合上述,我们可以将数据库理解为一种依照特定数据模型组织、存储和管理数据的文件集合。在信息系统中,数据库的基本作用是组织与存储系统数据,并为系统软件从中存取数据提供支持。与文件系统中普通数据文件有明显不同,数据库文件具有如下特点。
数据一般不重复存放。
可支持多个应用程序并发访问。
数据结构独立于使用它的应用程序。
对数据增、删、改、查操作均由数据库系统软件进行管理和控制。
1.1.2 数据模型
从数据库的定义可知,数据库使用了特定的数据模型来组织与存储数据,那么数据模型是什么,数据库一般使用哪种数据模型组织与存储数据,这些都是深入了解数据库原理的基本问题。
1.数据模型
数据模型是一种描述事物对象数据特征及其结构的形式化表示,通常由数据结构、数据操作、数据约束3个部分组成。
(1)数据结构用于描述事物对象的静态特征,其中包括事物对象的属性数据、数据类型、数据组织方式等。数据结构是数据模型的基础,数据操作和约束都是基于该数据结构进行的。
(2)数据操作用于描述事物对象的动态特征,即对事物对象的属性数据可进行的数据操作,如插入、更新、删除和查询等。在数据模型中,我们通常还需定义数据操作语言,如操作语句、操作规则及操作结果表示。
(3)数据约束用于描述事物对象的数据之间语义的联系,以及数据取值范围等规则,从而确保数据的完整性、一致性和有效性。
例如,在许多高级编程语言中,数据文件是一种典型的数据模型实例,其数据结构由若干数据记录行组成,数据记录之间彼此独立,每行数据记录又由若干数据项组成。在数据文件的编程访问中,我们可以移动指针定位来记录位置,然后对该记录数据进行读/写或删除处理。
2.数据库所使用的数据模型
传统数据库先后使用的数据模型主要有层次数据模型、网状数据模型、关系数据模型。这3种模型是按其数据结构命名的。它们之间的根本区别在于数据之间的联系方式不同,即数据记录之间的联系方式不同:层次数据模型以“树结构”方式表示数据记录之间的联系;网状数据模型以“图结构”方式来表示数据记录之间的联系;关系数据模型用“关系二维表”方式来表示数据记录之间的联系。
(1)层次数据模型
层次数据模型是数据库系统最早使用的一种数据模型,其数据结构是一棵包含多个数据结点的“有向树”。根结点在最上端,层次最高;子结点在下层;最低层为叶结点。每个数据结点存储一个数据记录,数据结点之间通过链接指针进行联系。当需要访问层次数据模型的数据时,需要使用树结点遍历方法进行数据记录的操作。例如,高校教务系统的层次数据模型如图1-1所示。
图1-1 高校教务系统的层次数据模型
层次数据模型的特征:该模型将数据结点组织成多叉树关系的数据结构,程序采用关键字检索来遍历访问各个数据结点。其优点:数据结构层次清晰,使用指针可遍历访问各个数据结点;数据结点的更新和扩展容易实现;关键字检索查询效率高。其缺点:系统数据结构局限于层次结构,缺乏灵活性;相同信息的数据结点可能会多次存储,数据冗余大;层次数据模型不适合于具有拓扑空间的数据组织。
层次数据模型的数据库产品出现于20世纪60年代末,最具代表性的数据库产品是IBM公司推出的IMS层次模型数据库系统。
(2)网状数据模型
网状数据模型以网络图表示数据结点之间的联系。该网状结构中每一个数据结点代表一个数据记录,结点之间的联系也使用链接指针来实现,但网状数据模型可以表示数据结点之间的多个从属关系,同时也可以表示数据结点之间的横向关系。网状数据模型扩展了层次数据模型的数据关系,其数据处理更方便。例如,高校教务系统的网状数据模型如图1-2所示。
图1-2 高校教务系统的网状数据模型
该模型采用链接指针来确定数据结点之间的联系,可支持具有多对多联系的数据结点组织方式。网状数据模型允许各个结点有多于一个父结点,也可以有一个以上的结点没有父结点。其优点:能明确而方便地表示数据间的复杂关系,数据冗余小。其缺点:结构较复杂,增加了数据查询和数据定位的困难;需要存储数据间联系的指针,使得数据存储量增大;数据更新不方便,除了对数据进行更新外,还必须修改关联指针。
网状数据模型的数据库产品出现于20世纪70年代,使用网状数据模型的典型数据库系统产品有Cullinet软件公司的IDMS、Honeywell公司的IDSII、Univac公司的DMS1100、HP公司的IMAGE等。
(3)关系数据模型
关系数据模型(简称关系模型)是以关系代数理论为基础,通过二维表结构来表示数据记录之间联系的数据模型。关系数据模型的每个二维表应具有关系特征,它们又被称为关系表。在关系数据模型中,多个二维表可通过相同属性列的一致性约束进行数据关联。例如,课程目录系统的关系数据模型如图1-3所示。
图1-3 课程目录系统的关系数据模型
在图1-3所示的关系数据模型实例中,“教师信息表”“课程信息表”“开课目录表”均为具有关系特征的二维表。每个关系表分别存放各自主题的数据,表之间通过具有相同列属性的数据值进行约束关联。其中,“开课目录表”的“工号”属性列与“教师信息表”的“工号”属性列的数据值必须保持一致。同样,“开课目录表”的“课程号”属性列的数据值也要求与“课程信息表”的“课程号”属性列的数据值匹配一致。因而,这些关系表之间通过相同属性列建立了约束关联。
关系数据模型的优点:数据结构简单、数据操作灵活;支持关系与集合运算操作;支持广泛使用的结构化查询语言(SQL);容易实现与应用程序的数据独立性。其缺点:局限于结构化数据组织与存储;支持的数据类型较简单;难以支持非结构化数据和复杂数据处理。
关系数据模型存取数据路径对用户隐蔽,使程序和数据具有高度的独立性。关系数据模型的数据操作语言为非过程化语言,具有集合处理能力,并能实现数据对象的定义、操纵、控制等一体化处理。因此,关系数据模型是目前数据库使用最广泛的数据模型,几乎所有的结构化数据库管理系统产品都采用关系数据模型实现数据库,如 Oracle 数据库软件、IBM DB2数据库软件、SYBASE数据库软件、SQL Server数据库软件、MySQL数据库软件等。
1.1.3 数据库系统的组成
数据库系统(DataBase Systems)是一种基于数据库进行数据管理与信息服务的软件系统。当数据库系统在应用领域实现数据存储、数据处理、数据检索、数据分析等功能时,数据库系统又被称为数据库应用系统。数据库系统由用户、数据库应用程序、数据库管理系统和数据库4个部分所组成,如图1-4所示。
图1-4 数据库系统组成
1.用户
在数据库系统中,用户可分为最终用户和DBA(DataBase Administrator)用户两类。最终用户通过操作数据库应用程序处理业务,并利用程序存取数据库信息。当然,数据库应用程序不能直接存取数据库信息,必须基于数据库管理系统(DataBase Management System, DBMS)提供的接口和环境才能访问数据库。DBA用户是一种专门进行数据库管理与运行维护的系统用户,该用户通过使用DBMS软件提供的管理工具对数据库进行创建、管理和维护,从而为数据库系统的正常运行提供支持与保障。
2.数据库应用程序
数据库应用程序是一种在DBMS支持下对数据库进行访问和处理的应用程序。它们以窗口或页面等表单形式来读取、更新、查询或统计数据库信息,从而实现业务数据处理与信息服务。数据库应用程序需要使用DBMS提供的标准接口(如ODBC、JDBC等)驱动程序连接数据库。在程序设计语言(如Java、C++、C#、VB、PB等)编程中,我们需要使用数据库访问接口实现对数据库的操作。
3.数据库管理系统
数据库管理系统是一类用于创建、操纵和管理数据库的系统软件。数据库管理系统与操作系统一样都属于系统平台软件。数据库管理系统一般具有如下功能:①创建数据库、数据库表及其他对象;②读/写、更新、删除数据库表数据;③维护数据库结构;④执行数据访问规则;⑤提供数据库并发访问控制和安全控制;⑥执行数据库备份和恢复。
从软件结构来看,数据库管理系统由操作界面层、语言翻译处理层、数据存取层、数据存储层组成,其层次结构如图1-5所示。
图1-5 数据库管理系统的层次结构
数据库管理系统的操作界面层由若干管理工具和应用程序API组成,它们分别为用户和应用程序访问数据库提供接口界面。语言翻译处理层对应用程序中的数据库操作语句进行语法分析、视图转换、授权检查、完整性检查、查询优化等处理。数据存取层处理的对象是数据表中的记录,它将上层的集合关系操作转换为数据记录操作,如对数据记录进行存取、维护存取路径、并发控制、事务管理、日志记录等。数据存储层基于操作系统提供的系统调用对数据库文件进行数据块读/写操作,并完成数据页、系统缓冲区、内外存交换、外存数据文件等系统操作管理。
目前,有较多的软件厂商提供了功能强大的数据库管理系统产品,如Microsoft公司提供的SQL Server数据库软件、Access数据库软件,Oracle公司提供的Oracle Database数据库软件,SAP Sybase公司提供的Sybase ASE数据库软件、Sybase Anywhere数据库软件,IBM公司提供的 DB2数据库软件。此外,不少开源组织机构也发布了 DBMS 软件,如 MySQL、PostgreSQL、MongoDB、InterBase等。
4.数据库
在数据库系统中,数据库是存放系统各类数据的容器。该容器按照一定的数据模型组织与存储数据。目前,在数据库系统应用中,使用最多的数据库软件产品是关系数据库软件。这类数据库采用关系数据模型实现数据组织与存储。例如,使用关系数据库进行成绩管理,该数据库由COURSE关系表、GRADE关系表和STUDENT关系表组成,各关系表之间的联系如图1-6所示。
图1-6 成绩管理关系数据库
在图1-6所示的成绩管理关系数据库示例中,该数据库的 COURSE 表、GRADE 表和STUDENT表均为关系表,它们之间通过公共列CourseID、StudentID建立了表之间的参照关联。因此,我们可以在成绩表(GRADE)中,针对某个学生(StudentID)参加某课程(CourseID)考试,给出具体课程的成绩分数(Score)值。
在数据库中,除了存放用户数据外,我们还需要存放描述数据库结构的元数据。例如,在关系数据库中,各个关系表的表名称、列名称、列数据类型、数据约束规则等都是元数据,这些描述数据库结构的数据需要存放在数据库的系统表中。图1-7给出了关系数据库存储的主要数据信息类型。
图1-7 关系数据库存储的主要数据信息类型
在关系数据库中,数据库元数据、索引数据、运行数据等存放在系统表中,用户数据则只能存放在用户表中。
课堂讨论——本节重点与难点知识问题
1.如何区分数据库、数据库管理系统、数据库应用系统、数据库系统?
2.在数据库中,数据模型有何作用?它有哪些组成部分?
3.在数据库技术发展阶段中,先后采用过哪些数据模型?各有什么特点?
4.举例说明哪些典型数据库软件产品或开源系统采用关系数据模型?
5.数据库系统有哪几个组成部分?各个部分有何作用?
6.什么是元数据?它是如何产生的,存储在哪里?