数据库思路理清_第1页
数据库思路理清_第2页
数据库思路理清_第3页
数据库思路理清_第4页
数据库思路理清_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 :引言什么是数据库管理系统(DBMS)?数据库管理系统由一个互相关联的数据的集合和一组用来访问这些数据的程序组成。文件管理系统的弊端:1. 数据的冗余和不一致:冗余即相同的信息在多个地方重复存储,不一致即同一数据的不同副本不一致。2. 数据访问困难:访问原有程序不能直接得到的数据时,要手动提取所需信息或者编写新的程序。3. 数据孤立:数据分散在不同的文件,文件有不同的格式,编写新程序来访问适当数据困难。4. 完整性问题:数据完整性由一系列约束来保证,而文件系统需要添加适当代码来实现这些约束,当涉及多个文件的多个数据项时,代码难以实现约束。5. 并发访问异常。6. 安全性问题:并非所有数

2、据库系统的用户都可以访问所有数据,文件系统难以保证这一点。什么是数据抽象?数据抽象对用户屏障复杂性。数据抽象分为:1. 物理层:描述数据实际上怎样存储(即数据结构)。2. 逻辑层:描述存储什么数据以及数据之间有什么关系。3. 视图层:只描述整个数据库的一部分。什么是模式和实例?模式是数据库的总体设计。实例是特定时刻在数据库中的信息的集合。模式和实例的区别:实例是模式在某一时刻的值。什么是数据模型?数据模型是一个描述数据,数据联系,数据语义和完整性约束的概念工具的集合。数据模型分为4类:1. 关系模型。2. 实体-联系模型。3. 基于对象数据模型。4. 半结构化数据模型。结构化查询语言SQL分为

3、:数据定义语言DDL。数据操作语言DML。DML分为:过程化DML:指定需要什么数据和怎样获得这些数据。声明化DML:只指定需要什么数据,不指定怎样获得这些数据。数据库设计过程:1. 全面刻画数据库用户的需求,制作用户需求说明。2. 概念设计阶段:选择一个数据模型,并采用数据模型的概念将需求转换成一个概念模式。3. 逻辑设计阶段:将概念模式映射到将要使用的数据模型上。4. 物理设计阶段:指定数据库模式在数据库中的物理特征。概念设计阶段和逻辑设计阶段的区别:概念设计阶段一般选择的是实体-联系模型,逻辑设计阶段一般使用的是关系模型。概念设计阶段得到的是概念模式,逻辑设计阶段得到的是关系模式。什么是

4、规范化?规范化是用来设计一个关系模式集合,使这些集合无冗余且容易检索数据。什么是不好的数据库设计?1. 冗余:即信息重复。2. 不完整:即不能表达某些信息。数据库系统的体系结构包括:1. 集中式。2. 客户/服务器式。3. 并行式。4. 分布式。第2章 :关系模型关系模式中对所有关系r的要求:r的每个属性的域都是原子的。(即每个属性的域的元素被看作不可再分。)超码,候选码,主码的区别:超码唯一的确定一个元组。候选码是最小的超码。主码是不经常改变的候选码。关系代数基本运算:一元运算:选择,投影,更名。二元运算:集合并,集合差,笛卡尔积。选择:选择出一个关系中满足条件的元组。投影:返回一个关系中的

5、某些属性。更名:对一个关系表达式更改关系名和属性名。集合并:将2个关系的元组并在一起。集合差:将2个关系的元组做差。笛卡尔积:将任意2个关系的信息组合在一起。笛卡尔积怎样组合2个关系?新关系的模式等于2个关系模式串接。新关系的元组等于关系1中每一个元组和关系2中每一个元组匹配。做集合并和集合差运算的2个关系要满足的特点:1. 同元:即属性数目相等。2. 同域:r的第i个属性的域和s的第i个属性的域相等。(这里不要求属性名字相等。)关系代数附加运算:集合交,自然连接。集合交:将2个关系的元组做交。自然连接:新关系的模式等于2个关系模式的并。自然连接的元组是选择同属性且同值的元组对合并。自然连接和

6、笛卡尔积的区别:自然连接的模式相当于在笛卡尔积的模式上将相同属性合并。自然连接的元组相当于在笛卡尔积的元组上选择2个关系中同属性且同值的元组。扩展的关系代数运算:广义投影:允许用算术表达式对关系代数表达式进行投影。聚集函数:输入值的一个集合,输出单一值。左外连接:在自然连接的元组上加上左边关系中不匹配的元组。外连接的优点:可以避免连接时造成信息的丢失。关系代数和SQL的区别:关系代数默认去重,SQL默认不去重。第3章 :SQLSQL包括:数据定义语言:即定义关系模式,删除关系,修改关系模式的命令。数据操纵语言:即插入,删除,修改元组的命令和基于关系代数和元组关系盐酸的查询语言。SQL和关系代数

