第1章 数据库基础
本章主要介绍数据库的相关概念,包括数据库系统的简介、数据模型、数据库的体系结构、常见关系数据库及Transact-SQL简介。通过本章的学习,读者应该掌握数据库系统、数据模型、数据库三级模式结构及数据库规范化等基本的概念,并了解常见的几种关系数据库及Transact-SQL语言。
本章要点
- 数据库系统的组成
- 数据模型
- 数据库三级模式及映射
- T-SQL
1.1 数据库系统简介
数据库系统简介
1.1.1 数据库技术的发展
数据库技术是应数据管理任务的需求而产生的。随着计算机技术的发展,人们对数据管理技术也不断地提出更高的要求,数据管理技术先后经历了人工管理、文件系统、数据库系统3个阶段,下面分别对这3个阶段进行介绍。
1.人工管理阶段
20世纪50年代中期以前,计算机主要用于科学计算。当时硬件和软件设备都很落后,数据基本依赖于人工管理。人工管理数据阶段具有如下特点。
(1)数据不保存。
(2)使用应用程序管理数据。
(3)数据不共享。
(4)数据不具有独立性。
2.文件系统阶段
20世纪50年代后期到60年代中期,硬件和软件技术都有了进一步发展,有了磁盘等存储设备和专门的数据管理软件(即文件系统),其具有如下特点。
(1)数据可以长期保存。
(2)由文件系统管理数据。
(3)共享性差,数据冗余大。
(4)数据独立性差。
3.数据库系统阶段
20世纪60年代后期以来,计算机应用于管理系统,而且规模越来越大,应用越来越广泛,数据量急剧增长,对共享功能的要求越来越强烈。这样使用文件系统管理数据已经不能满足要求,于是为了解决一系列问题,出现了数据库系统来统一管理数据。其满足了多用户、多应用共享数据的需求,比文件系统具有更明显的优点,标志着管理技术的飞跃。数据库系统阶段具有如下特点。
(1)可保存大容量数据。
(2)由数据库系统统一管理数据。
(3)提高了数据共享程度。
(4)保证了数据的独立性、安全性和完整性。
1.1.2 数据库系统的组成
数据库系统(Data Base System,DBS)是采用了数据库技术的计算机系统,是由数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)和软件平台(软件)5部分构成的运行实体。其中,数据库管理员(Data Base Administrator,DBA)是对数据库进行规划、设计、维护和监视等的专业管理人员,在数据库系统中起着非常重要的作用。
1.2 数 据 模 型
1.2.1 数据模型的概念
数据模型的概念
数据模型是数据库系统的核心与基础,是描述数据与数据之间的联系、数据的语义、数据一致性约束的概念性工具的集合。
数据模型通常是由数据结构、数据操作和完整性约束3部分组成的,分别介绍如下。
(1)数据结构:是对系统静态特征的描述,描述对象包括数据的类型、内容、性质和数据之间的相互关系。
(2)数据操作:是对系统动态特征的描述,是对数据库中各种对象实例的操作。
(3)完整性约束:是完整性规则的集合。它定义了给定数据模型中数据及其联系所具有的制约和依存规则。
1.2.2 常见的数据模型
常见的数据模型
常用的数据库数据模型主要有层次模型、网状模型和关系模型,下面分别进行介绍。
(1)层次模型:用树型结构表示实体类型及实体间联系的数据模型称为层次模型,它具有以下特点。
① 每棵树有且仅有一个无双亲结点,称为根。
② 树中除根外的所有结点有且仅有一个双亲。
层次模型结构如图1-1所示。
(2)网状模型:用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。用网状模型编写的应用程序极其复杂,且数据的独立性较差。
网状模型结构如图1-2所示。
图1-1 层次模型
图1-2 网状模型
(3)关系模型:用二维表的形式表示实体和实体间联系的数据模型称为关系模型。在关系模型中,每个表有多个字段列和记录行,每个字段列有固定的属性(数字、字符、日期等)。关系模型的数据结构简单、清晰、具有很高的数据独立性,因此是目前主流的数据库数据模型。
关系模型的基本术语如下。
① 关系:一个二维表就是一个关系。
② 元组:就是二维表中的一行,即表中的记录。
③ 属性:就是二维表中的一列,用类型和值表示。
④ 域:每个属性取值的变化范围,如性别的域为{男,女}。
关系中的数据约束如下。
① 实体完整性约束:约束关系的主键中属性值不能为空值。
② 参照完整性约束:关系之间的基本约束。
③ 用户定义的完整性约束:它反映了具体应用中数据的语义要求。
关系模型示例图如图1-3所示。
学生信息表
学生姓名 |
年级 |
家庭住址 |
---|---|---|
张三 |
2015 |
成都 |
李四 |
2015 |
北京 |
王五 |
2015 |
上海 |
成绩表
学生姓名 |
课程 |
成绩 |
---|---|---|
张三 |
数学 |
100 |
张三 |
物理 |
95 |
张三 |
社会 |
90 |
李四 |
数学 |
85 |
李四 |
社会 |
90 |
王五 |
数学 |
80 |
王五 |
物理 |
75 |
图1-3 关系模型
1.2.3 关系数据库的规范化
关系数据库的规范化
范式是符合某一种级别的关系模式的集合,关系数据库的规范化理论认为:关系数据库中的每一个关系都要满足一定的要求,满足不同程度要求的为不同范式。根据满足规范的条件不同,范式可以分为多个等级:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、……、第N范式(BCNF)。其中,NF是Normal Form的缩写。一般情况下,只要把数据规范到第三范式标准即可满足需要。
1.第一范式(1NF)
在一个关系中,要消除重复字段,且各字段都应是最小的逻辑存储单位。第一范式是第二和第三范式的基础,是最基本的范式。第一范式包括下列指导原则。
数据组的每个属性只可以包含一个值。
关系中的每个数组必须包含相同数量的值。
关系中的每个数组一定不能相同。
在任何一个关系数据库中,第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。
如果数据表中的每一个列都是不可再分割的基本数据项——即同——列中不能有多个值——那么就称此数据表符合第一范式,由此可见第一范式具有不可再分解的原子特性。
在第一范式中,数据表的每一行只包含一个实体的信息,并且每一行的每一列只能存放实体的一个属性。比如,对于学生信息,不可以将学生实体的所有属性信息(如学号、姓名、性别、年龄、班级等)都放在一个列中显示,也不能将学生实体的两个或多个属性信息放在一个列中显示,学生实体的每个属性信息都要放在一个列中显示。
如果数据表中的列信息都符合第一范式,那么在数据表中的字段都是单一的,不可再分的。如表1-1就是不符合第一范式的学生信息表,因为“班级”列中包含了“系别”和“班级”两个属性信息,这样“班级”列中的信息就不是单一的,是可以再分的;而表1-2是符合第一范式的学生信息表,它将原“班级”列的信息拆分到“系别”列和“班级”列中。
表1-1 不符合第一范式的学生信息表
学 号 |
姓 名 |
性 别 |
年 龄 |
班 级 |
---|---|---|---|---|
9527 |
东*方 |
男 |
20 |
计算机系3班 |
表1-2 符合第一范式的学生信息表
学 号 |
姓 名 |
性 别 |
年 龄 |
系 别 |
班 级 |
---|---|---|---|---|---|
9527 |
东*方 |
男 |
20 |
计算机 |
3班 |
2.第二范式(2NF)
第二范式是在第一范式的基础上建立起来的,即满足第二范式必先满足第一范式。第二范式要求数据库表中的每个实体(即各个记录行)必须可以被唯一地区分。为实现区分各行记录通常需要为表设置一个“区分列”,用以存储各个实体的唯一标识。在学生信息表中,设置了“学号”列,由于每个学生的编号都是唯一的,因此每个学生可以被唯一地区分(即使学生存在重名的情况下),那么这个唯一属性列被称为主关键字或主键。
第二范式要求实体的属性完全依赖于主关键字,即不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。
例如,这里以“员工工资信息表”为例,若以(员工编码、岗位)为组合关键字(即复合主键),就会存在如下决定关系。
(员工编码,岗位)→(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)
在上面的决定关系中,还可以进一步拆分为如下两种决定关系。
(员工编码)→(决定)(姓名、年龄、学历)
(岗位)→(决定)(基本工资)
其中,员工编码决定了员工的基本信息(包括姓名、年龄、学历等),而岗位决定了基本工资,所以这个关系表不满足第二范式。
对于上面的这种关系,可以把上述两个关系表更改为如下3个表。
(1)员工档案表:EMPLOYEE(员工编码,姓名,年龄,学历)。
(2)岗位工资表:QUARTERS(岗位,基本工资)。
(3)员工工资表:PAY(员工编码、岗位、绩效工资、奖金)。
3.第三范式(3NF)
第三范式是在第二范式的基础上建立起来的,即满足第三范式必先满足第二范式。第三范式要求关系表不存在非关键字列对任意候选关键字列的传递函数依赖,也就是说,第三范式要求一个关系表中不包含已在其他表中包含的非主关键字信息。
所谓传递函数依赖,就是指如果存在关键字段A决定非关键字段B,而非关键字段B决定非关键字段C,则称非关键字段C传递函数依赖于关键字段A。
例如,这里以员工信息表(EMPLOYEE)为例,该表中包含员工编号、员工姓名、年龄、部门编码、部门经理等信息,该关系表的关键字为“员工编号”,因此存在如下决定关系:
(员工编码)→(决定)(员工姓名、年龄、部门编码、部门经理)
上面的这个关系表是符合第二范式的,但它不符合第三范式,因为该关系表内部隐含着如下决定关系:
(员工编码)→(决定)(部门编码)→(决定)(部门经理)
上面的关系表存在非关键字段“部门经理”对关键字段“员工编码”的传递函数依赖。对于上面的这种关系,可以把这个关系表(EMPLOYEE)更改为如下两个关系表。
(1)员工信息表:EMPLOYEE(员工编码,员工姓名、年龄、部门编码)。
(2)部门信息表:DEPARTMENT(部门编码,部门经理)。
对于关系型数据库的设计,理想的设计目标是按照“规范化”原则存储数据,因为这样做能够消除数据冗余、更新异常、插入异常和删除异常。
3种范式之间的关系如图1-4所示。
图1-4 3种范式之间的关系
1.2.4 关系数据库的设计原则
关系数据库的设计原则
数据库设计是指对于一个给定的应用环境,根据用户的需求,利用数据模型和应用程序模拟现实世界中该应用环境的数据结构和处理活动的过程。
数据库设计原则如下。
(1)数据库内数据文件的数据组织应获得最大限度的共享、最小的冗余度,消除数据及数据依赖关系中的冗余部分,使依赖于同一个数据模型的数据达到有效的分离。
(2)保证输入、修改数据时数据的一致性与正确性。
(3)保证数据与使用数据的应用程序之间的高度独立性。
1.2.5 实体与关系
实体与关系
在数据库领域中,客观世界中的万事万物都被称为实体。实体即是客观存在的事物,如高山、流水、学生、商店等;实体也可以是一些抽象的概念或地理名词,如精神生活、物质基础、长春市等。实体的特征(外在表现)称为属性,属性的差异能够区分同类实体。如一本书可以具备下列的属性:书名、大小、封面颜色、页数、出版社等,根据这些属性就可以在一堆书中找到所要找的书。
实体本身并不能被保存到数据库中,要保存客观世界的信息,必须将描述事物外在特征的属性保存在数据库中。例如,要管理员工信息,可以储存每一位员工的工号、姓名、性别、出生日期、出生地、家庭住址、联系电话等,其中工号是人为添加的一个属性,用于区分两个或多个因巧合(包括员工姓名)而属性完全相同的员工。
实体之间有3种关系,分别如下。
(1)一对一关系:是指表A中的一条记录确实在表B中有且只有一条相匹配的记录。在一对一关系中,大部分相关信息都在一个表中。
(2)一对多关系:是指表A中的行可以在表B中有许多匹配行,但是表B中的行只能在表A中有一个匹配行。
(3)多对多关系:是指关系中每个表的行在相关表中具有多个匹配行。在数据库中,多对多关系的建立是依靠第3个表(称做连接表)实现的,连接表包含相关的两个表的主键列,然后从两个相关表的主键列分别创建与连接表中的匹配列的关系。
1.3 数据库的体系结构
数据库的体系结构
数据库具有一个严谨的体系结构,这样可以有效地组织、管理数据,提高数据库的逻辑独立性和物理独立性。数据库领域公认的标准结构是三级模式结构。
1.3.1 数据库三级模式结构
数据库系统的三级模式结构是指模式、外模式和内模式,它们的关系如图1-5所示。
图1-5 数据库三级模式结构关系图
1.模式
模式也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。一个数据库只有一个模式。模式处于三级结构的中间层。
定义模式时不仅要定义数据的逻辑结构,而且要定义数据之间的联系,定义与数据有关的安全性、完整性要求。
2.外模式
外模式也称用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式是模式的子集,一个数据库可以有多个外模式。例如,用户使用select查询到的表数据就是外模式。
外模式是保证数据安全性的一个有力措施。
3.内模式
内模式也称存储模式,一个数据库只有一个内模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。例如,用户创建的数据表中定义的数据类型、索引等,都属于内模式。
1.3.2 三级模式之间的映射
为了能够在内部实现数据库的3个抽象层次的联系和转换,数据库管理系统在三级模式之间提供了两层映射,分别为外模式/模式映射和模式/内模式映射,下面分别介绍。
1.外模式/模式映射
同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映射。当模式改变时,由数据库管理员对各个外模式/模式映射做相应的改变,可以使外模式保持不变。这样,依据数据外模式编写的应用程序就不用修改,其保证了数据与程序的逻辑独立性。
2.模式/内模式映射
数据库中只有一个模式和一个内模式,所以模式/内模式映射是唯一的,它定义了数据库的全局逻辑结构与存储结构之间的对应关系。当数据库的存储结构改变时,由数据库管理员对模式/内模式映射进行相应的改变,可以使模式保持不变,应用程序也相应地不变动。这样,保证了数据与程序的物理独立性。
1.4 常见关系数据库
常见关系数据库
1.4.1 Access数据库
Microsoft Access是当前流行的关系型数据库管理系统之一,其核心是Microsoft Jet数据库引擎。通常情况下,安装Microsoft Office 时选择默认安装,Access 数据库即被安装到计算机上。
Microsoft Access是一个非常容易掌握的数据库管理系统。利用它可以创建、修改和维护数据库及数据库中的数据,并且可以利用向导来完成对数据库的一系列操作。Access能够满足小型企业客户/服务器解决方案的要求,是一种功能较完备的系统,它几乎包含了数据库领域的所有技术和内容,对于初学者学习数据库知识非常有帮助。
1.4.2 SQL Server数据库
SQL Server是由微软公司开发的一个大型的关系数据库系统,它为用户提供了一个安全、可靠、易管理的高端客户机/服务器数据库平台。
SQL Server数据库有很多版本,例如SQL Server 2000、SQL Server 2008、SQL Server 2012等。各版本发布时间如图1-6所示。
图1-6 SQL Server各版本发布时间
1.4.3 Oracle数据库
Oracle是ORACLE(甲骨文)公司提供的以分布式数据库为核心的一组软件产品。Oracle是目前世界上使用最为广泛的关系型数据库。它具有完整的数据管理功能,包括数据的大量性、数据保存的持久性、数据的共享性、数据的可靠性。
Oracle在并行处理、实时性、数据处理速度方面都有较好的表现。一般情况下,大型企业都会选择Oracle作为后台数据库来处理海量数据。
1.5 Transact-SQL简介
Transact-SQL简介
Transact-SQL是SQL Server 2008在SQL基础上添加了流程控制语句后的扩展,是标准的SQL的超集,简称T-SQL。
SQL是关系数据库系统的标准语言,标准的SQL语句几乎可以在所有的关系型数据库上不加修改地使用。Access、Visual Foxpro、Oracle这样的数据库同样支持标准的SQL,但这些关系数据库不支持T-SQL。T-SQL是SQL Server系统产品独有的。
1.T-SQL语法
T-SQL的语法规则如表1-3所示。
表1-3 T-SQL语法规则
约 定 |
说 明 |
---|---|
UPPERCASE(大写) |
T-SQL关键字 |
Italic |
用户提供的T-SQL语法的参数 |
Bold(粗体) |
数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本 |
下划线 |
指示当语句中省略了包含带下划线的值的子句时应用的默认值 |
|(竖线) |
分隔括号或大括号中的语法项。只能选择其中一项 |
[ ](方括号) |
可选语法项。不要键入方括号 |
{ }(大括号) |
必选语法项。不要键入大括号 |
[,...n] |
指示前面的项可以重复n次。每一项由逗号分隔 |
[...n] |
指示前面的项可以重复n次。每一项由空格分隔 |
[;] |
可选的T-SQL语句终止符。不要键入方括号 |
<label> :: = |
语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用的语法块的每个位置应括在尖括号< >内 |
2.T-SQL语言分类
T-SQL语言的分类如下。
(1)变量说明语句:用来说明变量的命令。
(2)数据定义语言:用来建立数据库、数据库对象和定义列,大部分是以CREATE开头的命令,如CREATE TABLE、CREATE VIEW和DROP TABLE等。
(3)数据操纵语言:用来操纵数据库中数据的命令,如SELECT、INSERT、UPDATE、DELETE和CURSOR等。
(4)数据控制语言:用来控制数据库组件的存取许可、存取权限等命令。
(5)流程控制语言:用于设计应用程序流程的语句,如IF WHILE和CASE等。
(6)内嵌函数:实现参数化视图的功能。
(7)其他命令:嵌于命令中使用的标准函数。
小 结
本章介绍了数据库的基本概念:数据库系统的组成、数据模型、数据库三级模式结构及映射、关系数据库和T-SQL简介等。通过本章的学习,读者可以对数据库有一个系统的了解,在此基础上了解Transact-SQL语言,为进一步的学习奠定基础。
习 题
1-1 数据库技术的发展经历了哪3个阶段?
1-2 数据模型由哪几部分组成?
1-3 数据库三级模式结构是指什么?三级模式之间的映射有哪两种,如何定义?
1-4 常见的数据库模型有哪些?关系数据库的第一范式、第二范式、第三范式分别是什么?
1-5 实体之间有哪3种关系?
1-6 下面哪些是关系数据库?
(1)Access (2)SQL Server
(3)Oracle (4)XML