1.1 数据库相关概念
数据库的概念诞生于20世纪60年代,随着信息技术和市场的快速发展,数据库技术层出不穷,数据库的数量和规模越来越大,其诞生和发展给计算机信息管理带来了一场巨大的革命。有数据的地方就有数据库。它无所不在,网站的背后、应用的内部、单机软件、区块链里,甚至在离数据库最远的Web浏览器中,也逐渐出现了其雏形(各类状态管理框架与本地存储)。数据库可以简单地只是内存中的哈希表、磁盘上的日志,也可以复杂到由多种数据系统集合而成。
1.1.1 数据库系统
数据库系统一般由4个部分组成。
(1)数据库(DataBase,DB):从字面上可以简单理解为存储数据的仓库。从专业的角度来说,数据库是指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可以被各类用户共享。
(2)硬件:构成计算机系统的各种物理设备,包括存储所需的外部设备。硬件的配置应满足整个数据库系统的需要。
(3)软件:包括数据库管理系统(DataBase Management System,DBMS)、支持DBMS运行的操作系统、配合DBMS进行数据管理、分析、展示的其他工具软件,以及支持多种语言进行应用开发的访问技术等。
(4)人员:主要有4类。第一类为系统分析员和数据库设计人员:系统分析员负责应用系统的需求分析和规范说明,他们和用户及数据库管理员一起确定系统的硬件配置,并参与数据库系统的概要设计。数据库设计人员负责数据库中数据的确定、数据库各级模式的设计。第二类为应用程序员,负责编写使用数据库的应用程序。这些应用程序可对数据进行检索、建立、删除或修改。第三类为数据库管理员(DataBase Administrator,DBA),负责创建、监控和维护整个数据库,使数据能被任何有权使用的人员有效使用。数据库管理员一般由业务水平较高、资历较深的人员担任。第四类为最终用户,他们利用系统的接口或查询语言访问数据库。
数据库管理系统是数据库系统的核心软件,是在操作系统的支持下工作,解决如何科学地组织和存储数据,如何高效获取和维护数据的系统软件。其主要功能包括:定义数据存储结构、提供数据的操纵机制、建立数据库、负责数据库的运行管理,以及维护数据库的安全性、完整性和可靠性。
数据库管理系统经历了30多年的发展演变,已发展成了一门内容丰富的学科,并且已形成了一个规模巨大、增长迅速的市场。常见的数据库管理系统软件有Oracle、MySQL、MS SQL Server、PostgreSQL、DB2、Access等。如图1-1所示,以下是2022年DB-Engines Ranking对各数据库受欢迎程度进行调查后的统计结果。
图1-1 各数据库管理系统受欢迎程度调查统计
1.1.2 关系型数据库
数据库中的数据是按照一定的数学模型组织、描述和存储的。数据模型是信息模型在数据世界中的表示形式,可分为三类:层次模型、网状模型和关系模型。
1.层次模型
层次模型是一种用树形结构描述实体及其之间关系的数据模型。在这种结构中,每一个记录类型都是用节点表示的,记录类型之间的联系则用节点之间的有向线段来表示。每一个双亲节点可以有多个子节点,但是每一个子节点只能有一个双亲节点。这种结构决定了采用层次模型作为数系组织方式的层次数据库系统只能处理一对多的实体联系,如图1-2所示。层次模型数据库管理系统是最早研制成功的数据库管理系统,这种数据库最成功的典型是由IBM公司研制的IMS(Information Management System)。
图1-2 系教师学生层次数据模型
2.网状模型
网状模型允许一个节点可以同时拥有多个双亲节点和子节点,如图1-3所示。与同层次模型相比,网状结构更具有普遍性,能够直接地描述现实世界的实体。也可以认为层次模型是网状模型的一个特例。网状数据库系统在20世纪70年代至80年代初非常流行,近年来逐渐被关系数据库系统取代,在美国、加拿大等国家,由于历史原因,网状数据库的用户数仍然很多,如富士通公司M系列机上配制的AIM系统、UNIVAC上配制的DMS1100、HONEYWELL公司机器上配制的IDS系统和CINCON的TOTAL等。
图1-3 系教务关系网状数据模型
3.关系模型
关系模型是采用二维表格结构表示实体类型及实体间关系的数据模型,如图1-4所示,它的基本假定是所有数据都表示为数学上的关系。因为关系模型简单明了,具有坚实的数学理论基础,所以一经推出就受到了学术界和产业界的高度重视和广泛响应,并很快成为数据库市场的主流。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型,数据库领域当前的研究工作大多以关系模型为基础。主流的关系数据库有Oracle、MySQL、MS SQL Server、PostgreSQL、IBM DB2、SQLite等。
图1-4 教师和课程关系表
在关系模型中,基本数据结构就是二维表,不用像层次或网状那样的链接指针。记录之间的联系是通过不同关系中同名数据来体现的。例如,要查找“好谷”教师所授课程,可以先在教师关系中根据姓名找到教师编号“S8003”,然后在课程关系中找到教师编号“S8003”对应的课程名即可。通过上述查询过程,同名属性教师编号起到了连接两个关系的纽带作用,教师编号也称为公共属性。由此可见,关系模型中的各个关系模式不应当是孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要求。关系数据库是指对应于一个关系模式的所有关系的集合。例如,在一个教务管理关系数据库中,包含教师关系、课程关系、学生关系、任课关系、成绩关系等。
关系模型结构中的相关名词概念说明如下,如图1-5所示。
图1-5 关系模型结构各名词示意图
• 表:关系数据库的表采用二维表格来存储数据,是一种按行与列排列的具有相关信息的逻辑组,它类似于Excel工作表。一个数据库可以包含任意多个数据表。在用户看来,一个关系模型的逻辑结构是一张二维表,这个二维表就叫关系,通俗地说,一个关系对应一张表。
• 记录:表中的一行即为一个元组,或称为一条记录。一般一条记录对应一个实体的相关信息。
• 字段:数据表中的每一列称为一个属性或字段,表是由其包含的各种字段定义的,每个字段描述了它所含有的数据的意义,数据表的设计实际上就是对字段的设计。在创建数据表时,为每个字段分配一个数据类型,定义它们的数据长度和其他特征。
• 属性值:行和列的交叉位置表示某个属性值,如图1-4中“MySQL”就是课程名的属性值。
• 域:属性的取值范围(例如,性别的域是男或女)。
• 主键:关键字也称主关键字,或简称主键,是表中用于唯一确定一个元组的数据。关键字用来确保表中记录的唯一性,可以是一个字段或多个字段,常用作一个表的索引字段。每条记录的关键字都是不同的,因而可以唯一地标识一条记录。例如,教师编号是教师关系表的主键。