9.1 基本概念

9.1.1 数据库与数据库系统

数据库系统是才采用数据库技术,有组织的、动态的存储大量相关数据,方便多用户访问的计算机系统。由数据库、硬件、软件、人组成。

9.1.2 数据库管理系统的功能

1、数据定义
2、数据库操作
3、数据运行管理
4、数据的组织、存储和管理
5、数据库的建立和维护
6、其他功能

9.1.3 数据库管理系统的特征以及分类

1、DBMS的特征
(1)数据结构化且统一管理
(2)有较高的数据独立性
(3)数据控制功能

2、DBMS的分类
(1)关系数据库系统
(2)面向对象的数据库系统
(3)对象关系数据库系统

9.1.4 数据库系统的体系结构

1、集中式数据库系统
2、客户端/服务端结构
3、并行数据库系统
4、分布式数据库系统

9.1.5 数据库的三级模式结构

“三级模式和两级映先”模式

mysql 面向对象 面向过程 面向对象数据库技术11399_主键


1、概念模式(模式):对应数据库表

2、外模式:对应数据库表

3、内模式:对应物理文件

4、两级映像:

(1)模式/内模式映像:概念级与内部级之间

(2)外模式/模式映像:外部级与概念级之间

9.1.6 大数据

大数据指的是“无法用现有的软件工具提取、存储、搜索、共享、分析和处理的海量的、复杂的数据集合”。

1、产生背景
(1)数据来源和承载方式的变革
(2)全球数据量出现爆炸式增长
(3)大数据成为一种自然资源
(4)大数据日益重要,不被利用就是成本

2、大数据的特征
(1)大量化
(2)多样化
(3)价值密度低
(4)快速化

3、理解大数据
大数据不仅是指海量数据,更强调人类对信息的筛选、处理、保留有价值的数据、即让大数据更有意义,挖掘其潜在的“大价值”,这才是大数据的真正理解。

4、大数据产生的安全风险
(1)网络攻击
(2)隐私泄露
(3)威胁现有存储和安防措施
(4)也成为了黑客攻击手段
(5)大数据高级可持续攻击的载体
(6)为信息安全提供新支撑

9.2 数据模型

9.2.1 基本概念

(1)概念数据模型:也称信息模型,强调语义表达功能,如E-R图
(2)基本数据模型:有层次模型、网状模型、关系模型和对象模型。

9.2.2 数据模型的三要素

(1)数据结构
(2)数据操作
(3)数据的约束条件

9.2.3 E-R模型

1、实体
在 E-R 模型中,实体用矩形表示,通常矩形框内写明实体名。实体是现实世界中可以区别于其他对象的“事件”或“物体”。实体集是具有相同属性的实体集合。我们常见的实体意义应该是实体集。(比如某一个学生是实体,所有学生都具有一些相同的属性,因此学生的集合可以定义为一个实体集。也可以对应到具体数据库,实体集是表,而实体是其中特定的条目元组)。

2、联系
在 E-R 模型中,联系用菱形表示,通常菱形框内写明联系名,并用无向边分别与
有关实体连接起来,同时在无向边旁标注上联系的类型(1:1、1:n、n:m)。

3、属性
属性是实体某方面的特性。在 E-R 图中用椭圆表示,并以无向边与对应实体进行连接。每个属性都有其取值范围。属性具有以下分类:

简单属性和复合属性。单独属性是原子的、不可再分的,复合属性可以分解为更小的部分。一般对于复合属性会在题干中给出其分解特性,比如对于地址可进一步划分为省、市、区,若不特别声明,通常指的是简单属性。

单值属性和多值属性。对于一个特定的实体都只有一个特定的值,则为单值属性;在某些特殊的情况下,一些属性可能对应一组值,这样的属性为多值属性。比如对于职工家属,可能有多名成员,会有一组取值,这里即为多值属性。

派生属性。派生属性可以从其他属性得来。比如出生年月可以计算得出年龄,当出生年月属性已记录时,年龄可以计算出来,为派生属性。NULL 属性。当实体在某个属性上没有特定值或属性值未知时,使用 NULL 值,表示无异议或不知道。

4、实体-联系方法

mysql 面向对象 面向过程 面向对象数据库技术11399_数据库_02


5、扩充的E-R模型

(1)弱实体