7、的联系:select对应投影。from对应笛卡尔积。where对应选择。union,intersect,except分别对应并,交,差。(SQL默认不去除重复,但union,intersect,except会自动去除重复。)SQL用from加where里面的=号实现的连接和自然连接的区别:用from加where里面的=号实现的连接:关系模式是串接得到的,元组是在笛卡尔积的元组上选择自己想要的2个关系中属性值相等的元组。自然连接:关系模式是并得到的,元组是在笛卡尔积的元组上选择所有同属性同值的元组。null值的使用带来了什么麻烦?如果算术运算的输入有一个为空,则算术运算(+-*/)结果为空。如果

8、空值参与了比较运算,则比较运算结果为unknown。如果空值参与了聚集函数,则除了count(*)以外的聚集函数都忽略空值。(如果聚集函数所有输入都为空值,则count运算结果为0,其他为空值。)unknown在布尔运算中的运算规则:false>unknown>true o o oand看成取圈圈的交集,or取并集,not取差集。选择元组时只选择布尔运算结果为true的元组,不会选择false和unknown的元组。测试元组是否为集合中成员:in测试查询结果中是否有元组:exists表示关系A包含关系B:not exists(B except A)测试查询结果中是否有重复元组:un

9、ique什么是视图?视图是任何不是逻辑模型的一部分但作为虚关系对用户可见的关系。视图和关系的区别:当根据一个表达式创建视图或者关系时,视图会根据表达式中的关系变化而变化。关系不会根据表达式中的关系变化。怎样避免在update关系时语句执行次序不同造成更新结果错误的问题?使用case子句。视图更新会产生的问题:如果要对视图更新,要对表达式中的关系更新,但是视图的属性和表达式关系的属性不匹配。SQL中每一种连接操作都包括:一个连接类型和一个连接条件。连接类型:inner join,(left,right,full)outer join连接条件:natual,on+谓词,using(属性)(on+谓

10、词相当于在where中+谓词。)连接类型和连接条件的区别:连接类型决定怎样处理不匹配的元组。连接条件决定哪些元组匹配和连接结果中出现哪些属性。(外连接一定要选择连接条件,内连接可以省略连接条件,因为省略后变为笛卡尔积。)第4章 :高级SQL用户定义数据类型包括:1.独特类型。2.结构化数据类型。创建新类型,删除类型,修改类型:create type Dollars as numeric(12,2) finaldrop typealter type创建域类型:create domain DDollars as numeric(12,2)类型和域的区别:域可以指定约束,类型不能指定约束。域不是强类

11、型,类型相容时一个域类型的值可以赋给另一个域类型,类型是强类型,不能相互赋值。什么是完整性约束?完整性约束可以保证用户对数据库修改时不会改变数据的一致性。完整性约束包括:primary key约束。not null约束。unique约束:指定一组属性形成候选码。check约束:在关系或域声明时使用,指定一个关系中所有元组都要满足的谓词或该域类型的变量的所有赋值都要满足的谓词。参照完整性约束(外码约束):在建立参照完整性约束后,参照关系的值必须是被参照关系的值的子集。(无论是修改哪个关系,只要不满足子集,就违反了参照完整性约束。)违反了参照完整性约束后的处理方法:1. 拒绝执行。2. 在参照完整

12、性约束后加上级联删除或者级联更新,允许执行。怎样使一个约束在事务完成时才检查会否满足约束?将约束设置为可延迟的:set constraints constraint-list deferredSQL权限包括:Select,insertt,delete,update。默认情况下,授予了一个权限的用户/角色不能将该权限授予给其他用户/角色,除非通过“授予权限”权限来实现。数据库内的存储过程和应用进程的关系:1. 应用进程可以调用存储过程。2. 存储过程发生变化时,不需要改变应用进程。第6章 :数据库设计和E-R模型E-R模型包括:实体集:即具有相同属性的实体的集合。联系集:即实体集中的实体之间的同

13、类联系的集合。属性。怎样表示一个实体?实体通过一组(属性,数据值)对来表示。怎样表示一个联系实例?联系实例通过参与它的实体来表示。E-R模型中的属性分为:1. 简单属性和复合属性。2. 单值属性和多值属性。3. 派生属性:即可以由其他属性或实体派生得到的属性。什么是角色?角色是实体在联系中的作用。角色的作用:当同一个实体集参与一个联系集的次数大于1时,则需要用角色名来区分一个实体参与联系实例的方式。联系集的描述性属性的作用:当2个实体有多个联系实例时,不能用实体对来区分这些联系实例,需要通过描述性属性来区分这些联系实例。E-R模型的约束:映射基数:表示1个实体通过1个联系最多与多少个实体关联。

