数据库总结.docx
- 文档编号:12165366
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:18
- 大小:256.50KB
数据库总结.docx
《数据库总结.docx》由会员分享,可在线阅读,更多相关《数据库总结.docx(18页珍藏版)》请在冰点文库上搜索。
数据库总结
第一章引言
1.数据的三层抽象:
●物理层(physicallevel)。
最低层次的抽象,描述数据实际上是怎样存储的。
物理层详细描述复杂的底层数据结构。
●逻辑层(logicallevel)。
比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系。
通过少量相对简单的结构描述了整个数据库。
逻辑层的用户不必知道这样的复杂性。
逻辑层抽象是被数据库管理员所使用的,管理员必须确定数据库中应该保存哪些信息。
●视图层(viewlevel)。
最高层次的抽象,只描述整个数据库的某个部分。
系统可以为同一个数据库提供多个视图。
2.数据的物理独立性:
●应用程序如果不依赖于物理模式,它们就被称为是具有物理数据独立性(physicaldataindependence),因此即使物理模式改变了它们也无需重写。
3.数据库模式:
●数据库的总体设计乘坐数据库模式(schema)。
数据库实例:
●特定时刻存储在数据库中的信息的集合称作数据库的一个实例(instance)。
4.数据模型
●E-R模型E-Rmodel
●关系模型Relationalmodel
●基于对象数据模型Objectbasedmodel
5.数据库语言
●DDL(数据定义语言),用于定义数据库模式;
●DML(数据操纵语言),用于表达数据库的查询和更新
6.存储管理器:
●权限及完整性管理器Authorizationandintegritymanager
●事务管理器Transactionmanager
●文件管理器Filemanager:
●数据文件Datafile
存储管理器实现的数据结构Harddiskdatastructuresmanagedbyfilemanager
✓数据字典Datadictionary
✓索引Indices
✓缓冲管理器Buffermanager
7.查询处理器:
●DDL解释器DDLinterpreter
●DML编译器DMLcompiler
●查询计算引擎Queryevaluationengine
第二章关系模型
1.基本概念:
●关系数据库是表的集合
●表的列首为属性
●每个属性有一组允许的值,称为该属性的域
1.key的概念:
●Superkey(超码)是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一的标识一个元组。
如果K是一个超码,那么K的任意超集也是超码。
●一些超码,它们的任意真子集都不能成为超码,这样的最小超码成为candidatekey(候选码)。
●Primarykey代表被数据库设计者选中的、用来在同一关系中区分不同元组的候选码。
●一个关系模式(如r1)可能在它的属性中包括另一个关系模式(如r2)的主码。
这个属性叫做r1的参照r2的外码(foreignkey)。
关系r1也称为外码依赖的参照关系(referencingrelation),r2叫做外码的被参照关系(referencedrelation)。
●码(主码、候选码或超码)是整个关系的性质,而不是一个元组的性质。
关系中任意两个元组都不允许同时在码属性上具有相同的值。
2.关系运算(**除去结果中重复的元组)
●除运算
Notation:
LetrandsberelationsonschemasRandSrespectively,whereR=(A1,…,Am,B1,…,Bn)S=(B1,…,Bn)
Theresultofrsisarelationonschema
R–S=(A1,…,Am)
rs={t|tR-S(r)us(tur)}
Wheretumeanstheconcatenationoftuplestandutoproduceasingletuple
Definitionintermsofthebasicalgebraoperation
Letr(R)ands(S)berelations,andletSR
rs=
R-S(r)–R-S((R-S(r)xs)–R-S,S(r))
Toseewhy
–R-S,S(r)simplyreordersattributesofr
–R-S(R-S(r)xs)–R-S,S(r))givesthosetuplestin
R-S(r)suchthatforsometupleus,tur
●r中A属性列上每个元组与s中B属性列上每个元组连接都能在r中找到
第三章SQL
1.实验代码
2.**嵌套
●集合成员资格
连接词in测试元组是否是集合中成员,集合是由select子句产生的一组值构成的。
连接词notin则是测试元组是否不是集合中的成员。
Selectdistinctcustomer_name
Fromborrower
Wherecustomer_namein(selectcustomer_name
Fromdepositor)
●集合的比较
短语“至少比某一个要打”在SQL中用>some表示。
Selectbranch_name
Frombranch
Whereassets>some(selectassets
Frombranch
Wherebranch_city=‘Brooklyn’)
=some等价于in,<>some不等价于notin,>all对应词组“比所有的都大”。
●测试是否为空关系
Exists结构在作为参数的子查询非空时返回true。
测试子查询结果元组集是都为空可用notexists结构。
使用notexists机构还可以模拟集合包含(即超集)运算:
将“关系A包含B”写成“notexists(BexceptA)”。
Ø找出在Brooklyn所有支行都有账户的客户:
SelectdistinctS.customer_name
FromdepositorasS
Wherenotexists((selectbranch_name
Frombranch
Wherebranch_city=‘Brooklyn’)
Except
(selectR.branch_name
FromdepositorasT,accountasR
WhereT.account_number=R.account_numberand
S.customer_name=T.customer_name))
●测试是否存在重复元组
如果作为参数的子查询的结果中没有重复的元组,unique结构将返回true。
Ø找出所有在Perryridge支行中只有一个账户的客户
SelectT.customer_name
FromdepositorasT
Whereunique(selectR.customer_name
Fromaccount,depositorasR
WhereT.customer_name=R.customer_nameand
R.account_number=account.account_numberand
account.branch_name=‘Perryridge’)
3.table的创建、删除、插入、添加(注意primarykey、foreignkey的定义)
●创建createtabler(A1D1,A2D2,……AnDn,
{完整性约束1},
…………
{完整性约束k})
r是关系名,Ai是关系r模式的一个属性名,Di是属性Ai域的值的域类型。
创建表时若无特殊要求,ID定义为varchar型,日期可定义为datetime型,若只要求年,可定义为int型。
●删除deletefromr----删除r中所有元组
droptabler----删除r的模式
前者保留关系r,但删除r中所有元组,后者不仅删除r中所有元组,还删除r的模式。
一旦r被去掉,除非用createtable重建r,否则没有元组可以插入到r中。
●插入insertintor
values(…,…,…)
值被给出的顺序应该遵循对应属性在关系模式中被列出的顺序
●添加altertableraddAD
R是已有的关系的名字,A是要添加的属性的名字,D是要添加的属性的域关系中所有元组在该新属性的取值将被设为null。
altertablerdropA
从已有的关系r中去掉属性A
●更新updater
Setexpression
[case
…………
end]
4.视图
●定义任何不是逻辑模型的一部分但作为虚关系对用户可见的关系称为视图
●创建createviewvas<查询表达式>
第四章高级SQL
1.时间的定义域P79
2.extract(fieldfromd)提取日期或时间d中某一个域,可以是year、month、day、hour、minute或second中的任意一种。
3.casteast将一个字符串或字符串表达式e转换成一个t类型的时间变量(date、time、timestamp中的一种),字符串的格式必须符合正确的格式。
4.定义新类型
●CreatetypeDollarsasnumeric(12,2)final
把用户定义类型Dollars定义为总共12位数字的十进制数
Createtableaccount(
Account_numberchar(10),
BalanceDollars)
●定义域类型
CreatedomainDDollarsasnumeric(12,2)
域上可以指定约束,也可以为域类型变量定义默认值,而用户定义类型上不嫩指定约束或默认值。
5.完整性约束
●check(expression)
check子句指定一个谓词,关系中所有元组都必须满足该谓词
使用in子句可以限定一个域只能包含指定的一组值
●notnull
●primarykey
●unique(A1,A2,…An)
unique限定指出A1,A2,…An属性形成了一个候选码,即一个关系中没有两个元组能在所有主码属性上相等。
候选码属性可以为空,除非它们已被显示的声明为notnull。
●参照完整性
令关系r1(R1)和r2(R2)的主码分别是K1和K2,则称R2的子集a为参照关系r1中K1的外码,如果要求对r2中任意元组t2,均存在r1中元组t1使得t1[K1]=t2[a]。
这种要求称为参照完整性约束(referentialintegrityconstraint)或子集依赖(subsetdependencies)。
a和K1必须是相容的属性集,即要么a等于K1,要么它们包含相同数目的属性,并且对应属性的类型必须相容。
6.授权
●SQL标准包括delete、insert、select和update权限。
●授予权限
grant<权限列表>on<关系名或视图名>to<用户/角色列表>
●收回权限
revoke<权限列表>on<关系名或视图名>
from<用户/角色列表>
收回u1对u2的x权限,u2仍具有x权限(u3授予其x权限),则u4也具有x权限;u3收回对u2的x权限后,u2和u4都不具有x权限
第六章数据库设计和E-R模型
1.基本概念
●实体集:
相同类型——即具有相同性质(或属性)——的实体集合
●联系集:
同类联系的集合
●属性:
实体集中每个成员所拥有的描述性性质
●域:
每个属性都有一个可取值的集合,称为该属性的域,或者值集
●联系集的度:
参与联系集的实体集的数目
●属性类型:
简单属性、复合属性、单值属性、多值属性、派生属性
2.映射基数:
指明一个实体通过一个联系集能同时与多少个实体相关联,或称基数比率
Onetooneonetomanymanytoonemanytomany
3.total参与:
实体集中每个实体都参与到联系集的至少一个联系中
4.实体集的码
●超码:
是一个或多个属性的集合,这些属性的组合可以是我们在一个实体集中唯一的标识一个实体。
●候选码:
任意真子集都不能成为超码的超码
●主码:
代表被数据库设计者选中的用来在同一实体集中区分不同实体的候选码。
主码的选择应该是那些从不或极少变化的属性
5.联系集的码
●联系集的属性:
参与该联系集的实体集所有primarykey+与该联系集相关联的属性
●Superkey:
参与到该联系集中的实体集的primarykey组合
●主码:
依赖映射基数
6.E-R图
●角色标识
manage联系来自同一个实体集中的两个不同实体
●双线表示一个实体集对某个联系是全部参与的
●确定用实体集还是联系集:
当描述发生在实体间行为时采用联系集。
●一对一或一对多联系集的属性可以放到一个是参与该联系的实体集中,而不是放到联系集中
7.弱实体集:
一个实体集可能没有足够的属性形成主码,这样的实体集称作弱实体集
●弱实体集必须与另一个称为标识实体集或属主实体集的实体集关联才有意义
●弱实体集与其标识实体集相关联的联系称为标识性联系,是从弱实体集到标识实体集的多对一联系,并且弱实体集全部参与联系,标识性联系没有描述性的属性,因为任何所需的属性都可和弱实体集关联
●弱实体集的分辨符是区分依赖于某个强实体集的弱实体集中的实体的属性集合,以虚线的下划线表示
●E-R图中弱实体集以双边框的矩形表示,对应的标识性联系以双边框的菱形表示
●如果弱实体集只参与标识性联系,且属性不多,建模时将其表示为一个属性更恰当;如果弱实体集参与到标识性联系以外的联系中,或者属性到多,则表示为弱实体集更恰当
8.扩展E-R特性
●特殊化:
在实体集内部进行分组的过程
●一般化:
高层实体集与一个或多个底层实体集间的包含关系
●一般化的进行基于这样的认识:
一些实体集具有共同的特性(即可以用相同的属性对它们进行描述,且它们都参与到相同的联系集中)
●聚集:
一种抽象,通过这种抽象,联系集被当做高层实体来看待
9.E-R图转换为关系模式
●模式名即为相应的实体集或联系集的名称
●对于从强实体集导出的模式,强实体集的主码就是生成的模式的主码
●对于从弱实体集导出的模式,该模式的主码由其所依赖的强实体集的主码与弱实体集的分辨符组合而成,除了创建主码以外,还要在弱实体集导出的关系A上建立外码约束,该约束指明A中包含的A所依赖的强实体集B的属性参照B导出的关系的主码
●联系集的表示方式
✓设R是联系集,所有参与R的实体集的主码的并集形成属性集合a1,a2,…am,如果R有描述性属性则设为b1,b2…bn。
用名为R的关系模式表示该联系集,该模式的每个属性对应于以下属性集合中的各个属性:
{a1,a2,…am}∪{b1,b2…bn}
✓主码的选择改有以下方式:
Ø对于多对多的二元联系,主码是参与实体集的主码属性的并集
Ø对于一对一的二元联系集,任何一个参与联系集的主码都可以作为联系的主码,可以任意选择一个与该联系集相关联的实体集,将它的主码属性作为联系的主码
Ø对于多对一的二元联系,主码是联系集中“多”那一边的实体集的主码
Ø对于n元联系集,如果链接到它的边中没有箭头,则主码是所有参与实体集的主码属性的并集;如果连接到它的一边中有一个箭头,则除去“箭头”那一边的实体集的主码属性,其他参与实体集的主码属性的并集为联系的主码
✓在关系R上建立外码约束:
对于每个与联系集R相关的实体集Ei,建立一个关系R上的外码约束,该约束表明R中来自Ei主码属性的哪些属性参照关系Ei的主码
✓弱实体集和其依赖的强实体集间的联系不用转换
第七章关系数据库设计
1.第一范式:
如果某个域的元素被认为是不可分的单元,那么这个域就是原子的。
如果一个关系模式R的所有属性域都是原子的,那么关系模式R属于第一范式
2.函数依赖:
关系模式R,令R且R,R上函数依赖成立的条件是:
如果对任意合法关系r(R)及r中任意两个元组t1和t2,若t1[]=t2[],则t1[]=t2[]
3.平凡函数依赖:
在所有关系中都满足的函数依赖。
如果,则形如的函数依赖是平凡的
4.函数依赖集闭包:
从给定函数依赖集F能够推导出的所有函数依赖的集合,记为F+。
F+是F的超集
5.BCNF:
具有函数依赖集F的关系模式R属于BCNF的条件是,对所有的F+中形如
的函数依赖,下面至少有一个成立:
●是平凡的函数依赖,(即)
●是模式R的一个超码
6.3NF:
具有函数依赖集F的关系模式R属于3NF的条件是,对所有的F+中形如
的函数依赖,下面至少有一个成立:
●是平凡的函数依赖,(即)
●是模式R的一个超码
●-中的每个属性A都包含在R中的一个候选码中
7.Armstrong’s公理(均为属性集)
●如果,then自反律
●如果,then增补律
●如果,and,then传递律
8.属性集的闭包:
如果有,则称属性B被a函数确定。
在函数依赖集F下由a函数确定的所有属性的集合为F下a的闭包,记为a+
9.属性集闭包的用途:
●判定a是否为超码,通过计算a+,看a+是否包含了R中的所有属性
●通过检验是否+,可以验证函数依赖是否成立,即用属性闭包计算a+,看它是否包含b
计算F+:
对任意的R,找出闭包+,对任意的S+,输出一个函数依赖S
10.无关属性:
如果去除一个函数依赖中的属性不会改变该函数依赖集的闭包,该属性称为无关的。
无关属性的形式定义:
函数依赖集F及F中的函数依赖
●如果A∈a且F逻辑蕴涵(F–{}){(–A)},则属性A在a中是无关的
●如果A∈b且函数依赖集(F–{}){(–A)}逻辑蕴涵F,则属性A在b中是无关的
11.正则覆盖Fc是一个依赖集,使得F逻辑蕴涵Fc中的所有依赖,并且Fc逻辑蕴涵F中的所有依赖。
Fc必须具有如下性质:
●Fc中任何函数依赖都不含无关属性
●Fc中函数依赖的左半部都是唯一的,即Fc中不存在两个依赖11和22,满足1=2
12.无损分解:
对于所有的合法数据库实例都有r=R1(r)∞R2(r)。
即把r投影至R1和R2上,计算投影结果的自然连接,仍然得到一摸一样的r
R1和R2是R的无损分解,如果以下函数依赖中至少有一个属于F+:
●R1R2R1
●R1R2R2
如果R1R2是R1或R2的超码,R上的分解就是无损分解
13.保持依赖:
如果可以验证F上的每一个函数依赖都在分解后的某一个关系上成立,那么这个分解就是保持依赖的
14.BCNF判定方法:
●检查非平凡函数依赖是否违反BCNF,计算a+,并验证它是否包含了R中的所有属性,即验证它是否是R的超码
●检查关系模式R是否属于BCNF,仅检查给定集合F中的函数依赖是否违反BCNF就足够了,不用检查F+中的所有函数依赖。
15.BCNF分解
16.多值依赖
第十五章事务
1.事务:
构成单一逻辑工作单元的操作集合/访问并可能更新各种数据项的一个程序执行单元
2.事物的ACID特性:
●原子性:
事务的所有操作在数据库中要么全部正确反映,要么全部不反映
●一致性:
隔离执行事务时(即在美有其他事务并发执行的情况下)保持数据库的一致性
●隔离性:
尽管多个事务可能并发执行,但系统保证,对于任何一对事务Ti和Tj,在Ti看来,Tj或者在Ti开始之前已经完成执行,或者在Ti完成之后开始执行。
这样,每个事务都感觉不到系统中有其他事务在并发的执行
●持久性:
一个事物成功完成后,它对数据库的改变是永久的,即使系统可能出现故障
3.事务状态:
●活动状态:
初始状态;事务执行时处于这个状态
●部分提交状态:
最后一条语句执行后
●失败状态:
发现正常的执行不能继续之后
●中止状态:
事务回滚并且数据库已恢复到事务开始执行前的状态之后
●提交状态:
成功完成后
4.调度(schedule):
表示指令在系统中执行的时间顺序
●一组事务的一个调度必须包含这一组事务的全部指令,并且必须保持指令在各个事务中出现的顺序
●串行调度:
由来自各事务的指令序列组成,其中属于同一事务的指令在调度中紧挨在一起,对于有n个事务的事务组,共有n!
个有效地串行调度
5.冲突指令:
当Ii与Ij是不同事务对相同的数据项的操作,并且其中至少有一个是write指令时,Ii与Ij是冲突的
6.冲突可串行化
●若调度S可以经过一系列非冲突指令交换转换成S’,S与S’是冲突等价的
●若一个调度S与一个串行调度冲突等价,称调度S是冲突可串行化的
●判断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 总结