南大张琰数据库复习整理Word格式文档下载.docx
《南大张琰数据库复习整理Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《南大张琰数据库复习整理Word格式文档下载.docx(21页珍藏版)》请在冰豆网上搜索。
数据结构,数据操作,数据约束
三种数据模型:
概念数据模型,逻辑数据模型,物理数据模型
2.2数据模型的四个世界(概念)
现实世界
概念世界
信息世界
计算机世界
2.3概念世界与概念模型
E-R模型与E-R图:
实体,属性,联系(应用)结合习题理解,会画图
多多对应(m:
n),一多对应(1:
n),一一对应(1:
1)
扩充E-R模型与扩充E-R图:
IS-A联系(概念)
如果实体集B是实体集A的一个子集,且具有比实体集A更多的属性,则我们称在实体集A与实体集B之间存在着一种特殊的‘IS-A联系’。
其中:
实体集A被称为实体集B的超(实体)集
实体集B被称为实体集A的子(实体)集
❑子集B可以通过IS-A联系继承超集A中的所有属性
面向对象模型(概念):
对象:
客观世界中能够相互区别开来的事物
‘对象’是OO模型中的最基本的概念,相当于E-R模型中的‘实体’,但它们两者之间又存在着很大的区别
对象标识符:
对象标识符(ObjectIdentifier,简称OID)
–每个对象均具有的一个能相互区别的名字
类:
具有相同属性、方法的对象集合
方法:
方法用于反映对象的行为特征,是对象的固有动态行为的表示,可用于审视并改变对象的内部状态(属性值)
超类和子类:
继承:
一个类的定义和实现建立在其它类的基础之上,并共享其它类的定义和实现,其中被继承的类称为‘超类’,获得继承的类被称为‘子类’
聚合和分解:
聚合:
由若干个简单类聚合成一个复杂的类的过程
类与类之间的这种聚合联系构成了类与类的Is-part-of关系
分解:
由复杂类分解成若干层次上的简单类的过程,
继承和合成,封装(概念题)
方法,消息:
消息与方法的比较
方法是对象的内部操作,它包括方法的外部调用接口和内部实现细节两个部分
消息则是一个跨对象的对象间的操作
2.4信息世界和逻辑模型
关系模型:
关系(Relation):
一个关系对应通常说的一张表
元组(Tuple):
表中的一行即为一个元组
属性(Attribute):
表中的一列即为一个属性,给每一个属性起一个名称即属性名
值域:
一个属性可以取的值的集合,被称为该属性的值域
关系数据库
关键字:
关系中的一个属性集的值能唯一标识关系中的一个元组,且又不含多余的属性值,则称该属性集为该关系的关键字
第三章关系数据库系统
3.1关系数据库系统概述
关系数据库系统的优点
数据结构简单,使用方便,功能强,数据独立性高,理论基础深,可移植性好,标准化程度高,分布式功能,开放性,其它方面的功能扩展
3.2关系数据库系统的衡量准则
6、完全关系型的十二条衡量准则:
空值(NULL):
“无意义”或“当前未知”的值
3.3关系模型数学理论—关系代数
3.3.1关系模型(概念)
关系数据结构
●表结构:
表框架,表的元数与基数
●关系:
二维表的性质
●关键字:
候选关键字,主关键字,外关键字
●关系数据库:
关系子模式-视图(view)
关系操纵
●数据查询:
两个关系的合并,单个关系内的元组选择,单个关系内的属性指定
●数据删除、插入、修改
●空值的处理
关系中的数据约束
●实体完整性约束,参照完整性约束,用户定义的完整性
3.3.2关系的表示(概念)
关系的表示:
关系是元组的集合
迪卡尔乘积:
设存在n个集合D1,D2,…,Dn,它们的笛卡儿乘积是:
D1×
D2×
…×
Dn
该笛卡儿乘积的结果是一个集合,其中的每个元素都是一个具有如下形式的n元有序组:
(d1,d2,…,dn),其中di∈Di(i=1,2,…,n)
设集合Di的元素个数分别为ri(i=1,2,…,n),则它们的笛卡儿乘积的结果元素个数为:
r1×
r2×
…×
rn
3.3.3关系操纵的表示(应用)
关系代数中的五种基本运算:
选择,投影,笛卡儿积,并,差
投影:
❑必须注意消除结果关系中可能出现的重复元组
选择:
笛卡尔积:
R×
S,是两个关系的合并运算(ppt3-1,86页)
基本运算的应用实例
3.3.4关系模型与关系代数(概念)
用一种成为“关系”的二维表表示数据
关系代数:
(A,
×
∪,-)
由关系的集合A及关系间的五种基本运算所构成的代数系统被称为‘关系代数’
3.3.5关系代数中的扩充运算(应用)
交,除法,联接与自然联接,外联接
扩充运算与基本运算之间的关系
扩充运算的应用实例
除运算:
联接运算:
3.3.6关系代数实例(应用)
综合的关系代数应用实例
例题:
设有学生数据库关系模式如下(其中中文为解释,英文为表名字段名):
学生S(学号sno,姓名sname,性别gender,身高height)
课程C(课程号cno,学分credit,开课系别dept,开课季节semester)
成绩SC(学号sno,课程号cno,成绩grade)
请用关系代数表示下列查询:
1.查询身高超过1.8米的男生的学号和姓名
T:
=πsno,sname(δheight>
1.8Λgender=’男’(S))
2.查询计算机系秋季所开每一门课程的课程号和学分
=πcno,credit(δsemester=’秋季’Λdept=’计算机系’(C
SC
S))
3.查询所有至少选修一门计算机系所开课程的女生的姓名
=πS.sname(δdept=’计算机系’Λgender=‘女’(S))
4.查询所有课程的成绩都在90分以上(含90分)的学生的姓名、学号
T=(πsno(S)-πsnoδgrade<
90(SC))
S
5.查询选修了所有学分数超过3的课程的学生姓名
=Πsname(Πsno,cno(SC)/πcnoδcredit>
3(C))
S
一、关系模式如下:
学生S(学号S#,姓名Sn,系别Sd,年龄Sa)
课程C(课程号C#,课程名Cn,预修课程号P#)
选课SC(学号S#,课程号C#,成绩G)
请用关系代数表达式来表示下述数据查询操作。
1)检索学习课程号为C2的学生学号与成绩
∏S#,G(δSC.C#='
C2'
ΛSC.S#=S.S#(SC*S))
2)检索学习课程号为C2的学生学号与姓名
∏S#,Sn(δSC.C#='
3)检索选修课程名为Maths的学生学号与姓名
∏S#,Sn(δSC.C#=C.C#ΛSC.S#=S.S#ΛC.C#='
Maths'
(S*C*SC))
4)检索选修课程号为C2或C4的学生学号
∏S#(δSC.C#='
ΛSC.S#=S.S#(S*SC))∪∏S#(δSC.C#='
C4'
ΛSC.S#=S.S#(S*SC))
5)检索至少选修课程号为C2和C4的学生学号
ΛSC.C#='
(SC))
6)检索至少选修课程号为C2和C4的学生姓名
∏Sn(δSC.C#='
7)检索计算机系学生都学习过的课程的课程号与课程名
∏C#,Cn(δSd='
计算机系'
ΛS.S#=SC.S#ΛC.C#=S.C#(S*SC*C))
8)检索选修过C2课的所有预修课程的学生的学号
∏S#(δC.C#='
ΛSC.C#=P#ΛSC.S#=S.S#(SC*C*S))
9)检索不学C2课的学生学号
∏S#(δSC.C#!
='
10)检索不学C2课的学生姓名与年龄
∏Sn,Sa(δSC.S#=S.S#ΛSC.C#!
(SC*S))
11)检索不学C2课的学生学号、姓名与年龄
(SC))∪∏Sn,Sa(δSC.S#=S.S#ΛSC.C#!
二、关系模式如下:
职工E(姓名ename,工号e#,出生日期bdate,家庭地址addr,年薪salary,管理员工号se#,所在部门编号d#)
部门D(部门名称dname,部门编号d#,部门负责人的工号mgre#)
项目P(项目名称pname,项目编号p#,所在城市city,主管部门编号d#)
工作W(职工工号e#,项目编号p#,工作时间hours)
职工家属Depend(职工工号e#,家属的姓名name,家属的性别sex)
1)检索部门Research的所有职工的姓名和家庭地址
∏ename,addr(δdname=ResearchΛE.d#=D.d#(E*D))
2)检索位于Stafford的每个项目的编号、主管部门的编号及其部门负责人的姓名和家庭地址
∏p#,d#,ename,addr(δcity='
Stafford'
Λp.d#=D.d#ΛD.mgre#=E.e#(E*D*P))
3)检索参与了5号部门的所有项目的职工的姓名
∏ename(δD.d#=5ΛD.d#=P.d#ΛP.p#=W.p#ΛW.e#=E.e#(E*D*P*W))
4)检索职工Smith所参与的或者主管部门为该职工所在部门的项目的编号
∏p#(δE.ename=SmithΛE.e#=W.d#(E*W))∪∏p#(δE.ename=SmithΛE.d#=D.d#ΛD.d#=P.d#(E*D*P)
5)检索拥有两个或两个以上家属的职工的姓名
∏ename(δDepend.e#=Depend.e#ΛDepend.name<
>
depend.nameΛDepend.e#=E.e#(E*Depend*Depend))
6)检索至少有一个家属且具有管理员身份的职工的姓名
∏ename(δE.se#=Depend.e#(E*Depend))
7)检索不带家属的职工的姓名
∏ename(E)-∏ename(δE.e#=Depend.e#(E*Depend))
8)检索工资收入最高的职工的姓名
∏ename(E)-∏ename(δE.salary<
E.salary(E*E))
3.4关系数据库语言SQL’92(概念)又称SQL2,1992年应用
(SQL必考)select数据定义,语言drop,delete;
建表create(约束,外键,基本数据类型)数据库控制,语言,安全权限
3.4.1SQL概貌
SQL标准的发展历史:
SQL-92(SQL2)(ANSI/ISO,1992)
SQL的基本概念与使用方式(自含式,嵌入式),SQL功能简介(数据定义功能、数据操纵功能、数据控制功能、数据交换功能、扩展功能)
3.4.2SQL数据定义功能(应用)
建表:
createtable表名()
SQL中的数据类型,Oracle数据类型
基本的表结构定义和修改命令
3.4.3SQL数据操纵功能(应用)
SQL语言与关系代数的关系
映像语句结构
SELECT子句和FROM子句是一条映像语句中必不可少的两个组成部分
基本查询功能:
LIKE,ISNULL谓词;
表的联接查询与自联接查询;
ORDERBY子句的功能
嵌套查询:
IN,SOME/ANY/ALL,EXISTS等谓词;
相关子查询与独立子查询
子查询的合并:
UNION/INTERSECT/EXCEPT[ALL]运算
统计查询:
统计与分组统计查询;
空值与空集在统计函数中的处理方法
复杂数据查询:
两层的NOTEXISTS嵌套结构,以实现关系代数中的除法运算的查询功能。
3.4.4SQL的更新功能(应用)
删除功能
插入功能:
常量元组的插入,带子查询的元组插入
修改功能
基表的修改:
ALTERTABLE(基表名)ADD(列名)<
数据类型>
ALTERTABLE(基表名)DROP(列名)
基表的删除命令:
DROPTABLE<
基表名>
3.4.5视图
视图概念:
由若干张表经映像语句构筑而成的表,又称为:
导出表(drivedtable)
视图与基表的区别:
1、被称为视图的二维表本身(结构与数据)并不实际存在于数据库内,而仅仅保留了其构造信息(有关视图的定义信息)。
因此视图又被称为‘虚表’(virtualtable)
2、当用户执行视图上的访问操作时,数据库管理系统将根据视图的定义命令将用户对于视图的访问操作转换成相应基表上的访问操作
视图的定义命令:
嵌套定义功能
视图的删除命令:
视图删除中的连锁反应
视图上的数据访问:
可更新视图
视图的优点:
提高了数据独立性,简化用户观点,提供自动的安全保护功能
SQL语句例题!
!
设有一个公司产品销售数据库,其关系模式如下(其中中文为解释,英文为表名字段名):
顾客C(编号cid,姓名cname,城市city,折扣discnt)
供应商
A(编号aid,名称aname,城市city)
商品
P(编号pid,名称pname,库存数量quantity,单价price)
订单
O(编号ordno,年份year,月份month,顾客编号cid,供应商编号aid,
商品编号pid,订购数量qty,销售金额dols)
请用SQL语句表示下述的操作请求。
1)创建表C,要求其主键为CID,折扣取值范围在0到1之间(字段类型可自定)
CreatetableC
(
Cidint
cnamechar(8)
Citychar(8)
Discntfloat(8)
Discntdecined(2,2)
Checkdiscnt>
=0anddiscnt<
=1
)
2)创建一个视图,要求给出所有南京的顾客姓名和折扣。
Createviewcas
Selectcname,dicsnt
FromC
Wherecity=’南京’
3)将表P中的字段Price的修改权限赋予用户TOM。
Grantupdate(Price)onptoTOM
4)用单个SQL语句将顾客编号为10的顾客折扣值改为0.98,所在城市改为南京。
UpdateC
Setdicnt=0.98city=’南京’
Wherecid=10
5)查询居住有公司客户的城市数量。
Selectcount(distinctcity)fromA;
6)查询每个供应商单笔销售最高金额的平均值
Selectavg(t.x)from(selectaid,max(dollars)asxfromordersgroupbyaid)t
7)查询购买过产品名称中包含“茶”字的产品的顾客数量。
Selectcount(dictintcid)
FromP,O
Whereo.pid=p.pidandPnameLike‘%茶%’
8)查询所享受的折扣(discnt)最高的客户的编号。
9)统计查询每个供应商在每一种商品上的销售总数量,只返回销售总数超过1000的统计结果(返回商品编号、商品名称,供应商编号,供应商名称及其销售总数量)。
10)至少被三个供应商卖出过的商品的编号。
11)查询销售金额最高的订单的订单编号。
12)向C表中增加一个顾客,编号为1,姓名为’TOM’,所在城市为南京,折扣为空值;
13)删除顾客编号为10的顾客;
第四章数据库的安全性与完整性保护(概念)
4.1数据库的安全性保护
数据库的安全:
防止非法使用数据库
安全数据库:
那些能适应网络环境下安全要求级别的数据库称为安全数据库(securedatabase),或称为可信数据库(trusteddatabase)
数据库安全的基本概念与内容:
主体,客体,身份标识与鉴别,自主访问控制,强制访问控制,隐蔽通道,审计
数据库的安全标准:
国标GB17859
SQL对数据库安全的支持:
SQL语言所提供的与数据库安全保护有关的命令(应用)
4.2数据库的完整性保护
数据库完整性保护的功能:
对数据库中数据的正确性和一致性的维护,包括:
–在执行更新操作时,检查是否违反完整性约束条件,并且在证明其无效后作出适当的反应
–防止有存取权的合法用户的误操作
目的:
及时发现错误
能够采取措施防止错误的进一步蔓延
最终将数据库恢复到正确状态
常用实现措施:
完整性约束条件的定义及检查
触发器
并发控制技术
完整性规则的三个内容:
实体完整性,参照完整性,用户定义完整性
完整性约束的设置:
属性级的约束,元祖级的约束,全局约束
检查与处理
在SQL语言的CREATETABLE命令中提供的完整性约束定义子句(应用)
触发器:
在数据库系统中,一个事件的发生会导致另外一些事件的发生,这样的功能被称为触发器事务处理、并发控制与故障恢复技术
第五章事务处理、并发控制和故障恢复技术
5.1事务处理(概念)
事务的定义
由某个用户所执行的一个不能被打断的对数据库的操作序列被称为‘事务’
ACID性质:
原子性、一致性、隔离性、持久性
事务活动及其状态转换图
事务控制及相关的参数设置语句:
事务的提交与回滚,事务的读/写类型与隔离级别
❑事务的语句组成成分:
Begintransaction、Committransaction、Rollbacktransaction
5.2并发控制技术(概念)
事务
●事务的并发性,并发控制
●调度(一个或多个事务中的数据库访问操作,按照这些操作被执行的时间排序所形成的一个操作序列)
串行调度(如果一个调度的操作组成方式如下:
首先是一个事务的所有操作,然后是另一个事务的所有操作,依此类推,则我们称该调度是串行的,或称为‘串行调度’)
可串行化调度(如果一个调度对数据库状态的影响和某个串行调度相同,则我们称该调度是可串行化的,或称为‘可串行化调度’)
冲突:
是指调度中的一对连续操作(op1;
op2),它们满足如下的条件:
如果交换它们两者的执行顺序,那么涉及的事务中至少有一个的行为会改变
符合上述条件的一对连续的操作(op1;
op2)被称为‘冲突’
冲突可串行化:
如果一个调度S冲突等价于一个串行调度,则我们称调度S是“冲突可串行化”的
()冲突可串行化的判定方法:
构造调度S的事务优先图,如果该图是无环的,则调度S是冲突可串行化的。
如果有环,则调度S不是冲突可串行化的
●三种数据不一致现象:
丢失修改,脏读,不可重复读
封锁
●共享锁,排它锁,所相容矩阵,合适事务
●基于封锁技术的并发控制实现方法
●封锁协议:
三级封锁协议,两阶段封锁协议
●合法调度:
两阶段封锁协议与冲突可串行化的关系
●多粒度封锁:
封锁粒度与多粒度封锁,意向锁及其锁相容矩阵,多粒度封锁协议
●死锁(每个事务都可能拥有一部分‘锁’,并因申请其它事务所持有的‘锁’而等待,因此产生的循环等待现象被称为‘死锁’)及其解决方法(预防法、解除法),活锁(有部分事务因封锁申请得不到满足而处于长期等待状态,但其它的事务仍然可以继续运行下去,这种情况被称为“活锁”)及其解决方法(先来先服务)
5.3数据库恢复技术(概念)
数据库恢复的含义、方法和常用措施
含义:
在数据库遭受破坏后及时进行恢复的功能
方法
▪利用数据冗余原理,将数据库中的数据在不同的存储介质上进行冗余存储,当数据库本身受到破坏时,可以利用这些冗余信息进行恢复
常用措施
▪数据转储
▪日志
▪数据库镜像
数据库故障的分类:
小型故障(事物内部故障)、中型故障(系统故障、外部影响)、大型故障(磁盘故障、计算机病毒、黑客入侵)
数据库故障恢复三大技术:
数据转储、日志、事务的撤销与重做
●数据转储:
静态转储/动态转储,海量转储/增量转储,
●日志:
–日志的内容、组成、作用与记载原则
–三种类型的日志:
UNDO日志,REDO日志,UNDO/REDO日志
–在日志中设置检查点的作用
●事务的撤销(UNDO)与重做(REDO)
恢复策略:
小型/中型/大型故障的恢复策略
数据库镜像
第八章关系数据库规范化理论
8.1概述(概念)
7、模式设计质量的评价指标:
数据冗余度,插入/删除等更新异常
8.2规范化理论
8.2.1函数依赖(FD)
8、各种函数依赖的定义:
完全/部分FD,平凡/非平凡FD(一个函数依赖关系X→Y如满足YX,则称此函数依赖是非平凡的函数依赖。
否则,我们称其为平凡函数依赖。
如无特殊声明,凡提到函数依赖时总认为指的是非平凡的函数依赖),直接/传递FD(在关系模式R(U)中,如有XU,YU,ZU且满足:
X→Y,YX,Y→X,Y→Z,则称Z传递函数依赖于X;
否则,称为非传递函数依赖(直接函数依赖)。
(概念)
9、Armstrong公理系统(概念)
10、基于函数依赖的关键字定义(概念)
关键字(也称为码或key),在关系模式R(U,F)中,如有KU且满足:
则称K为R的关键字。
11、属性集闭包的计算算法(应用)
a)设F是关系模式R(U)上的函数依赖集,X是关系模式R(U)的属性子集,由所有函数依赖于X的属性所构成的集合被称为属性集X在函数依赖集F上的闭包。
12、关键字的计算算法(应用)