在现实世界中有一种联系比较特殊,这种联系代表实体间的所有(Ownership)关系。这种实体对于另一些实体存在很强的依赖关系,即一个实体的存在必须以另一个实体为前提,将这类实体称为弱实体。比如附件是邮件的弱实体。弱实体一般以双矩形表示,与其依赖的实体之间存在联系。

(2)特殊化
主要描述的是子类和父类之间的关系。子类是超类的特殊化,子类继承超类的所有属性和联系,并且还有自己特殊的属性和联系。比如经理是员工的特殊化。特殊化实体一般以双边矩形表示,与其超类以线圈的方式连接。

9.2.4 数据模型

(1)层次模型
(2)网状模型
(3)关系模型
(4)面向对象模型

9.2.5 关系模型

E-R 图转关系模式原则:
1、每个实体型转换为一个关系模式
2、联系转关系模式:
(1)一对一联系的转换有两种方式。
独立的关系模式:并入两端主键及联系自身属性。(主键:任一端主键)
归并(任意一端):并入另一端主键及联系自身属性。(主键:保持不变)
(2)一对多联系的转换有两种方式。
独立的关系模式:并入两端主键及联系自身属性。(主键:多端主键)
归并(多端):并入另一端主键及联系自身属性。(主键:保持不变)
(3)多对多联系的转换只有一种方式
独立的关系模式:并入两端主键及联系自身属性。(主键:两端主键的组合键)

9.3 关系代数

1、属性和域
属性:描述一个事物常常取若干特性来表示
域:每个属性取值范围对应一个值的集合,称为属性的域

2、笛卡尔积与关系
笛卡尔积:结果列数为二者属性列数之和,行数为二者元素数乘积。

3、关系的代名词
(1)目或度:R关系的名字,n关系的目或度
(2)候选码:是能够唯一标示元组却无冗余的属性组合
(3)主码:主键
(4)主属性:组成候选码的属性就是主属性
(5)外码:外键
(6)全码:所有属性组成候选码,为全码

属性
简单属性和复合属性:
简单属性是原子的,不可再分的;
复合属性可以细分为更小的部分(即划分为别的属性)。
单值属性和多值属性:
定义的属性对于一个
特定的实体都只有单独的一个值,称为单值属性;
在某些特定情况下,一个属性可能对应一组值,称为多值属性。
NULL 属性:表示无意义或不知道。
派生属性:可以从其他属性得来。
目或度:关系模式中属性的个数。
候选码(候选键):唯一标示元组的属性集合,可以有多个。
主码(主键):从候选键选择一个。
主属性与非主属性:组成候选码的属性就是主属性,其它的就是非主属性。
外码(外键):其他关系模式的主键。
全码(ALL-Key):关系模式的所有属性组是这个关系的候选码

4、关系的3种类型
(1)基本关系
(2)查询表
(3)视图表

5、关系数据库模式

6、完整性约束
实体完整性、参照完整性、用户定义完整性

实体完整性:规定其主属性不能去空值。
参照完整性(也称为引用完整性):规定其外键为参照表的主键值或为空值。
用户自定义完整性:指用户针对某一具体的关系数据库的约束条件,反映某一具
体应用所涉及的数据必须满足的予以要求,由应用的环境决定,如年龄定义为 0~150
正整数。
触发器:一种复杂的完整性约束。

7、关系运算

mysql 面向对象 面向过程 面向对象数据库技术11399_数据库_03

笛卡尔积×:结果的属性列数是二者之和,结果的元组行数是二者乘积。
投影π:对垂直方向的属性列进行筛选。
选择σ:对水平方向的元组行进行筛选。
自然连接⋈:结果的属性列数是二者之和减去重复列数,结果元组是同名属性列取值相等的元组

9.3.2 5种基本的关系代数运算

1、并(结果为二者元组之和去除重复行)
2、交(结果为二者重复行)
3、差(前者去除二者重复行)
4、笛卡尔积:结果列数为二者属性列数之和,行数为二者元素数乘积。
5、投影:对属性列的选择列出。
6、选择:对元组行的选择列出。

9.3.3 扩展的关系代数运算

1、交(结果为二者重复行)
2、自然连接:结果列数为二者属性列数之和减去重复列,行数为二者同名属性列其值相同的结果元组。笛卡尔积、选择、投影的组合表示可以与自然连接等价。普通连接的条件会写出,没有写出则表示为自然连接。
3、除:同时从关系的水平方向和垂直方向进行运算。
4、广义投影:在投影列表中使用算数运算
5、外连接:连接运算的扩展,可处理由于连接运算而缺失的信息

