首页 > 数据库技术 > 详细

数据库复习

时间:2019-06-27 21:27:43      阅读:197      评论:0      收藏:0      [点我收藏+]

无损连接

无损连接分解的快捷判别方法

  首先要申明,这种快捷方法是有前提的,前提就是分解后的关系模式只有两个。其内容为:

  设ρ={R1,R2}是R的一个分解,F是R上的FD集,那么分解ρ相对于F是无损分解的充分必要条件是:(R1∩R2)→(R1–R2)或(R1∩R2)→(R2–R1)。这个“或”字很重要,这里表示(R1∩R2)→(R1–R2)、(R1∩R2)→(R2–R1)中只要有一个成立就行。这里的求交和相减运算的对象是关系模式的属性。

无损连接参考

函数依赖

可以将R1, R2, R3 ……分别求函数依赖闭包,看是否丢失函数依赖

如果F上的每一个函数依赖都在其分解后的某一个关系上成立,则这个分解是保持依赖的(这是一个充分条件)。

这句话的意思是:将R<U,F>分解后,存在很多分解后的关系,例如分解为R1,R2,R3等。在R<U,F>中,F存在很多的函数依赖,如果F中的每一个函数依赖,都可以在分解后的R1,R2,R3上找到它的属性的话,那么这个分解是保持依赖的。如果找不到的话,还需要进一步去判断。

如果上面的充分条件不能用的话,按照下面的算法来进行补充,对于F上的每个α→β使用以下算法。

算法,核心算法只有最后两行:

result=γ;    //首先定义一个属性,这个属性如何找后文说
while(result发生变化)do    //第一次直接执行,之后对result判断与上一次是否发生变化
    for each 分解后的Ri    //将每个分解后的结构Ri逐个带入
        t=(result∩Ri)+ ∩ Ri    //这里的意思是取result与Ri的交集的闭包值,之后再与Ri取交集
        result=result∪t

如果最后的result中包含了β的所有属性,那么称分解是保持函数依赖的。否则没有保持函数依赖。

求候选键

  • L型:只在左边的出现的节点一定存在于中候选键。(也就是候选键的一个一部分或者全部)

  • R型:只在右边出现的节点一定不是候选键。(啥都不是,它只能被候选键推导出来 。是个铁废物)

  • N型: 两边都没有出现的节点,一点存在于候选键中。

  • LR型:在左边和右边都出现的节点有待观察。依次求闭包

求最小函数依赖集

如果函数依赖集F满足以下条件,则称F为一个极小函数依赖集。也称为最小依赖集或最小覆盖。

(1)F中任一函数依赖的右部仅含有一个属性。

(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。

(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}U{Z→A}与F等价。

① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;

② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;

③ 去掉各依赖左部多余的属性。一个一个地检查函数依赖左部非单个属性的依赖。例如XY→A,若要判Y为多余的,则以X→A代替XY→A是否等价?若A属于(X)+,则Y是多余属性,可以去掉。(以上步骤中,求出关系依赖集F,此时,再F的基础上,求出X或者Y的闭包,是否包含A)

范式

第一范式:强调数据表的原子性。

第二范式: 消除部分函数依赖,部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

第三范式:消除传递函数依赖,在关系模式R(U)中,设X,Y,Z是U的不同的属性子集,如果X确定Y、Y确定Z,且有X不包含Y,Y不确定X,(X∪Y)∩Z=空集合,则称Z传递函数依赖于X。

BC范式:主属性不依赖于主属性。若关系模式R属于第一范式,且每个属性都不传递依赖于键码,则R属于BC范式。即左边都是候选键。

SQL

  • having放在group by 的后面
  • group by 后面只能放非聚合函数的列
  • where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  • having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

聚合函数只能在以下位置作为表达式使用:

  • select 语句的选择列表(子查询或外部查询);
  • compute 或 compute by 子句;
  • having 子句;

执行顺序

–第一步:执行FROM(有join on执行join on)

–第二步:WHERE条件过滤

–第三步:GROUP BY分组(开始使用select中的别名,后面的语句中都可以使用)

–第四步:HAVING条件过滤

–第五步:执行SELECT投影列

–第六步:执行DISTINCT

–第六步:执行ORDER BY 排序

数据库设计

  • 需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 机器实现/数据实施
  • 数据库运行和维护

三级封锁协议

排它锁 X锁

共享锁 S锁

一级封锁协议:防止丢失修改

? 事物T在修改数据之前必须先对其加X锁,直到事物结束释放

二级封锁协议:防止读脏数据

? 事物T在读数据之前加上S锁,读完后即可释放

三级封锁协议:保证数据可重复读

? 事物T在读取数据之前必须对其加上S锁,直到事物结束才释放

数据库复习

原文:https://www.cnblogs.com/tomyyyyy/p/11099655.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!