绪论
数据库的4个基本概念
数据(Data )
数据库(Database )
数据库管理系统(DBMS )
数据库系统( DBS )
数据(Data )是数据库中存储的基本对象
数据的定义:描述事物的符号记录
数据库的定义:
数据库(Database, ,简称 简称DB)是长期储存在计算机内 、有组织的 、可共享的大量数据的集合。
表内容
• Row行 / tuple元组 / record记录
• column列 / field / attribute属性
数据库管理系统:
位于用户与操作系统之间的一层数据管理软件
是基础软件 ,是一个大型复杂的软件系统
数据定义语言(DDL )
数据操纵语言(DML )
数据库系统的构成
数据库
数据库管理系统 ( 及其应用开发工具) )
应用程序
数据库管理员
- 数据管理技术的发展过程
- 人工管理阶段(20 世纪50年代中之前 年代中之前)
- 文件系统阶段(20 世纪50 年代末--60年代中 年代中)
- 数据库系统阶段(20 世纪60 年代末--现在 现在)
数据库的主要特征:
- 数据结构化 (数据库系统与文件系统本质区别)
- 数据的共享性高,冗余度低且易扩充
- 数据独立性高 ( 物理独立性 逻辑独立性 )
- 数据由数据库管理系统统一管理和控制 (安全性保护 完整性检查 并发控制 数据库恢复)
- 数据库概念小结:
- 数据库是长期存储在计算机内有组织的大量的共享的数据集合。
- 可以供各种用户共享,具有最小冗余度和较高的数据独立性。
- 数据库管理系统 在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性、安全性,并在多用户同时使用数据库时进行并发控制,在发生故障后对数据库进行恢复。
通俗地讲数据模型就是现实世界的模拟
数据模型是数据库系统的核心和基础
- 数据模型组成要素:
- 数据结构
- 数据操作
- 数据的完整性约束条件
- 数据模型分为两类(两个不同的层次)
- 概念模型
也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。
实体- 联系方法(Entity-Relationship Approach)
E-R 方法也称为E-R 模型
- 逻辑模型和物理模型
常用的数据模型:
- 层次模型(Hierarchical Model )
- 网状模型(Network Model )
- 关系模型(Relational Model)
- 面向对象数据模型(Object Oriented Data Model )
- 对象关系数据模型(Object Relational Data Model )
- 半结构化数据模型(Semistruture Data Model)
关系模型的优缺点:
- 优点
建立在严格的数学概念的基础上
概念单一
实体和各类联系都用关系来表示 实体和各类联系都用关系来表示
对数据的检索结果也是关系 对数据的检索结果也是关系
关系模型的存取路径对用户透明
具有更高的数据独立性 ,更好的安全保密性 更好的安全保密性
简化了程序员的工作和数据库开发建立的工作 - 缺点
存取路径对用户透明 , 查询效率往往不如格式化数据
模型 模型
为提高性能 , 必须对用户的查询请求进行优化 , 增加了开发数据库管理系统的难度
从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构
模式(Schema )
外模式(External Schema )
内模式(Internal Schema )
二级映象在数据库管理系统内部实现这三个抽象
层次的联系和转换 层次的联系和转换
外模式/模式映像
模式/内模式映像
从数据库 最终用户角度看,数据库系统的结构分为 看,数据库系统的结构分为:
单用户结构
主从式结构
分布式结构
客户- 服务器
浏览器- 应用服务器/数据库服务器多层结构等
型(Type )
对某一类数据的结构和属性的说明 对某一类数据的结构和属性的说明
值(Value )
是型的一个具体赋值
- 小结:
数据库系统概述
数据库的基本概念
数据管理的发展过程
数据库系统的特点 - 数据模型
数据模型的三要素
三种主要数据库模型 - 数据库系统内部的系统结构
数据库系统三级模式结构
数据库系统两层映像系统结构
数据库系统的组成
◼ 候选码(Candidate key)
若关系中的某一属性组的值能唯一地标识一个元组, 而其子集不能标识 ,则称该属性组为候选码
简单的情况:候选码只包含一个属性
◼ 全码(All-key)
最极端的情况:关系模式的所有属性组是这个关系模式的
候选码,称为全码( 候选码,称为全码(All-key)
◼ 主码
若一个关系有多个候选码,则选定其中一个为 主码(Primary key)
◼ 主属性
候选码的诸属性称为主属性(Prime attribute)
不包含在任何侯选码中的属性称为非主属性( 不包含在任何侯选码中的属性称为非主属性(Non-Primeattribute )或非码属性(Non-key attribute)
三类关系
- 基本关系 ( 基本表或基表 )
实际存在的表,是实际存储数据的逻辑表示 - 查询表
查询结果对应的表 - 视图表
由基本表或其他视图表导出的表 , 是虚表 , 不对应实际存储的数据
- 关系模式
R ( U , D , DOM , F )
R 关系名
U 组成该关系的属性名集合
D U 中属性所来自的域
DOM 属性向域的映象集合
F 属性间数据的依赖关系的集合
❖ 关系模式(Relation Schema)是型
❖ 关系是值
关系模式是对关系的描述
- 关系的完整性
- 实体完整性(entity integrity),
- 参照完整性(referential integrity)
- 用户定义的完整性(user-defined integrity).
关系代数
- 传统的集合运算
并(Union)
差(Difference)
交(Intersection)
笛卡尔积(Cartesian Product)
专门的关系运算(必考)
象集Zx
给定一个关系R(X ,Z),X 和Z 为属性组 。
当t[X]=x时 ,x 在R 中的 象集(Images Set)为:
Zx ={t[Z]|t 属于 R ,t[X]=x}
它表示R 中属性组X 上值为x 的诸元组在Z上分量的集合
-
选择又称为限制(Restriction)
-
投影(Projection)
-
连接也称为θ连接(Join)
-
θ为 “ = ” 的连接运算称为等值连接
-
自然连接(Natural join)
自然连接中,被舍弃的元组称为悬浮元组。
外连接(Outer Join)
如果把悬浮元组也保存在结果关系中,而在其他属性上填空值,就叫做外连接
- 左外连接(LEFT OUTER JOIN 或LEFT JOIN)
只保留左边关系R 中的悬浮元组
右外连接(RIGHT OUTER JOIN 或RIGHT JOIN)- 只保留右边关系S 中的悬浮元组
- 除运算(Division)
注:R > P X S
据定义语言(DDL ),
数据操纵语言(DML),
数据控制语言(DCL)
DDL(Creat, drop…)、
DML(update,insert, delete) 、
DQL(select) 及DCL(Grant)
定义模式实际上定义了一个命名空间
CREATE SCHEMA < 模式名> AUTHORIZATION <用户名>
[< 表定义子句>|< 视图定义子句>|< 授权定义子句>]
DROP SCHEMA < 模式名> <CASCADE|RESTRICT>
- CASCADE( 级联 )
删除模式的同时把该模式中所有的数据库对象全部删除- RESTRICT( 限制 )
如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
仅当该模式中没有任何下属的对象时才能执行。
创建基本表(其他数据库对象也一样)时,若没有指定模式,
系统根据搜索路径来确定该对象所属的模式
关系数据库管理系统会使用模式列表中第一个存在的模式作为数据库对象的模式名
若搜索路径中的模式名都不存在,系统将给出错误
- 显示当前的搜索路径: SHOW search_path;
- 搜索路径的当前默认值是:$user,PUBLIC
关系数据库管理系统中常见索引:
- 顺序文件上的索引
- B+树索引
- 散列(hash)索引
- 位图索引
- 特点:
- B+树索引具有动态平衡的优点
- HASH索引具有查找速度快的特点
数据字典是关系数据库管理系统内部的一组系统
表,它记录了数据库中所有定义信息:
◼ 关系模式定义
◼ 视图定义
◼ 索引定义
◼ 完整性约束定义
◼ 各类用户对数据库的操作权限
◼ 统计信息等
- 关系数据库管理系统在执行SQL的数据定义语句
时,实际上就是在更新数据字典表中的相应信息。
WHERE子句不能用聚集函数作为条件表达式
子查询的限制:
不能使用ORDER BY子句
用EXISTS/NOT EXISTS实现逻辑蕴涵( 难点 )
集合操作的种类
并操作 UNION
交操作 INTERSECT
差操作 EXCEPT
空值与另一个值(包括另一个空值)的算术运算的结果为空值
空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN
有UNKNOWN 后,传统二值(TRUE ,FALSE)逻辑就扩展成了三值逻辑
若一个视图是从单个基本表导出的,并且只是去掉
了基本表的某些行和某些列,但保留了主码,我们
称这类视图为行列子集视图。
- 视图的作用
视图能够简化用户的操作
视图使用户能以多种角度看待同一数据
视图对重构数据库提供了一定程度的逻辑独立性
视图能够对机密数据提供安全保护
适当的利用视图可以更清晰的表达查询
SQL可以分为数据定义、数据查询、数据更新、数据控制四大部分
数据库安全性控制的常用方法
用户标识和认证
访问控制
视图
审计 C2
数据加密
自主访问控制(Discretionary Access Control ,简称DAC)
C2级
用户对不同的数据对象有不同的访问权限
不同的用户对同一对象也有不同的权限
用户还可将其拥有的存取权限转授给其他用户
而拥有对象权限的用户,又可以将该对象的权限分配给其他用户,所以称之为“自主(Discretionary)”控制。
强制访问控制(Mandatory Access Control ,简称 MAC)
B1级
每一个数据对象被标以一定的密级
每一个用户也被授予某一个级别的许可证
对于任意一个对象,只有具有合法许可证的用户才可以访问
强制访问控制规则
(1)仅当主体的许可证级别大于或等于客体的密级时,
该主体才能读取相应的客体
(2)仅当主体的许可证级别小于或等于客体的密级时,
该主体才能写相应的客体
基于角色的访问控制(RBAC: Role-Based Access Control)
基于属性的权限验证(ABAC: Attribute-Based Access Control)
数据库的完整性:
数据的正确性
数据的相容性
为维护数据库的完整性,数据库管理系统必须:
- 提供定义完整性约束条件的机制
- 提供完整性检查的方法
- 违约处理
关系模式由五部分组成,是一个五元组:
R(U, D, DOM, F)
关系名R是符号化的元组语义
U为一组属性
D 为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
一个好的关系模式应该具备以下四个条件:
❖ 尽可能少的数据冗余
❖ 没有更新异常
❖ 没有插入异常
❖ 没有删除异常
第一范式列不能再分。
设 设R(U) 是一个属性集U 上的关系模式,X
和Y 是U 的子集。若对于R(U) 的任意一个可能的关
系r ,r 中不可能存在两个元组在X 上的属性值相
等, 而在Y 上的属性值不等, 则称“X 函数确定
Y” 或“Y 函数依赖于X” ,记作X→Y。
函数依赖不是指关系模式R 的某个或某些关系实例满足的
约束条件,而是指R 的所有关系实例均要满足的约束条件。
一个低一级范式的关系模式,通过模式分解可以转换为若
干个高一级范式的关系模式的集合,这种过程就叫规范化
-
如果关系模式R,其所有的属性均为简单属性,即 ,
每个属性都是不可再分的,则称R属于第一范式, 属于第一范式,简称1NF 。 -
若关系模式R∈1NF,并且每一个非主属性 ,
都完全函数依赖于任何一个候选码,则R∈2NF
一个关系模式不属于2NF,会产生以下问题:
插入异常
删除异常
修改复杂
- 设关系模式R<U,F>∈1NF,若R 中不存在
这样的码X 、属性组Y 及非主属性Z(Z ⊇/ Y), 使
得X→Y ,Y→Z成立,Y ↛ X不成立,则称 R<U,F> ∈ 3NF。
第一范式:简单说 列不能再分
第二范式:简单说 建立在第一范式基础上,消除部分依赖
第三范式:简单说 建立在第二范式基础上,消除传递依赖。
推论1: 若R∈2NF,且至多存在一个非主属性,则R∈3NF
推论2: 任何二元关系模式R(A,B)必为3NF。 又饿了
- 设关系模式R<U,F>∈1NF ,若X →Y且Y⊆/⊆ X时,
X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定
属性集都包含候选码,则R∈BCNF。
一个满足BCNF的关系模式的条件:
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
到P80
为了区分SQL 语句与主语言语句,所有SQL 语句
必须加前缀EXEC SQL,
主语言为C 语言时,语句格式:
EXEC SQL <SQL 语句>;
主语言为Java 语言时,语句格式:
#SQL {<SQL 语句>};
数据库工作单元与源程序工作单元之间的通信
(1)向主语言传递SQL 语句的执行状态信息,使主语言
能够据此控制程序流程,主要用SQL 通信区实现
(2)主语言向SQL 语句提供参数,主要用主变量实现
(3)将SQL 语句查询数据库的结果交主语言处理,主要
用主变量和游标实现
SQLCA:SQL Communication Area
SQLCA 是一个数据结构
SQLCA 的用途
SQL 语句执行后,系统反馈给应用程序信息
描述系统当前工作状态
描述运行环境
这些信息将送到SQL 通信区中
应用程序从SQL 通信区中取出这些状态信息,据此决
定接下来执行的语句
使用SQLCA
SQLCA 中有一个存放每次执行SQL 语句后返回代码的变
量SQLCODE (0:success,100:no rows,-1: 失败)
创建存储过程
CREATE OR REPLACE PROCEDURE
过程名([ 参数1,参数2,...]) AS < 过程化SQL 块>;
过程名:数据库服务器合法的对象标识
参数列表:用名字来标识调用时给出的参数值,必须
指定值的数据类型。参数也可以定义输入参数、输出
参数或输入/ 输出参数,默认为输入参数
过程体:是一个< 过程化SQL 块> ,包括声明部分和可
执行语句部分
函数和存储过程的异同
同:都是持久性存储模块
异:函数必须指定返回的类型
函数的定义语句格式
CREATE OR REPLACE FUNCTION 函数名 ([ 参数1,参 参
数2,…]) RETURNS < 类型> AS < 过程化SQL 块>;
数据库设计是指对于一个给定的应用环境,构造(设
计)优化的数据库逻辑模式和物理结构, 并据此建立
数据库及其应用系统 ,使之能够有效地存储和管理数
据,满足各种用户的应用需求,包括信息管理要求和
数据操作要求。
数据库设计的目标是为用户和各种应用系统提供一个
信息基础设施和高效率的运行环境
数据库设计分6个阶段
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
事务(Transaction) 是用户定义的一个数据库操作序列,
这些操作要么全做,要么全不做,是一个不可分割的工作
单位。
事务是恢复和并发控制的基本单位
事务的ACID 特性:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持续性(Durability)
- 故障的种类
- 事务内部的故障
- 系统故障
- 介质故障
- 计算机病毒
恢复操作的基本原理: 冗余
利用存储在系统别处的冗余数据来重建数据库中已被
破坏或不正确的那部分数据
如何建立冗余数据
数据转储(backup)
备用的数据文本称为本后备副本(backup)或后援副
本
登记日志文件(logging)
日志文件(log file) 是用来记录事务对数据库的更新操作
的文件