14、码约束:实体集的主码用来区分实体集中不同的实体,联系集的主码用来区分联系集中不同的联系实例。参与约束:即实体集中的实体全部或者部分参与到联系集中。映射基数出现的情况:1对1,1对多,多对1,多对多。怎样判断是几对几?如果1个A可以有多个B,则从A到B是1对多。如果1个B可以有多个A,则从B到A是1对多。要综合A到B和B到A的2种情况来判断几对几。怎样求联系集的主码?联系集的主码由联系集的映射基数的多方的主码组成。怎样表示映射基数:1.用箭头表示,指向的一方为一。(联系集外最多只允许有一个箭头,否则会产生歧义。)2. 用l.h表示。(其中l表示最小映射基数,h表示最大映射基数。)怎样将1个三元联

15、系转换成2元联系?1. 将三元联系R分解为3个二元联系RA,RB,RC,并新建实体集E。2. 将R的属性赋值给E,并为E建立标识属性。3. 对于R中每一个联系集,都在E中建立相应的实体,在RA,RB,RC中建立相应的联系。什么时候可以将联系集的属性放到实体集中?联系集属性的布局和映射基数有关。1对1的映射基数,联系属性可以放到任一方的实体集中。1对多或多对1的映射基数,联系属性只可以放到多方的实体集中。多对多的映射基数,联系属性不能放到实体集中。什么是弱实体集?弱实体集是没有足够的属性形成主码的实体集。弱实体集参与联系的特点:1. 弱实体集必须关联一个标识实体集。2. 弱实体集和标识实体集之间

16、的联系称为标识性联系。3. 弱实体集到标识实体集是多对1,且全部参与的联系。4. 标识性联系集中没有描述性的属性。(因为弱实体集总是多方,可以把联系属性放到弱实体集中。)怎样区分弱实体集中不同的实体?使用弱实体集中的分辨符。怎样求弱实体集的主码?弱实体集的主码由标识实体集的主码+弱实体集的分辨符组成。扩展E-R特性包括:特殊化和一般化。高层实体集和低层实体集。属性继承。聚集。特殊化:即对实体集内部进行分组的过程。一般化:即特殊化的逆过程。什么是属性继承?由特殊化和一般化产生的高层实体和低层实体属性之间的关系。(即高层实体集相关联的所有属性和联系都适用于它的所有低层实体集,低层实体集特有的性质仅

17、适用于特定的低层实体集。)什么是聚集?聚集是一种抽象,将联系当作高层实体,这个联系就是聚集。聚集的作用:用来表示联系间的联系。弱实体集怎样转换为关系模式?关系模式的属性=标识实体集的主码+弱实体集所有属性。关系模式的主码=标识实体集的主码+弱实体集的分辨符。关系模式上建立外码约束:即弱实体集主码中标识实体集的部分参照标识实体集的主码。联系集怎样转换为关系模式?联系集的属性=参与联系的实体集的主码求并+联系集的描述性属性。联系集的主码=联系集的映射基数的多方的主码。关系模式上建立外码约束:即联系集主码中实体集的部分参照相应实体集的主码。(标识联系集不转换为关系模式,因为它总是冗余的。)什么时候可

18、以将联系集和实体集的关系模式合并?当实体集全部参与到联系集中。怎样合并联系集和实体集的关系模式?关系模式的属性=联系集和实体集的关系模式的所有属性求并。关系模式的主码=合并到联系集中的实体集的主码。关系模式上的外码约束=原联系集中的外码约束-参照合并到联系集中的实体集的外码约束。怎样将E-R模型中的属性转换为关系模式中的属性?简单属性转换为单独的属性。复合属性转换为多个单独的属性。多值属性转换为新的关系模式。怎样将多值属性转换为新的关系模式?关系模式的属性=多值属性+多值属性所在的实体集或联系集的主码。关系模式的主码=关系模式的所有属性。关系模式上的外码约束:即关系模式的主码中实体集或联系集的

