数据库系统原理(第二版)知识点总结
目录第一章 概述基本知识数据模型***数据模型的组成要素数据模型的分类数据库系统的结构第二章 关系运算2.1 关系运算语言(1)关系代数语言第三章 数据完整性实体完整性:主属性的取值不能为空值,主属性的候选键的取值要非空且唯一参照完整性:如果X是关系R的主键,Y是关系S的外键,且X与Y相对应,则Y的取值要么为空值,要么取X的值。用户定义完整性:用户根据系统需求自己定义的约束条件完整性控制机制数据完
目录
实体完整性:主属性的取值不能为空值,主属性的候选键的取值要非空且唯一
参照完整性:如果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.事务清单中,最近一个日志地址的地址
重新开始文件:记录检查点记录在日志文件中的位置
更多推荐
所有评论(0)