目录
实体完整性:主属性的取值不能为空值,主属性的候选键的取值要非空且唯一
参照完整性:如果X是关系R的主键,Y是关系S的外键,且X与Y相对应,则Y的取值要么为空值,要么取X的值。
第一章 概述
基本知识
数据
是表示客观事物的符号(文本,图像,图形,音频,视频和动画)
多媒体数据
:文本,图像,图形,声音,视频和动画等数据的
集合
数据库
:存放数据的电子仓库
数据库特点
:数据永久结构化存储,冗余度低,独立性高,可以共享和易于拓展
数据库管理系统
(
DBMS
):提供给用户,并帮助用户建立、使用和管理数据库的软件系统。
即
:管理数据的软件;用于
维护
数据库、
接受和完成
用户提出的访问数据库的
请求
。
建立数据库的目的
是
使用数据库,并对数据库中的数据进行数据处理和分析
,数据库管理系统是帮助达到这一目的的工具和手段。
数据库管理系统的主要功能:
数据定义
数据操纵
事务和运行管理
组织、存储和管理数据
数据库的建立和维护
数据库系统
(
DBS
):是在计算机系统中引入数据库后,由
数据库、数据库管理系统、开发工具、应用系统、数据库管理员和用户
等构成的完整系统。
数据库系统
一般由
硬件、软件和人员
等3大部分组成。
(1)
硬件
:
计算机硬件和数据库专用硬件
等。 (2)
软件
:
操作系统(os)
、
DBMS
、
开发工具
(程序设计语言和专用工具)和
应用系统
等。 (3)
人员
:
数据库设计员、程序员、数据库管理员(DBA)和用户
等。
数据库管理员
是对数据库进行建立、使用和维护等的专职管理人员。DBA应该与数据库设计员、程序员和用户,共同参与数据库设计。
DBA的主要职责:
(1)
决定数据库的信息内容和结构。
(2)
决定数据库的存储结构和存取策略。
(3)
定义数据的安全性要求和完整性约束条件。
(4)
监控数据库的使用和运行。
(5)
数据库的改进、重组和重构。
数据管理技术
经历了
人工管理(不能保存、共享、独立,应用程序管理数据)、文件管理(可以保存,不能共享、独立,文件系统管理数据,数据冗余高)、数据库系统(数据结构化且易扩充,DBMS管理数据,独立,共享,冗余低)
三个阶段。
数据模型***
数据模型
是
对实际问题的模拟和抽象
数据模型的组成要素
数据模型
由
数据结构
、
数据操作
和
数据完整性约束
等组成。
(1)数据结构
①数据对象及其特征的集合:数据对象的特性、类型和属性等。 ②数据对象之间的联系:数据对象之间的一对一联系、一对多联系和多对多联系等。
例如
:在网上书店中,出版社的数据结构可以设计如下: 出版社(社号,社名,邮编,社址,电话,邮箱,网址)
(2)数据操作
①
检索操作
:数据对象的
索引、排序和查询
等。 例如:在网上书店中,对出版社按照“社号”建立索引。 ②
更新操作
:数据对象的
插入、修改和删除
等。 例如:在网上书店中,删除”购买”表中户号为”0005″的客户的购买信息。
(3)数据完整性约束
数据完整性约束是
为了确保数据的正确性和相容性
,而对数据对象约定的一系列约束条件和约束规则。 例如:在网上书店中,客户的性别只能是“男”或者“女”。
数据完整性约束
包括
实体完整性,参熙完整性和用户定义完整性
等。
数据模型的分类
(1)概念模型
概念模型
是
数据及其关系的图形表示
。例如:
E-R图
。。
概念模型
的主要
组成要素
是
实体、属性和联系
等。
例如
:拥有户号,户名,性别,生日,手机,婚否和邮箱特性的6个客户实体组成的
客户实体集
(即:客户表)如下: (001,郭靖,男, 1966-06-01, 13111223,
123450@aq.com
)(002,黄药师,男,1979-09-10, 19111223 ,
43210@qq.com
)(0003,黄蓉,女, 1988-10-06, 1362223335,
12222@a.com
)(C004,洪七公,男, 1999-06-16, 13922335 ,22220q.com)(C005,梅超风,女,2002-07-11, 13655669,9, 4520. com)(0006,欧阳锋,男, 2006-08-08, 13955569, ,
56222@q.com
)
①实体(Entity)
实体
(
记录
,元组)是客观存在且相互区别的事物。实体可以是具体的人、事、物或者抽象对象等。
实体集
(
表
,关系)是
同类
实体组成的
实体集合
。 如上例子中的一条记录即为实体。
②属性(Attribute)
属性即为每个实体的
特性。
如上例子即为户号,户名,性别,生日等。
属性的取值范围称为域
。
例如:户号的域为:C开头且后面为三位数字;性别的域为“男”或者“女”
候选键:
对于指定的
实体集
,能够
区分每一个实体的最小属性集
称为
候选键
(CK或者候选码)。候选键可以是
一个属性
,也可以是
多个属性的组合
,而且一个实体集可以有
多个候选键
。 在实际应用中,
被选中使用的候选键
,称为
主键
(PK或者主码)。如果实体集的
所有属性
组成这个实体集的
候选键
,则称为
全键(
Al keyAK,或者全码)。
主键
的取值
不能相同
,且一个实体集
只能有一个候选键
的所有属性称为
主属性
。
不包含
在任何候选键中的属性称为
非主属性
。
多个客户实体所组成的
实体集的名称
可以命名为“客户”。客户实体集的
所有属性
(例如:户号,户名,性别,生日,手机,婚否和邮箱)共同组成了客户
实体集的型
,即: 客户(户号,户名,性别,生日,手机,婚否,邮箱)
③联系(Relationship)
两个实体集之间的联系如下:
一对一联系
(1 : 1):对于实体集A中的每一个实体,实体集B中有且只能有一个实体与之联系,反之亦然。 例如:出版社与社长之间的联系;学校与校长之间的联系等。
一对多联系
(1 : n):对于实体集A中的每一个实体,实体集B中有n (n>2)个实体与之联系;反之,对于实体集B中的每一个实体,实体集A中有且只能有一个实体与之联系。 例如:出版社与图书之间的联系;学院与班级之间的联系;班级与学生之间的联系等。
多对多联系(m: n)
:对于实体集A中的每一个实体,实体集B中有n (22)个实体与之联系,反之,对于实体集B中的每一个实体,实体集A中有n(n>2)实体与之联系。
(2)逻辑模型
逻辑模型:概念模型的DBMS表示。主要包括:
层次模型(1:n)(最早)、网状模型(n:n)(最复杂)、关系模型(最流行)和面向对象模型
等。
关系模型
的
组成层次
:
属性(字段),元组(记录),关系(数据表),数据库
等。
(3)物理模型
物理模型
是
数据的存储模型
,是对数据最底层的抽象,是逻辑模型的最终物理实现。
数据库系统的结构
数据库系统的
模式结构
是由
外模式(用户模式)
、
模式(逻辑模式)
和
内模式(物理模式/存储模式)
三级模式以及
外模式/模式
(保护数据
逻辑独立性
)和
模式/内模式
(保护数据
物理独立性
)二级映像构成的结构。
一个应用程序只能使用一个外模式
一个数据库只能有一个内模式
一个数据库可以有多个外模式
一个数据库只能有一个模式
二级映像反映三级模式之间的相互关系
数据库系统模式结构的优点
: a.确保数据库的数据独立性; b.确保数据库的安全性和保密性; c.用户使用数据库更加灵感方便; d.提高了数据库的共享性,减少了数据冗余。
第二章 关系运算
2.1 关系运算语言
(1)关系代数语言
关系运算
主要包括
查询运算
和
更新运算
。
查询运算
:笛卡儿积、并集、交集、选择、投影、连接和除等。
基本运算
:笛卡儿积、并集、差集、选择、投影。
导出运算
:差集、连接和除
核心运算
:选择、投影和连接
更新运算
:插入、修改和删除等。
基本集合运算
主要包括关系的笛卡尔积,交集,并集,和差集。
专用关系运算
主要包括关系的选择、投影、连接和除。
连接:
等值连接
和
自然连接(特殊的去掉重复属性列的等值连接)
数据共享
的主要手段是
查询操作
查询处理
需要经过
查询分析、查询检查、查询优化和查询执行
等阶段
查询优化规则:
(1)
选择运算(减少元组数量)或者投影运算(减少属性个数)尽量先运算
(2)
选择和投影尽量同时运算
。 (3)
投影运算尽量与其前后的双目运算同时运算(减少数据访问和扫描次数)
。 (4)
选择运算尽量与其前笛卡尔积合并为连接运算。 (5)提取公共代数表达式(减少数据访问和扫描次数,避免重复运算)。
查询优化方法:
(1)
查询的关系代数表示。
(2)绘制初始查询树。
(3)分解选择和投影运算,更新查询树。
(4)合并选择和投影运算,更新查询树。
(5)结点分组,连接运算,优化查询树。
(6)生成查询优化器,提供查询优化方案。
第三章 数据完整性
数据库完整性
是指数据的
正确性
(例如性别只能选男或者女)和
相容性
(查询的数据必须真实存在)
数据完整性包括:
实体完整性(区分元组的有效方法)、参照完整性(确保数据相容性的主要方法)、用户定义完整性(确保数据准确性的有效方法)
外键
:
S的属性A不是S的主键,而是R的主键,则A是S的外键
实体完整性:主属性的取值不能为空值,主属性的候选键的取值要非空且唯一
参照完整性:如果X是关系R的主键,Y是关系S的外键,且X与Y相对应,则Y的取值要么为空值,要么取X的值。
用户定义完整性:用户根据系统需求自己定义的约束条件
完整性控制机制
为了保证数据完整性,完整性控制机制应该具备:
定义功能、检查功能、违约处理
等功能,即:”定义“+”检查“+”违约处理“
定义功能
通过定义功能提供的接口,如create table M(CNo char(22) primary key not null)
检查功能
检查用户操作是否违背了完整性约束条件,一般有两种检查方式:
立即检查
方式和
延迟检查
方式
立即检查
:在一条语句执行完后,立即检查完整性约束条件的方式(一般适用于单语句单功能的简单操作)
延迟检查
:指定的任务要在多条语句完全执行后才能够完成(多条语句完成一个完整的功能)
违约处理
常见的违约处理方式(针对插入,删除等更新操作):拒绝更新,置空和级联更新
拒绝更新
:对于违约操作
仅仅提供违约信息
,并不采取任何有效的处理,而是直接拒绝执行更新操作(常用于
拒绝更新主键和外键
)
置空
:对于违约操作设计的数据,采取
将数据置为空值
的方法(主要对象为
无约束属性(非主属性置空)
和
外键约束属性(外键置空)
)
级联更新
:对于违约的操作不简单的拒绝。根据实际情况,把违约更新转换为非违约更新,然后接受更新。
数据完整性实现
实体完整性的实现
(1)cno char(4)
primary key
(2) cno char(22)
primary key (cno)
(3) 为创建的约束命名 cno char(4)
constraint
cno_pk primary key
(4)
alter table
M
add
cno char(4)
constraint
cno_pk primary key(边定义新属性边建立实体完整性)
add constraint
con_pk primary key(cno)(对已经定义的属性)
(5)
删除
已存在的约束 alter table…..drop constraint
alter table
M
drop constraint
con_pk
参照完整性的实现
(1)
foreign key
(cno)
references
M(cno)
(2)cno char(4)
references
M(cno)
(3)
级联更新
on delete cascade
on update cascade
(4)
constraint
cno_fk
foreign key
(cno)
references
M(cno) (加上命名建立外键)
用户定义完整性的实现
(1)bno char(20)
check
(bno
like
‘ISBN[0-9]%’) (检查bno是否为ISBN和一个数字开头,
%
表示
多个字符
)
(2)bno char(22)
constraint
bno_pk
check
(bno
like
‘isbn[0-9]%’)
触发器和断言
触发器:
(1)
create trigger
trig_up(触发器名)
on
M(表名)
(2)
create trigger
trih
on
M
after
delete,update
as raiserror
(‘不能修改信息!’,16,10)(不允许修改和删除)
(3)
drop trigger
trip(删除trip触发器)
断言:
(1)
create assertion
ass_zjgs
check
(50>(select max(sprice) from book where pname=”浙江工商大学”))(创建ass_zjgs断言,要求出版的书售价不可高于50)
(2)
drop assertion
ass_zjgs
第四章 SQL
4.1 SQL介绍
SQL特点
:综合统一,语法简单、易学易用,面向集合操作,高度非过程化,一语多用
SQL Server支持数据库系统三级模式结构,即
存储文件—内模式
,
表—模式
,
视图—外模式
4.2 创建数据库
4.2.1 创建数据库
create database
ebook
on
(name=’ebook’,filename=’D:\mydate\ebook.mdf’,size=10MB,filegrowth=10MB,maxsize=unlimited)
log on
(name=’ebooklog’,filename=’D:\mydate\ebook.ldf’,size=5MB,filegrowth=5%,maxsize=2000MB)
4.2.2 创建表
特殊语句
(1)email char(26) check(
charindex
(‘@’,email)>0) (要求email里包含@)
(2)price decimal(6,2)(6表示左边的位数,2表示
小数
位数)
(3)pdate date
default
datename(year,getdate())+’-‘+datename(month,getdate())+’-‘+datename(day,getday())(获得当前日期)
修改表
(
alter
table表示
修改
该表):
(1)添加属性
alter table
M
add
cno char(20)
(2)修改属性
alter table
M
alter column
cno date
(3)删除属性
alter table
M
drop column
cno
编辑表记录
(1)添加表记录
insert into
M(name,age,sex)
values
(‘sa’,12,’男’)
(2)修改表记录
update
M
set
name=”wn”
where
cno=’coo9′
(3) 删除表记录
delete from
M
where
cno=’C004′
删除表
(1)
drop table
M
4.3 数据查询
4.3.1 集合查询
(1)笛卡尔积
select * from
M,F
(2)并集
select
cno
from
M
where
bno=’009′
union select
cno
from
F
where
bno=’008′
(3)交集
select
cno
from
M
where
bno=’009′
intersect select
cno
from
F
where
bno=’008′
(4)差集
select
cno
from
M
where
bno=’009′
except select
cno
from
F
where
bno=’008′
4.3.2 单表查询
(1)选择
select
*
from
M
where
age<=18
(2)投影
select
distinct(去重)
cno
from
M
where
age<=18
(3)更名
select
cname 姓名
from
M (将cname改名为姓名)
(4)区间
select
cno
from
M
where
price
between
10
and
20
(5)枚举
select
cno
from
M
where
cno
in
(‘c001′,’c002’)
(6)模糊
%
表示任意长度字符
_
表示单个字符
escape
表示转义
[]
表示与其中字符进行匹配
^
表示不与 (
where
cno
like
‘isbn#_[0-9]’
escape
‘#’)表示#为转义字符
(7)统计
select
max
(price)
from
M ///
select
sum
(price)/count(price)
from
M
group by
bno//
select count
(cno)
from
M
group by
bno
having
count(cno)>=5
(8)排序
ASC升序 DESC降序
select
*
from
M
order by
price
DESC
(9)空值
select
*
from
M
where
pdate
is null
4.3.3 多表查询
(1)内连接(条件连接)
select
*
from
M,F
where
M.cno=F.cno
(2)外连接(左外连接,右外连接)
select
M.cno
where
M
left
join
N
on
(M.cno=N.cno)
(3)嵌套
select
bno
from
M
where
cno
in
(
select
cno
from
F
where
cname=’mike’ )
(4)any/all
第五章 概念模型和逻辑模型
5.1 概念模型
E-R图:
属性-椭圆
表示
实体-矩形
表示
联系-菱形
表示
5.2 逻辑模型
5.2.1 实体转换
即 实体(
主属性
,属性,属性。。。)
5.2.2 联系转换
(1) 多对多联系转换
(2)一对多联系转换
(3)一对一联系转换
第六章 关系规范化
6.1 函数依赖
平凡函数依赖:(sno,cno)→sno
非平凡函数依赖: (sno,cno)→date
完全依赖 : (sno,cno)→date(date只依赖于sno,cno)
部分依赖: (sno,cno)→date, cname→date
传递依赖 X→Y,Y→Z——–X→Z
6.2 范式
第一范式:R(U,F)的所有属性都是不可再分的最小数据项
第二范式:R的每一个
非主属性
都
完全依赖
于R的候选键
第三范式: R的每个
非主属性
都
不传递函数依赖
于R的候选键
BC范式:摆脱
主属性
的
部分和传递依赖
,若每个非平凡函数依赖都含有候选键则满足BC范式
6.3 关系模式规范化
6.3.1 Armstrong公理
6.3.2 最小函数依赖集
(1)函数依赖的
右边
均为
单属性
(2)
不包含冗余
函数依赖
(3)函数依赖
左边
均
无冗余
属性
6.3.3 关系模式分解
等价分解:信息不变,依赖不变
保连接分解:关系不变,依赖变
保依赖分解:依赖不变,关系变
保连接算法:同花顺算法,并减方法
保依赖算法:投影并方法
3NF分解的保依赖算法:1.求最小依赖集 2.去除冗余,依赖变子集 A
3NF分解的保连接保依赖算法:1.求最小依赖集 2.去除冗余,依赖变子集 3.找出候选码加入
第七章 数据安全
DBMS提供的数据保护功能包括
数据安全、数据完整、数据并发和数据恢复
等
数据安全标准:4组7等级(
C1自主存取保护,B1强制存取保护
)
数据安全控制
包括
用户鉴别,数据完整性,数据存取控制,视图,审计和数据加密等
用户鉴别的方式:
静态鉴别和动态鉴别
数据存取控制
包括
定义权限和检查权限
数据存取控制方法
包括
自主存取控制(DAC)(可以授权)和强制存取控制 (MAC) (规定等级)
视图
是利用查询语句定义的,从一个或者多个表中导出的虚表。(
外模式
)
视图的特点:1.虚表 2.视图数据为临时数据 3.视图数据自动更新 4.利用视图创建视图
视图建立:
(1)建立视图
create view
miuk
as
select
*
from
M
(2)删除视图
drop view
miuk
(3)更新视图
insert into
miuk(cno,cname)
values
(‘oo9′,’as’)
update
miuk
set
cno=’mas’
where
cname=’sa’
delete from
muik
where
cno=’oo9′
视图的作用
:1. 简化用户操作 2.清晰表达查询 3.同一数据可以以不同的形式提供给不同用户 4.在一定程度上确保了数据安全 5.在一定程度上提供了逻辑独立性
审计和数据加密:
审计是用来监视并记录对数据库的操作行为,实时智能地解析对数据库的各种操作,并记入审计日志,一边日后进行查询,分析和过滤,实现对用户操作的监控和审查
审计事件
主要包括:
服务器事件,系统权限,语句事件和模式对象事件
等
第八章 并发控制
事务
是
用户定义的一个数据库操作序列
,是一个
不可拆分
的工作单元。
事务
具有
原子性(要么做完,要么不做)、一致性(执行结果始终一致)、隔离性(并发事务之间互不影响)和持续性(事务产生的影响永久生效)
(ACID)
并发控制的问题:
丢失修改、读脏数据、不可重读
排他锁(X锁,写锁)
共享锁(S锁,读锁)
一级封锁协议:修改A时对其
加X锁
,直至事务结束(
解决丢失修改
)
二级封锁协议:在一级基础上,在读取A时先对其上
S锁
,
读取结束
立即释放(
解决读脏数据
)
三级封锁协议:在一级基础上,在读取A时先对其上
S锁
,
事务结束
立即释放(
解决不可重读
)
两段锁协议(2PL):所有事务按照
加锁阶段和解锁阶段
分
并发事务的
串行
调度:按顺序执行(用于验证并行调度,称为
并发事务的可串行化
)
并发事务的
并行
调度:同时执行并行事务
死锁预防:
预防死锁
(一次封锁法和顺序封锁法)和
诊断解除
(超时法,等待图法)
死锁解除:1. 超时法死锁 2.等待图死锁
第九章 数据恢复
故障:
-
事务故障(事务T遭到
强行终止
) :撤销事务
undo
+执行回滚
rollback
(系统自动) -
系统故障(
软故障
,计算机硬件故障):撤销
undo(逆向)
+回滚
rollback
+重做
redo(正向)
(系统自动) -
介质故障(
硬故障
,磁盘,磁带,光盘故障): 重装数据库,重做已完成的事务(
DBA
加自动) -
病毒故障
数据恢复的核心技术
是
建立冗余数据
和
利用冗余数据实施数据库恢复
建立冗余数据的技术
是
数据转储
和
登记日志文件
数据转储分类:
(1)静态转储:在
无事务
运行时,进行数据转储。期间
不可
访问数据库(
降低并发度
)
(2)动态转储:在
有事务
运行时,进行数据转储。期间
可
访问数据库(
破坏数据一致性
)
(3)海量转储:转储数据库
全部内容
(需要空间)
(4)增量转储:只转储
上一次转储
后更新的数据(复杂)
日志文件
日志文件
:记录事务对数据的更新操作的文件一记录
增册改查
的动作
日志文件分类:
记录日志文件
和
数据块日志文件
等。
(1)记录日志文件
记录日志文件:以
记录
为单位的日志文件。
主要内容包括:
①事务标记(事务开始标记,事务结束标记,事务名称等)。
②事务操作类型(插入,修改,删除)。
③事务操作对象。
④更新前数据旧值。
⑤更新后数据新值。
(2)数据块日志文件
数据块日志文件:以
数据块
为单位的日志文件。
主要内容包括:
①事务标记(事务开始标记,事务结束标记,事务名称)。
②更新前数据块旧值。
③更新后数据块新值。
登记日志文件,必须遵守如下规则
(1)严格按照并发事务执行的
时间次序
依次登记
(2)先登记日志文件,后更新数据库。
检查点记录
:用于记录在检查时间点
正在执行
的
事务清单
的日志记录。(需登记到日志文件)(
动态维护日志文件
)
检查点记录主要内容:1.检查点时间正在执行的事务清单 2.事务清单中,最近一个日志地址的地址
重新开始文件
:记录检查点记录在日志文件中的位置