数据库系统原理(第二版)知识点总结

  • Post author:
  • Post category:其他



目录


第一章 概述


基本知识


数据模型***


数据模型的组成要素


数据模型的分类


数据库系统的结构


第二章 关系运算


2.1 关系运算语言


(1)关系代数语言


第三章 数据完整性


实体完整性:主属性的取值不能为空值,主属性的候选键的取值要非空且唯一


参照完整性:如果X是关系R的主键,Y是关系S的外键,且X与Y相对应,则Y的取值要么为空值,要么取X的值。


用户定义完整性:用户根据系统需求自己定义的约束条件


完整性控制机制


数据完整性实现


第四章 SQL


4.1 SQL介绍


4.2 创建数据库


4.2.1 创建数据库


4.2.2 创建表


4.3 数据查询


4.3.1 集合查询


4.3.2 单表查询


4.3.3 多表查询


第五章 概念模型和逻辑模型


5.1 概念模型


5.2 逻辑模型


5.2.1 实体转换


5.2.2 联系转换


第六章 关系规范化


6.1 函数依赖


6.2 范式


6.3 关系模式规范化


6.3.1 Armstrong公理


6.3.2 最小函数依赖集


6.3.3 关系模式分解


第七章 数据安全


第八章 并发控制


第九章 数据恢复




第一章 概述




基本知识




数据

是表示客观事物的符号(文本,图像,图形,音频,视频和动画)



多媒体数据

:文本,图像,图形,声音,视频和动画等数据的

集合



数据库

:存放数据的电子仓库



数据库特点

:数据永久结构化存储,冗余度低,独立性高,可以共享和易于拓展



数据库管理系统



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 逻辑模型


14d6ff61804208ff4f38fd4698bea15



5.2.1 实体转换



即 实体(

主属性

,属性,属性。。。)

79e291f722198abf4995a6a8300c885



5.2.2 联系转换



(1) 多对多联系转换

c4955998d066bc7164ecd3223e31740


(2)一对多联系转换

3584aa38f8c708d38536aeb7ec281c7


(3)一对一联系转换

35b8d173445ec2690e36bbd0ce2ff85



第六章 关系规范化




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公理


25ac7fc8eb06ae620fcb5e96a425a03



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.等待图死锁



第九章 数据恢复



故障:

  1. 事务故障(事务T遭到

    强行终止

    ) :撤销事务

    undo

    +执行回滚

    rollback

    (系统自动)

  2. 系统故障(

    软故障

    ,计算机硬件故障):撤销

    undo(逆向)

    +回滚

    rollback

    +重做

    redo(正向)

    (系统自动)

  3. 介质故障(

    硬故障

    ,磁盘,磁带,光盘故障): 重装数据库,重做已完成的事务(

    DBA

    加自动)

  4. 病毒故障



数据恢复的核心技术



建立冗余数据



利用冗余数据实施数据库恢复



建立冗余数据的技术



数据转储



登记日志文件


数据转储分类:


(1)静态转储:在

无事务

运行时,进行数据转储。期间

不可

访问数据库(

降低并发度



(2)动态转储:在

有事务

运行时,进行数据转储。期间



访问数据库(

破坏数据一致性



(3)海量转储:转储数据库

全部内容

(需要空间)


(4)增量转储:只转储

上一次转储

后更新的数据(复杂)



日志文件



日志文件

:记录事务对数据的更新操作的文件一记录

增册改查

的动作


日志文件分类:

记录日志文件



数据块日志文件

等。



(1)记录日志文件


记录日志文件:以

记录

为单位的日志文件。


主要内容包括:


①事务标记(事务开始标记,事务结束标记,事务名称等)。


②事务操作类型(插入,修改,删除)。


③事务操作对象。


④更新前数据旧值。


⑤更新后数据新值。



(2)数据块日志文件


数据块日志文件:以

数据块

为单位的日志文件。


主要内容包括:


①事务标记(事务开始标记,事务结束标记,事务名称)。


②更新前数据块旧值。


③更新后数据块新值。


登记日志文件,必须遵守如下规则


(1)严格按照并发事务执行的

时间次序

依次登记


(2)先登记日志文件,后更新数据库。



检查点记录

:用于记录在检查时间点

正在执行



事务清单

的日志记录。(需登记到日志文件)(

动态维护日志文件



检查点记录主要内容:1.检查点时间正在执行的事务清单 2.事务清单中,最近一个日志地址的地址



重新开始文件

:记录检查点记录在日志文件中的位置



版权声明:本文为weixin_62483906原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。