目录
第1章 数据库概论
1.1 引言
1.1.1 数据
- 数据和信息的概念
- 数据:是描述事物的符号记录,是数据库系统研究和处理的对象。
- 信息:是现实世界客观事物物理状态的反映,是对数据的解释。
- 数据和信息的联系
- 数据和信息是密不可分的。
- 数据是独立的,信息是有意义的;
- 数据是信息的符号表示或称为载体;信息则是数据的内涵,是对数据语义的解释。
1.1.2 数据库
- 概念
数据库(DataBase,简记为DB)是长期存储在计算机内、有组织的、统一管理的相关数据的集合。(注:其实就是一张张表) - 基本特征
- 数据按一定的数据模型组织、描述和储存
- 可为各种用户共享
- 冗余度较小
- 数据独立性较高
- 易扩展
1.1.3 数据库管理系统
- 概念
数据库管理系统(DataBase Management System,简记为DBMS)是位于用户与操作系统(OS)之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。
DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型等。
- 工作模式
- 接受应用程序的数据请求和处理请求
- 将用户的数据请求(高级指令)转换成复杂的机器代码(低层指令)
- 实现对数据库的操作
- 从对数据库的操作中接受查询结果
- 对查询结果进行处理(格式转换)
- 将处理结果返回给用户
- 主要功能
- 数据库的定义功能:定义DB的三级结构、两级映象。定义数据的完整性约束、保密限制等
- 数据库的操纵功能:实现对数据的检索(查询)和更新(插入、删除和修改)
- 数据库的保护功能:1.数据安全性控制;2.数据完整性控制;3. DB的并发控制;4. DB的恢复
- 数据库的维护功能:包括数据库的数据载入、转换、转储、数据库的改组以及性能监控等功能
- 数据字典(Data Dictionary,DD)在需求分析阶段建立,是对数据模型中数据对象或项目描述的集合
1.1.4 数据库系统
- 概念: 数据库系统(DataBase System,简记为DBS):是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统
1.4 数据抽象的级别
1.4.1 数据抽象的过程
- 概念模型:表达用户需求观点的数据全局逻辑结构的模型,称为“概念模型”
- 逻辑模型:表达计算机实现观点的DB全局逻辑结构的模型,称为“逻辑模型”
- 外部模型:表达用户使用观点的DB局部逻辑结构的模型,称为“外部模型”
- 内部模型:表达DB物理结构的模型,称为“内部模型”
数据抽象的过程,具体步骤如下:
第1步:根据用户需求,设计数据库的概念模型,这是一个“综合”的过程。
第2步:根据转换规则,把概念模型转换成数据库的逻辑模型,这是一个“转换”的过程。
第3步:根据用户的业务特点,设计不同的外部模型,给程序员使用。
第4步:数据库实现时,要根据逻辑模型设计其内部模型。
一般,上述第1步称为DB的概念设计,第2、3步称为DB的逻辑设计,第4步称为DB的物理设计。
1.4.3 逻辑模型
1.4.4 外部模型
- 图1.18所示的关系模型由TEACHER、COURSE、STUDENT和SC等四个关系模式组成。外部模型中的模式称为“视图”(View)。
- 视图只是一个定义,视图中的数据可以从逻辑模型的数据库中得到。
- 外部模型具有如下的特点:
(1)外部模型是逻辑模型的一个逻辑子集。
(2)外部模型独立于硬件,依赖于软件。
(3)外部模型反映了用户使用数据库的观点。 - 外部模型具有下列优点:
(1)简化了用户的观点。
(2)有助于数据库的安全性保护。
(3)外部模型是对概念模型的支持。
1.4.5 内部模型
- 内部模型又称为物理模型,是数据库最低层的抽象。
1记录的存储方式(顺序存储,按照B树结构存储, 按hash方法存储)
2索引的组织方式
3数据是否压缩存储
4数据是否加密
5数据存储记录结构的规定 - 层次模型和网状模型在设计时,要精心设计内部模型,而关系模型的内部模型由系统自动实现(DBMS),这也是关系模型能够代替层次/网状模型的重要原因之一。
1.6 数据库系统
1.6.1 全局结构
- 终端用户:指使用应用程序的非计算机人员。
- 应用程序员:指使用主语言和DML语言编写应用程序的计算机工作者。
- 专业用户:指数据库设计中的上层人士(主要包括系统分析员和数据库设计人员)。
- DBA:负责三层结构的定义和修改,以及访问授权限的设置、日常维护等工作
- 嵌入型DML预编译器:指使用主语言和DML语言编写应用程序的计算机工作者。
- DML编译器:对DML语句进行优化并转化成查询运行核心程序能执行的低层指令。
- DDL编辑器:翻译或解释DDL语句,并把它登录在数据字典中。
- 查询运行核心程序:执行由DML编译器产生的低层指令
- 事务处理器:用于确保DB一致性状态,并保证并发操作正确执行。
- 缓冲区管理器:负责将磁盘中读出的数据送入内存的缓冲区,并决定哪些数据应进入高速缓冲存储器
- 权限和完整性管理器:测试应用程序是否满足完整性约束,检查用户访问数据的合法性。
- 文件管理器:测试应用程序是否满足完整性约束,检查用户访问数据的合法性。
- 索引:为提高查询速度而设置的逻辑排序手段。
- 数据字典:存储三级结构的描述(一般称为元数据)。
- 数据文件:存储数据库本身,数据库在磁盘上的基本组织形式是文件。
- 日志:存储DBS运行时对DB的操作情况,以备以后查阅数据库的使用情况及数据库恢复时使用。
- 统计数据:存储DBS运行时的统计分析的数据。
1.6.2 三级模式结构
- 外模式:
- 定义:与数据的物理存储细节和硬件环境无关;与具体的应用程序、开发工具及高级程序设计语言无关
- 用途:每个用户只能看见和访问所对应的外模式中的数据;保证数据库安全性的一个有力措施;保证数据的独立性。
- 模式:与数据的物理存储细节和硬件环境无关;与具体的应用程序、开发工具及高级程序设计语言无关
- 内模式:是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。一个数据库只有一个内模式。
1.6.3 两级映像功能和高度的数据独立性
- 三级模式是对数据的三个抽象级别
- 二级映象在DBMS内部实现这三个抽象层次的联系和转换
第2章 关系模型和关系运算理论
2.1 关系模型的基本概念
2.1.1 基本术语
2.1.2 关系的定义和性质
2.1.3 关系模型的三类完整性规则
实体完整性和参照完整性是关系模型必须满足的完整性约束条件,称为关系的两个不变性,应该由关系系统自动支持。
用户定义的完整性指应用领域需要遵循的约束条件,体现了具体领域中的语义约束 。
关系在任何时刻都要满足这些约束条件,具体实现是由DBMS去做。
- 实体完整性规则:要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了惟一标织元组的作用。
- 参照完整性规则:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中某个主键值。这条规则的实质是“不允许引用不存在的实体”
- 用户定义的完整性规则:在建立关系模式时,对属性定义了数据类型,即使这样可能还满足不了用户的需求。此时,用户可以针对具体的数据约束,设置完整性规则,由系统(DBMS)来检验实施,以使用统一的方法处理它们,不再由应用程序承担这项工作。
2.1.4 关系模型的三级体系结构
- 子模式(外模式):子模式是用户所用到的那部分数据的描述。除此之外,还应指出数据与关系模式中相应数据的联系。
- 关系模式
3. 存储模式:在有些DBMS中,关系存储是作为文件看待的,每个元组就是一个记录。由于关系模式有键,因此存储一个关系可用散列方法或索引方法实现
2.2 关系代数
2.2.1 5个基本操作
- 并
- 外部并
- 差
- 笛卡尔积
- 投影:投影操作主要是从列的角度进行运算
但投影之后
- 取消了原关系中的某些列
- 可以对列进行排序
- 还可能取消某些元组(避免重复行)
- 选择:选择运算是从关系R中选取使逻辑表达式F为真的元组,是从行的角度进行的运算。
2.2.2 4个组合操作
- 交
- 连接:一般的连接操作是从行的角度进行运算
- 一般连接
- 等值连接
- 自然连接
- 外连接、左外连接、右外连接
- 半连接
- 除法
除什么就是选择那行(个人理解)
2.2.3 7个扩充操作
- 改名
- 广义投影
- 赋值
- 聚集操作
关系代数运算应用实例(🔥重要🔥)
重要内容分析:
第3章 关系数据库语言SQL
3.1 SQL简介
3.1.1 概念要点
- Structured Query Language:结构化查询语言,是关系数据库的标准语言
- SQL语言是一个通用的、功能极强的关系数据库语言
- SQL语言是介于关系代数和元组演算之间的一种语言
3.1.2 SQL数据库的体系结构
SQL数据库的体系结构:
SQL数据库的体系结构也是3层结构,但术语与传统的关系模型术语不同。
- 关系模式➡️基本表(Base Table)
- 存储模式➡️存储文件(Stored File)
- 子模式➡️视图(View)
- 元组➡️行(Row)
- 属性➡️列(Column)
基本表:
- 本身独立存在的表
- SQL中一个关系就对应一个基本表
- 一个(或多个)基本表对应一个存储文件
- 个表可以带若干索引
视图:
- 从一个或几个基本表导出的表
- 数据库中只存放视图的定义而不存放视图对应的数据
- 视图是一个虚表
- 用户可以在视图上再定义视图
SQL数据库的体系结构要点:
- 一个SQL模式是表和约束的集合
- 一个表由行集构成,一行是列的序列。
- 表有三种类型:基本表、视图和导出表
- 基本表与存储文件间的联系是M:N。每个存储文件与外部存储器上一个物理文件对应。
- 用户可以用SQL语句对基本表和视图进行查询等操作。在用户看来,两者是一样的,都是表。
- SQL用户可以是应用程序,也可以是终端用户。
3.1.3 SQL的组成
- 数据定义语言:DDL(data definition language)
用于定义SQL模式、基本表、视图、索引等结构 - 数据操纵语言:DML(Data Manipulation Language)
数据操纵分成数据查询和数据更新。
数据更新包括增、删、改。 - 数据控制语言:DCL(Data Control Language)
对基本表和视图的授权、完整性规则的描述、事务控制等内容。 - 嵌入式语言的使用规定
SQL语句嵌入在宿主语言程序中的规则。
3.1.4 SQL的特点
- SQL具有十分灵活和强大的查询功能,其SELECT语句能完成相当复杂的查询操作。
- SQL不是一个应用开发语言,它只提供对数据库的操作功能,不能完成屏幕控制、菜单管理、报表生成等功能。
- SQL是国际标准语言,有利于各种数据库之间交换数据,有利于程序的移植,有利于实现高度的数据独立性,有利于实现标准化。
- SQL的词汇不多,完成核心功能只用了9个英语动词,它的语法结构接近英语,因此容易学习和使用。
- 综合统一。集数据定义语言(DDL),数据操纵语言(DML),数据控制语言(DCL)功能于一体。
- 高度非过程化。SQL只要提出“做什么”,无须了解存取路径。
- 面向集合的操作方式
非关系数据模型采用面向记录的操作方式,操作对象是一条记录。
SQL采用集合操作方式, 操作对象和查找结果都是元组的集合。 - 以同一种语法结构提供多种使用方式。既是独立语言,又是嵌入式语言。
3.2 SQL-DDL~数据定义
3.2.1 SQL模式的创建和撤销(数据库的创建和撤销)
创建:
撤销:
3.2.2 基本数据类型
DBMS可以自行查看
3.2.3 基本表的创建、修改和撤销
创建:
修改:
撤销:
3.2.4 索引的创建和撤销
创建:
撤销:
3.3 SQL-DML~数据查询
3.3.1 SELECT查询语句的基本结构
连接查询:
- 等值连接
- 自然连接
- 自身连接
嵌套查询:
一个SELECT-FROM-WHERE语句称为一个查询块。
将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。
层层嵌套方式反映了 SQL语言的结构化。
有些嵌套查询可以用连接运算替代。
- 带有IN谓词的子查询
查询与“刘晨”在同一个系学习的学生
- 带有比较运算符的子查询:当能确切知道内层查询返回单值时,可用比较运算符(>,<,=,>=,<=,!=或< >),也以与ANY或ALL谓词配合使用。
- 带有SOME(ANY)或ALL谓词的子查询
谓词语义
SOME(ANY):任意一个值
ALL:所有值
带存在量词的嵌套查询:
SQL查询应用实例(🔥重要🔥)
3.3.2 SELECT语句的完整结构
题目中为显示什么什么时,select后面的属性除去聚集属性必须出现在group by后
3.3.3 数据查询中的限制和规定
3.3.4 条件表达式中的比较操作
3.3.5 嵌套查询的改进写法
3.3.6 基本表的连接操作
3.4 SQL-DML~数据更新
3.4.1 数据的插入
-
单元组的插入
-
多元组的插入
-
查询结果的插入
-
表的插入
3.4.2 数据删除
3.4.3 数据修改
3.5 SQL-DCL~视图
虚表,是从一个或几个基本表(或视图)导出的表。
只存放视图的定义,不存放视图对应的数据。
基本表中的数据发生变化,从视图中查询出的数据也随之改变。
3.5.1 视图的创建和撤销
- 创建
- 基于单个基本表的视图
- 基于多个基本表的视图
- 基于视图的视图
- 基于表达式的视图
- 分组视图
- 撤销
3.5.2 视图的更新
视图的优点: 视图是用户一级的数据观点,由于有了视图,使数据库系统具有下列优点:
(1)视图提供了逻辑数据独立性。
(2)简化了用户观点。数据库的全部结构是复杂的,并有多种联系。
(3)数据的安全保护功能。
第4章 关系数据库的规范化设计
关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关系模式集合。规范化设计理论主要包括三个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。
- 数据依赖研究数据之间的联系;
- 范式是关系模式的标准;
- 模式设计方法是自动化设计的基础。
规范化设计理论对关系数据库结构的设计起着重要的作用。
4.2 函数依赖
4.2.7 FD集的最小依赖集
4.3 关系模式的分解特性
4.3.4 无损分解的测试方法
判断是否是无损分解的方法:
4.3.5 保持函数依赖的分解
结论:无损分解与保持函数依赖的分解两个特性之间没有必然的联系。
4.4 关系模式的范式
-
第一范式(1NF):如果关系模式R的每个关系r的属性值都是不可分的原子值,那么称R是第一范式(first Normal Form,简记为1NF)的模式。(即不允许表中有表)
1NF是关系模式应具备的最起码的条件,满足1NF的关系称为规范化的关系,否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。 -
第二范式(2NF):对于FD W→A,如果存在X⊂W有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则称W→A是完全依赖(也称为“左部不可约依赖” )。可以记为:
第二范式不允许有局部依赖的出现。
-
第三范式(3NF)
传递依赖:如果X→Y,Y→A,且Y↛X和A∉ Y,那么称X→A是传递依赖(A传递依赖于X)
第三范式不允许传递依赖的出现。
定理4.8 如果R是3NF模式,那么R也是2NF模式。 -
BCNF:如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。
定理4.9 如果R是BCNF模式,那么R也是3NF模式。
第5章 数据库设计与ER模型
5.2 ER模型
5.2.1 ER模型的基本元素
- 属性
实体的某一特性称为属性(Attribute)。在一个实体中,能够惟一标识实体的属性或属性集称为“实体标识符”,也称为实体的主键。
5.2.2 属性的分类
- 简单属性和复合属性
简单属性:不可再分割的属性,如性别、年龄等。
复合属性:可再分解为其他属性的属性,如地址属性等。 - 单值属性和多值属性
单值属性:同一实体的属性只能取一个值,如年龄等。
多值属性:同一实体的某些属性可能取多个值,如学位(学士学位、硕士学位、博士学位等)、销售价格(经销价格、代销价格、批发价格、零售价格等)等。(双线椭圆形)
- 对多值属性的解决办法
1.方法一:把多值属性转换成多个单值属性。
2.方法二:把多值属性转换成一个弱实体。(双线矩形)
- 存储属性和派生属性
存储属性:不能从其他属性值推导出值的属性。
派生属性:从其他属性值推导出值的属性。如实发工资由其他的属性(基本工资、奖金)表示。 - 允许为空值的属性
譬如某个员工在配偶值处填上空值(Null),实际上至少有以下3种情况:
该员工尚未婚配,即配偶值无意义;(这种空值,称为“占位空值”)
该员工已婚配,但配偶名尚不知;(这种空值,称为“未知空值”)
该员工是否婚配,还不能得知。
5.2.3 联系的设计
- 基数约束
映射基数:实体集E1和E2之间有二元联系,则参与一个联系中的实体数目称为映射基数。对于二元联系类型,可能的映射基数有1:1,1:N,M:N
映射基数的精确表示:有两个实体集E1和E2,E1中每个实体与E2中有联系实体的数目的最小值min和最大值max,称为E1的映射基数,用(min,max)形式表示。
- 参与约束
完全参与:如果实体集E中的每个实体都参与联系集R的至少一个联系中,我们称实体集E“完全参与”联系集R。用双线边表示
部分参与:如果实体集E中只有部分实体参与联系集R的联系中,我们称实体集E“部分参与”联系集R。用单线边表示
5.3 ER模型到关系模型的转换
联系类型的转换:
- 二元联系类型的转换:
- 若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。
- 若实体间联系是1:N,则在N端实体类型转换成的关系模式中加入1端实体类型的键和联系类型的属性。
- 若实体间联系是M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
- 一元联系类型的转换:和上述一样
- 三元联系类型的转换:
- 若实体间联系是1:1:1,可以在转换成的三个关系模式中任意一个关系模式的属性中加入另两个关系模式的键(作为外键)和联系类型的属性。
- 若实体间联系是1:1:N,则在N端实体类型转换成的关系模式中加入两个1端实体类型的键(作为外键)和联系类型的属性。
- 若实体间联系是1:M:N,则将联系类型也转换成关系模式,其属性为M端和N端实体类型的键加上联系类型的属性,而键为M端和N端实体键的组合。
- 若实体间联系是M:N:P,则将联系类型也转换成关系模式,其属性为三端实体类型的键加上联系类型的属性,而键为三端实体键的组合。