华东理工大学数据库原理级复习文档格式.docx
《华东理工大学数据库原理级复习文档格式.docx》由会员分享,可在线阅读,更多相关《华东理工大学数据库原理级复习文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
T3,D,0,10>
T3,COMMIT>
试写出系统重启后恢复处理的步骤及恢复操作(指UNDO、REDO操作),并指明A,B,C,D恢复后的值分别是多少?
3、可串行调度10.9(P366)
假设3个事务T1,T2,T3的操作按调度S1执行。
S1:
R2(A)R1(B)W2(A)R3(A)W1(B)W3(A)R2(B)W2(B)
(1)画出S1调度的优先图。
(2)S1冲突可串行化吗?
若是,给出它的等价串行调度。
(3)将R2(B)移到R3(A)之前可得到新的调度S2。
S2:
R2(A)R1(B)W2(A)R2(B)R3(A)W1(B)W3(A)W2(B)
S2冲突可串行化吗?
4简述查询优化的一般步骤。
(p280)
(1)逻辑优化:
产生逻辑上与给定关系代数表达式等价的表达式
(2)代价估计:
估计每个执行计划的代价
(3)物理优化:
对所产生的表达式以不同方式做注释,产生不同的查询执行计划
1.将查询转换成某种内部表示,通常是语法树
2.根据一定的等价变换规则把语法树转换成标准(优化)形式
3.选择低层的操作算法
对于语法树中的每一个操作:
计算各种执行算法的执行代价;
选择代价小的执行算法
4.生成查询计划(查询执行方案)
下面有一个销售管理数据库,它包含下面三张表:
商场表Market(商场号Mno,商场名Mname,所在城市City)
商品Item(商品号Ino,商品名Iname,商品类别Type,颜色Color,)
销售表Sales(商场号Mno,商品号Ino,售价Price,数量Qty,销售日期Date)
用关系代数表达式实现查询:
1.查询商场“物贸商场”2008年1月1日以后销售的商品名称、售价和销售数量。
2.查询没有销售过“家用电器”的商场名和所在城市。
用SQL语句实现下述功能
3.查询上海每个商场都销售的商品的商品号和商品名。
4.创建一个视图,包括每个商场中商场号,商品的最低售价和最高售价。
5.删除“物贸商场”的所有销售记录。
某企业集团的数据库中包含了三个基本表:
GOODS(Gno,Gname,Cost,Type,Fact,Wqty)
商品表商品号,商品名,成本价,型号,制造商,库存数量
SHOPS(Sno,Sname,Addr,Manager)
商场表商场号,商场名,地址,经理
SALES(Sno,Gno,Qty,Sdate,Price)
销售表商场号,商品号,数量,日期,售价
•创建一个带参(参数是商场名)存储过程SAL_Amount,统计某个商场的总销售额。
•为表SHOPS创建一个删除触发器Tr_Del,当在表SHOPS中删除一个商场的信息时,把该商场的所有销售记录删除。
设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。
如果规定:
每个职工每天只有一个营业额;
每个职工只在一个部门工作;
每个部门只有一个经理。
试回答下列问题:
根据上述规定,
(1)写出模式R的最小函数依赖集和候选码;
(2)说明R不是2NF的理由,并把R分解成2NF模式集;
(3)进而分解成3NF模式集。
解:
①R的最小函数依赖集F={职工编号,日期}→日营业额,职工编号→部门名,部门名→部门经理}
R的候选码为(职工编号,日期)。
②R中有函数依赖:
职工编号→部门名
可见存在非主属性“部门名”部分函数依赖于候选码,所以R不是2NF模式。
R应分解成R1(职工编号,部门名,部门经理)
F1={职工编号→部门名,部门名→部门经理}主码:
职工编号,无外码。
R2(职工编号,日期,日营业额)F2=={职工编号,日期}→日营业额},
主码:
(职工编号,日期),外码:
职工编号此处,R1和R2都是2NF模式。
③R2已是3NF模式。
在R1中,存在两个函数依赖:
职工编号→部门名,部门名→部门经理。
其候选码为:
职工编号
这样“部门经理”对“职工编号”是一个传递依赖,R1不是3NF模式。
R1应分解成R11(职工编号,部门名)
F11={职工编号→部门名}主码:
职工编号,外码:
部门名
R12(部门名,部门经理)F12={部门名→部门经理}主码:
部门名,无外码
这样,ρ={R11,R12,R2}是一个3NF模式集。
下面是一个旅行社的业务描述:
(1)每一个旅游线路有唯一的线路号,有一个起点和终点;
(2)一个旅游线路可有多个旅游团,每个团只属于一个线路,出发日期,回程日期和单价;
(3)一个游客有一个编号,并记录其姓名、电话和地址,一个旅游团可有多个游客,一个游客只能参加一个旅游团;
根据上述业务描述得到关系模式R(线路号,起点,终点,团号,出发日期,回程日期,报价,游客编号,游客姓名,电话,地址)请完成:
(1)写出R的基本函数依赖集和候选码。
(2)判断R最高可达到第几范式,为什么?
(3)它有插入异常吗,请举例说明
(4)将R分解为一组满足3NF的模式。
解:
(1)基本函数依赖集是:
{线路号→起点,线路号→终点,团号→线路号,团号→出发日期,团号→回程日期,团号→报价,游客编号→游客姓名,游客编号→电话,游客编号→地址,游客编号→团号}R的候选码是:
游客编号
(2)因为R中存在着非主属性如“回程日期”对候选码游客编号的传递函数依赖,所以R属于2NF,R不属于3NF。
(3)存在插入异常,如要开设一个新的旅游线路,这时还没有游客。
这时游客编号为空,又因为它是主属性,所以新开设的线路信息是无法存入到数据库中的。
(4)将R分解成3NF:
R1(线路号,起点,终点)F1={线路号→起点,线路号→终点}
R2(团号,线路号,出发日期,回程日期,报价)
F2={团号→线路号,团号→出发日期,团号→回程日期,团号→报价)
R3(游客编号,游客姓名,电话,地址,团号)
F3={游客编号→游客姓名,游客编号→电话,游客编号→地址,游客编号→团号}
设有关系模式R(A,B,C,D,E),函数依赖集F={AB→C,C→D,D→E},
试判断ρ={ABC,CD,DE}是否具有
(1)无损连接性
(2)函数依赖保持。
(1)初始表如表1
A
B
C
D
E
ABC
a1
a2
a3
b14
b15
CD
b21
b22
a4
b25
DE
b31
b32
b33
a5
根据AB→C不能改变表1
根据C→D,可将表1修改为表2
根据D→E,可将表2修改为表3
在表3中可以看出第一行为全a,即表示分解ρ具有无损连接。
(2)考察分解的依赖保持性
F在ABC上的投影为AB→C
F在CD上的投影为C→D
F在DE上的投影为D→E
三个投影的并正好为F,所以分解ρ函数依赖保持。
设有关系模式R=ABCDE,F={A→D,E→D,D→B,BC→D,DC→A},现有如下分解:
ρ={AB,AE,CE,BCD,AC}。
请给出求解过程。
判断上述分解ρ是否无损连接。
给出函数依赖集F在ρ的各个模式上的投影。
判断分解ρ是否保持函数依赖。
AB
b13
b14→a4
AE
b22→a2
b23
b24→b14
CE
b31→a1
b32→a2
b34→b14→a4
BCD
b41→a1
b45
AC
b52→a2
b54→b14→a4
b55
A→D:
b24→b14,b54→b14
E→D:
b34→b14D→B:
b22→a2,b32→a2,b52→a2
BC→D:
b14→a4,b34→b14→a4,b54→b14→a4
DC→A:
b31→a1,b41→a1
由函数依赖A→D,可将b24和b54都改为b14,由函数依赖E→D,可将b34改为b14,由函数依赖D→B,可将b22、b32和b52改为a2,由函数依赖BC→D,可将所有的b14改为a4,由函数依赖DC→A,可将b31和b41改为a1,这时第3行成为全a行,所以该分解ρ具有无损连接性。
函数依赖集F在各关系模式上的投影如下:
在AB上的投影:
F1={A→B}
在AE上的投影:
F2=Æ
在CE上的投影:
F3=Æ
在BCD上的投影:
F4={BC→D,D→B}
在AC上的投影:
F5=Æ
因F1È
F2È
F3È
F4È
F5={A→B,BC→D,D→B}与F不等价,所以该分解不具有函数依赖保持。
1某体育运动有来自多个体育代表团参加比赛项目。
其中:
代表团包含的属性:
团编号,地区,住所;
运动员包含的属性:
编号,姓名,年龄,性别;
比赛类别包含的属性:
类别编号,类别名,负责人;
比赛项目包含的属性:
项目编号,项目名,级别;
并规定:
(1)一个代表团可有多个运动员,一个运动员只能属于一个代表团;
(2)一个比赛类别可有多个比赛项目,一个比赛项目只能属于一个比赛类别;
(3)一名运动员可参加多个比赛项目,一个比赛项目可有名运动员参加,并且要记录比赛时间和成绩。
(1)设计该计算机管理系统的E-R图
(2)将该E-R图转换为关系模型结构,并指出每个关系的主码及外码。
运动员(编号,姓名,年龄,性别,团编号)外码:
团编号
代表团(团编号,地区,住所)
比赛类别(类别编号,类别名,负责人)
比赛项目(项目编号,项目名,级别,类别编号)外码:
类别编号
参加(编号,项目编号,比赛时间,成绩)2个外码:
编号、项目编号
2下面是一个货运公司的车队管理系统,有车队、司机、车辆和维修公司等数据,具体描述如下:
(1)一个车队有多名司机,一个司机只能在一个车队工作,要记录聘用日期;
(2)一个车队拥有多个车辆,一个车辆只能属于一个车队;
(3)一个维修公司可以维修多个车辆,一个车辆可以在多个维修公司维修。
要记录维修日期和费用。
描述车队的属性有:
车队号、名称、地址;
描述司机的属性有:
司机号、姓名、执照号、电话;
描述车辆的属性有:
车牌号、车型、颜色、载重;
描述维修公司的属性有:
维修公司号、名称、地址。
请完成:
车辆(车牌号,车型,颜色,载重,车队号)外码:
车队号
维修公司(维修公司号,名称,地址)
车队(车队号,地址,名称)
司机(司机号,姓名,执照号,电话,聘用日期,车队号)外码:
维修(车辆号,维修公司号,维修日期,费用)2个外码:
车辆号、维修公司号
合并时存在的冲突有两种:
命名冲突:
项名和项目名异名同义,统一为项目名。
结构冲突:
项目在两个局部E-R图中,一个作为属性,一个作实体,合并统一为实体。
(3)转换的关系模式为:
运动队(队编号,队名,教练姓名)
队员(队员姓名,性别,队编号)
项目(项目名,场地)
参加(队编号,项目名)
比赛(队姓名,项目名)
数据模型的组成要素有:
数据结构:
描述数据库的组成对象以及对象之间的联系
数据操作:
指对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及有关的操作规则
数据完整性约束:
一组数据完整性规则,是数据、数据语义和数据联系所具有的制约和依存规则,包括数据结构完整性规则和数据操作完整性规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据库中数据的正确、有效和相容。
逻辑数据模型:
层次模型、关系模型、网状模型、面向对象模型、XML模型:
层次模型用树形结构来表示各类实体以及实体间的联系。
实体用记录来表示,实体间的联系用链接(可看作指针)来表示。
满足如下两个条件的基本层次联系的集合为层次模型:
1、有且只有一个结点没有双亲结点,这个结点称为根结点
2、根以外的其他结点有且只有一个双亲结点
每个结点表示一个记录型,记录(型)之间的联系用结点之间的连线(有向边)表示,这种联系是父子之间的一对多的联系。
每个记录型由若干个字段组成,记录型描述的是实体,字段描述的是实体的属性。
满足如下两个条件的基本层次联系的集合称为网状模型
允许一个以上的结点无双亲;
一个结点可以有多个双亲
关系数据模型的数据结构:
关系模型由一组关系组成,每个关系的数据结构是一张规范化的二维表,常用术语有:
关系、元组、属性、码、域、分量、外码、关系模式。
关系数据模型的操作主要包括查询和更新(插入、删除和修改)。
关系模型的数据操作是集合操作,操作对象和操作结果都是关系(元组的集合)。
关系数据模型的完整性约束:
实体完整性、参照完整性和用户自定义完整性。
数据库的三级模式:
模式,也称为逻辑模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
模式的一个具体值称为模式的一个实例(instance)。
它是DBMS模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关
外模式,也称子模式或用户模式,对应于视图层数据抽象。
是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一具体应用有关的数据的逻辑表示。
外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。
内模式,也称存储模式,对应于物理层数据抽象,它是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式。
数据库的两层映像功能与数据独立性:
外模式/模式映像:
对应于一个模式可以有多个外模式。
对于每一个外模式,数据库管理系统都有一个模式/外模式映像,它定义了该外模式与模式之间的对应关系。
在各自的外模式描述中定义外模式/模式映像。
保证了数据与应用程序的逻辑独立性,简称为数据的逻辑独立性。
模式/内模式映像:
数据库中只有一个模式,也只有一个内模式,模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。
在模式描述中定义模式/内模式映像。
保证了数据与应用程序的物理独立性,简称为数据的物理独立性。
定长记录、变长记录:
用文件表示逻辑数据模型的不同方式:
定长记录和变长记录
定长记录指文件中所有记录均具有同样的字节长度。
变长记录指文件中的记录具有不同的存储字节数。
在数据库系统中,以下几种情况会导致使用变长记录:
1、多种记录类型(即多个关系表)在一个文件中存储;
2、允许记录类型中包含一个或多个变长字段;
有多种变长记录的存储管理技术,分槽页结构一般用于在块中组织记录。
完整性约束条件:
数据库的完整性是针对数据库中的数据进行正确性的维护,防止数据库中存在不符合语义、不正确的数据。
完整性约束条件作用的对象可以是关系、元组、列三种:
列约束主要是列的类型、取值范围、精度、是否允许空值等的约束条件;
元组约束是元组中属性间联系的约束;
关系约束是若干元组间、关系集合上以及关系之间的联系的约束。
完整性约束,其状态可是静态的,也可是动态的。
静态约束:
指数据库每一确定状态时的数据对象所应满足的约束条件。
动态约束:
指数据库从一种状态转变为另一种状态时的新、旧值之间所应满足的约束条件。
完整性约束又分为立即执行的约束和延迟执行的约束:
立即执行约束:
检查是否违背完整性约束的时机是在一条语句执行完后立即检查。
延迟执行约束:
需要延迟到整个事务执行结束后再进行检查。
实体完整性要求基本表的主码值唯一且不允许为空值。
参照完整性为若干个表中的相应元组建立联系。
用户自定义完整性就是定义某一具体应用中数据必须满足的语义要求,包括属性上的约束(列值非空、列值唯一、设置默认值)和元组上的约束(设置不同属性之间的取值的相互约束条件)两种。
事务特性:
原子性(atomicity)。
事务的所有操作要么全部都被执行,要么都不被执行。
一致性(consistency)。
一个单独执行的事务应保证其执行结果的一致性,即总是将数据库从一个一致性状态转化到另一个一致性状态。
隔离性(isolation)。
当多个事务并发执行时,一个事务的执行不能影响另一个事务,即并发执行的各个事务不能互相干扰。
持久性(durability)。
一个事务成功提交后,它对数据库的改变必须是永久的,即使随后系统出现故障也不会受到影响。
两阶段封锁协议:
两阶段封锁协议要求每个事务分两个阶段完成封锁操作:
增长(申请锁)阶段和缩减(释放锁)阶段:
增长阶段:
事务可以获得锁,但不能释放锁;
缩减阶段:
事务可以释放锁,但不能获得新锁。
两阶段封锁协议能保证冲突可串行化。
对于任何事务,调度中该事务获得其最后加锁的时刻(增长阶段结束点)称为事务的封锁点。
这样,多个事务可以根据它们的封锁点进行排序,而这个顺序就是并发事务的一个冲突可串行化顺序。
建立冗余数据常用技术:
数据转储和登录日志文件