19、部分参照相应实体集或联系集的主码。一般化的高层实体集和低层实体集怎样转换为关系模式?1. 为高层实体集创建关系模式。2. 为每一个低层实体集创建关系模式,模式的属性=高层实体集的主码属性+低层实体集的特有属性,模式的主码=高层实体集的主码。3. 为每一个低层实体集建立外码约束,即低层实体集的主码参照高层实体集的主码。(如果一般化是不相交且全部的,步骤1变成为高层实体集创建只有主码的关系模式。)第7章 :关系数据库设计关系数据库设计的目标:设计一组关系模式,这组模式不存储重复信息且方便获取信息。什么是有损分解和无损分解?无损分解:分解后的关系自然连接后能得到原来的关系。有损分解:分解后的关系自然

20、连接后不能得到原来的关系。怎样证明一个分解是无损分解?1. 将分解后的2个关系自然连接,看是否能得到原来的关系。2. 从函数依赖的角度,如果R1交R2->R1或R2(即R1交R2是R1或R2的超码),则是无损分解。什么是第一范式?第一范式规定一个关系模式的所有属性的域都是原子的。属性的域不是原子的会导致什么问题?属性的值是集合会导致数据的冗余,数据的冗余会导致不一致性。什么是函数依赖?函数依赖是一组属性的值依赖于另一组属性的值。函数依赖的种类包括:平凡的函数依赖:即A->B,A包含B。关系实例r的函数依赖和关系模式R的函数依赖的区别:在r上满足的函数依赖不一定在R上满足,不能添加到

21、R的函数依赖集中。、什么是函数依赖集F的闭包?F的闭包F+是F能推导(逻辑蕴含)出的所有函数依赖的集合。怎样计算F的闭包F+?1.使用Armstrong定理,即自反律,增补律,传递律。2.使用比Armstrong定理简单的规则,即合并律,分解律,伪传递律。3.对于R的每一个属性集r,都计算r的闭包r+,输出所有函数依赖得到F+。怎样证明属性集K是关系模式R的超码?1. 从函数依赖的角度,如果存在函数依赖K->R,则K是超码。2. 从属性集的闭包的角度,如果K的闭包K+包含R的全部属性,则K是超码。什么是BCNF?BCNF规定一个关系模式R的F+中任意A->B至少满足:A->B

22、是平凡函数依赖或A是R的一个超码。(如果关系模式R是第一次分解,其实只需要检查F中的任意A->B,因为F中的函数依赖满足BCNF,则F+中的函数依赖也必然满足BCNF。)怎样判断一个关系模式R是否满足BCNF?1. 定义。2. BCNF规定对于关系模式R的所有子集A,A的闭包A+要么不包含R-A的属性,要么包含R的所有属性。(相当于从属性值闭包的角度,解析定义。)怎样将一个不满足BCNF的关系模式分解为满足BCNF的关系模式?对于不满足BCNF的关系模式R中一个非平凡且A不是超码的函数依赖A->B:将R分解为两个关系模式(AUB)和(R-(B-A))。(其中AUB一定满足BCNF,

23、因为在关系模式AUB中A->R,即A是超码。)继续分解关系模式(R-(B-A)),直到分解后的关系模式全部满足BCNF。什么是第三范式?第三范式规定一个关系模式R的F+中任意A->B至少满足:A->B是平凡函数依赖或A是R的一个超码或B-A中的每个属性都包含在R的一个候选码中。(注意B-A中的每个属性可以包含在R的不同的候选码中。)BCNF和第三范式的区别:BCNF不一定能保持函数依赖,第三范式一定能保持函数依赖。什么是属性集的闭包?属性集A的闭包A+是在函数依赖集F下A能确定的属性的集合。怎样计算A的闭包A+?使用算法:1. A+=A2. 对于F中每一个函数依赖,只要左半边

24、在A+中,就将右半边加入A+中。3. 循环步骤2,直到A+不再变化。什么是正则覆盖?正则覆盖是函数依赖集F的简化版,正则覆盖的闭包=F的闭包,关系模式R只要满足正则覆盖里的函数依赖,就会满足F里的函数依赖。怎样计算F的正则覆盖Fc?去掉F中的无关属性。什么是无关属性?如果一个函数依赖的左半部分中的属性A去掉后,F逻辑蕴含F剩余,则A是无关属性。如果一个函数依赖的右半部分中的属性B去掉后,F剩余逻辑蕴含F,则B是无关属性。正则覆盖Fc里的函数依赖的特点:1. 所有函数依赖都没有无关属性。2. 没有2个函数依赖的左半部分相同。怎样验证保持依赖?对于关系模式R分解为关系模式R1.Rn,1. 将F的闭