9.4 关系型数据库和SQL语言简介

9.4.1 SQL数据库体系结构

1、SQL特点
(1)综合统一
(2)高度非过程化
(3)面向集合的操作方式
(4)两种使用方式:自含式语言、嵌入式语言
(5)语言简洁,易学易用

数据查询 SELECT
数据定义 CREATE、DROP、ALTER
数据操纵 INSERT、UPDATE、DELETE
数据控制 GRANT、REVORK

9.4.2 SQL的基本组成

mysql 面向对象 面向过程 面向对象数据库技术11399_大数据_04

组成:

mysql 面向对象 面向过程 面向对象数据库技术11399_主键_05

9.4.3 SQL数据定义

1、创建表
CREATE TABLE <表名> (
<列名> <数据类型> [列级完整性约束条件]
[,<列名> <数据类型> [列级完整性约束条件]]

2、修改和删除表
(1)修改
ALTER TABLE <表名>
ADD <新列名> <数据类型> [列级完整性约束条件]
[DROP <完整性约束名>]
[REMOVE <列名> <数据类型>]

3、索引建立与删除

mysql 面向对象 面向过程 面向对象数据库技术11399_数据_06


mysql 面向对象 面向过程 面向对象数据库技术11399_数据库_07

4、视图建立与删除

mysql 面向对象 面向过程 面向对象数据库技术11399_数据_08

mysql 面向对象 面向过程 面向对象数据库技术11399_主键_09

9.4.4 SQL数据查询

1、SELECT基本结构

SELECT [ALL|DISTINCT] <目标表达式> [, <目标表达式>]…
FROM <表名> [,<表名>]…
[WHERE <条件表达式>]
[ORDER BY <列名 2> [ASC|DESC ] … ];

2、简单查询
即:SELECT FROM WHERE

3、连接查询
左连接:left join
右连接:right jon
内连接:inner join

4、子查询与聚集函数
子查询:将某查询的结果作为查询的范围、条件等

mysql 面向对象 面向过程 面向对象数据库技术11399_主键_10


5、分组查询:

[GROUP BY <列名 1> [HAVING <条件表达式> ] ]

6、更名运算:
使用AS进行重命名

7、字符串操作
使用“LIKE”进行模糊查询

8、视图查询
CREATE VIEW 视图名
select * from 视图名

9.4.5 SQL数据更新

1、插入:INSERT INTO 表名
2、删除:DELETE FROM 表名 WHERE 条件
3、修改:UPDATE 表名 SET 列名=列值

9.4.6 SQL访问控制

1、授权语句:
GRANT <权限>[ ,… n]
ON <对象类型><对象名>
TO <用户>[ , … n]
WITH GRANT OPTION

WITH GRANT OPTION 子句,获得权限的用户还可以将权限赋给其他用户

2、收回权限语句:
REVOKE<权限>[ , … n]
ON <对象类型><对象名>
FROM <用户>[ , … n]
[RESTRICT|CASCADE]

9.5 关系数据库的规范

9.5.1 函数依赖

一种重要的,基本的数据依赖。

推理规则:

mysql 面向对象 面向过程 面向对象数据库技术11399_mysql 面向对象 面向过程_11

9.5.2 规范化

范式:规范化过程是为了解决数据冗余、删除异常、插入异常、更新异常等问题。

(1)第一范式(1NF):在关系模式 R 中,当且仅当所有域只包含原子值,即每个属性都是不可再分的数据项,则称关系模式 R 是第一范式。

(2)第二范式(2NF):当且仅当关系模式 R 是第一范式(1NF),且每一个非主属性完全依赖候选键(没有不完全依赖)时,则称关系模式 R 是第二范式。

(3)第三范式(3NF):当且仅当关系模式 R 是第二范式(2NF),且 R 中没有非主属性传递依赖于候选键时,则称关系模式 R 是第三范式。

(4)BC 范式(BCNF):设 R 是一个关系模式,F 是它的依赖集,R 属于 BCNF当且仅当其 F 中每个依赖的决定因素必定包含 R 的某个候选码。

mysql 面向对象 面向过程 面向对象数据库技术11399_mysql 面向对象 面向过程_12

9.5.3 模式分解以及模式分解应有的特性

1、分解

2、无损连接
指将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式。(表格法,公式法——仅限分解为 2 个子关系)

3、保持函数依赖
设数据库模式ρ={R1,R2,…,Rk}是关系模式 R 的一个分解,F 是 R 上的函数依赖集,ρ中每个模式 Ri 上的 FD 集是 Fi。如果{F1,F2,…,Fk}与 F 是等价的(即相互逻辑蕴涵),那么称分解ρ保持 FD。

9.6 数据库的控制功能

9.6.1 事务管理

SQL语言中事务定义语句:
(1)BEGIN TRANSACTION:事务开始
(2)COMMIT : 事务提交
(3)ROLLBACK : 事务回滚

事务特性(ACID):
原子性:事务是原子的,要么都做,要么都不做。

一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性的状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。

隔离性:事务相互隔离,当多个事务并发执行时,任一事务的更新操作直到其成
功提交的整个过程,对其他事务都是不可见的。

持续性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。

9.6.2 数据库的备份与恢复

1、故障类型
(1)事务内部故障
(2)系统故障
(3)介质故障(硬故障)
(4)计算机病毒

2、备份方法
(1)静态转储和动态转储
(2)海量转储和增量转储
(3)日志文件

3、恢复
原理是建立数据冗余(重复存储)

4、数据库镜像

9.6.3 并发控制

1、并发操作带来的问题
(1)丢失修改
(2)不可重复读
(3)读脏数据

2、并发控制技术
(1)封锁
共享锁(S 锁):若事务 T 对数据对象 A 添加了 S 锁,则只允许 T 读取 A,但不能修改 A。并且其他事务只能对 A 加 S 锁,不能加 X 锁。
排他锁(X 锁):若事务 T 对数据对象 A 添加了 X 锁,则只允许 T 读取和修改A,其他事务不能再对 A 加任何锁。

3、活锁与死锁
4、并发调度的可串行性
5、两段封锁协议
6、封锁的粒度

补充:
1、 数据库备份分类

数据库备份分类:从备份量来分,可以分为完全备份、增量备份、差异备份。
完全备份:备份所有数据。即使两个备份时间点之间数据没有任何变动,所有数据还是会被备份下来。
增量备份:跟完全备份不同,增量备份在做数据备份前会先判断数据的最后修改时间是否比上次备份的时间晚。如果不是,则表示该数据并没有被修改过,这次不需要备份。所以该备份方式,只记录上次备份之后的变动情况,而非完全备份。
差异备份:差异备份与增量备份一样,都只备份变动过的数据。但前者的备份是针对上次完整备份后,曾被更新过的。

2、分布式数据库透明性

分片透明:是指用户不必关心数据是如何分片的,它们对数据的操作在全局关系上进行,即如何分片对用户是透明的,因此,当分片改变时应用程序可以不变。分片透明性是最高层次的透明性,如果用户能在全局关系一级操作,则数据如何分布,如何存储等细节自不必关心,其应用程序的编写与集中式数据库相同。
复制透明:用户不用关心数据库在网络中各个节点的复制情况,被复制的数据的更新都由系统自动完成。在分布式数据库系统中,可以把一个场地的数据复制到其他场地存放,应用程序可以使用复制到本地的数据在本地完成分布式操作,避免通过网络传输数据,提高了系统的运行和查询效率。但是对于复制数据的更新操作,就要涉及到对所有复制数据的更新。
位置透明:是指用户不必知道所操作的数据放在何处,即数据分配到哪个或哪些站点存储对用户是透明的。
局部映像透明性(逻辑透明):是最低层次的透明性,该透明性提供数据到局部数据库的映像,即用户不必关心局部 DBMS 支持哪种数据模型、使用哪种数据操纵语言,数据模型和操纵语言的转换是由系统完成的。因此,局部映像透明性对异构型和同构异质的分布式数据库系统是非常重要的。

3、分布式数据库特点

数据独立性。除了数据的逻辑独立性与物理独立性外,还有数据分布独立性(分布透明性)。
集中与自治共享结合的控制结构。各局部的 DBMS 可以独立地管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部 DBMS 的工作,执行全局应用。
适当增加数据冗余度。在不同的场地存储同一数据的多个副本,可以提高系统的可靠性和可用性,同时也能提高系统性能。
(提高系统的可用性,即当系统中某个节点发生故障时,因为数据有其他副本在非故障场地上,对其他所有场地来说,数据仍然是可用的,从而保证数据的完备性。)
全局的一致性、可串行性和可恢复性。