25、包F+中的函数依赖分配到R1.Rn,如果这些分配的函数依赖集求并的闭包=F+,则保持依赖。2. 对于F上的依赖A->B,1.result的初始值=A2.对于R1.Rn,执行t=(result交Ri)+交Ri,将t加到result中。(这个闭包是计算在F下的闭包,不是Fi下的闭包。)3.如果result中包含B的所有属性,则这个依赖A->B保持了。第8章 :触发器什么是触发器?触发器是一条当数据库修改时,自动被系统执行的语句。触发器的执行过程:1. 定义触发器的事件,条件和执行时的动作。2. 当触发器的事件发生,条件被满足,数据库会执行相应的动作。触发器的作用:1.用来保持数据的一致

26、性。第15章 :事务什么是事务?事务是构成单一逻辑工作单元的操作集合。为了保证数据完整性,数据库要维护事务的性质包括:原子性:即事务的所有操作要么都执行,要么都不执行。一致性:即没有其他事务并发执行时,保证数据的一致性。隔离性:即多个事务并发执行时,对于某一个事务,认为同一时刻只有它一个事务在执行。持久性:即事务成功执行后,对数据库的改变是永久的。事务的状态包括:活动状态:即初始状态,事务执行时的状态。部分提交状态:即最有一条语句执行后的状态。失败状态:即执行失败的状态。中止状态:即事务回滚到执行前的状态。提交状态:即事务成功完成的状态。事务并发执行的优点和缺点:优点:1. 提高吞吐量和资源利

27、用率。2. 减少等待时间。缺点:容易导致数据不一致。什么是调度?调度是多个事务并发执行时,全部指令的执行顺序。怎样判断一个并发调度是否保持了数据库的一致性?如果一个并发调度的结果和串行调度的结果相同,则这个并发调度保持了一致性。什么时候一个调度中的2条连续指令会发生冲突?当2条连续指令对同一个数据项操作,且至少一个操作是写操作时,会发生冲突。2个连续指令发生冲突导致:2条 连续指令不能交换执行顺序。什么是冲突等价的?冲突等价即2个调度可以通过非冲突的指令的交换相互转换。什么是冲突可串行化?冲突可串行化即一个调度S可以通过非冲突的指令的交换转换为串行调度。什么是可恢复调度?可恢复调度即当某一事务

28、发生故障时,该事务和依赖于该事务的所有事务都可以回滚到事务执行前的状态。(即级联回滚。)可恢复调度要求事务满足的条件:对于调度中的每一对事务Ti和Tj,如果Tj读取了Ti写的数据项,则Ti要先于Tj提交。无级联调度要求事务满足的条件:对于调度中的每一对事务Ti和Tj,如果Tj读取了Ti写的数据项,则Ti要先于Tj这个读操作之前提交。无级联调度和可恢复调度的联系和区别:联系:无级联调度总是可恢复调度。区别:可恢复调度只要求在Tj提交前提交,无级联调度要求在Tj读操作前提交。第16章 :并发控制并发控制的目的:当多个事务并发执行时,保证事务的隔离性。一个数据项上锁的要求:如果数据项已经被加上了与将

29、加入的锁不相容的锁,则要等待不相容的锁释放后,才能加入将要加入的锁。释放锁时可能导致的问题:过早的释放锁可能会导致数据不一致。过晚的释放锁可能会导致死锁。什么是封锁协议?封锁协议用来规定一个调度中的每一个事务何时对数据项加锁和解锁。什么是饿死?多个事务连续对数据项加共享锁,有一个事务总不能对该数据项上排他锁,导致这个事务饿死。怎样避免饿死?授权加锁。授权加锁的加锁条件:1. 相容才能加锁。2. 必须按照申请时间的先后顺序加锁。什么是两阶段封锁协议?两阶段封锁协议即在增加阶段只能加锁,在缩减阶段只能释放锁。什么是事务的封锁点?事务的封锁点即一个事务最后加锁的位置。封锁点的顺序的作用:封锁点的顺序

30、就是事务的可串行化顺序。两阶段封锁协议的优点和缺点:优点:1. 保证了合法调度的冲突可串行化(即保证了一致性)。缺点:1. 不能保证不发生死锁。2. 可能会发生级联回滚。什么是严格两阶段封锁协议?严格两阶段封锁协议在两阶段的基础上,要求事务的所有排他锁必须在事务提交后才能释放。严格两阶段封锁协议的优点:1. 保证了合法调度的冲突可串行化(即保证了一致性)。2. 不会发生级联回滚。什么是强两阶段封锁协议?强两阶段封锁协议在两阶段的基础上,要求事务的所有锁必须在事务提交后才能释放。锁转换允许的时间:锁提升(upgrade)只能在增长阶段。锁降级(downgrade)只能在缩减阶段。数据库系统自动为事务产生锁的过程:如果事务read(Q),系统自动lock-S(Q),(注意read(Q)在lock-S(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论