数据库精选题(一)(关系数据库设计)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀数据库

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

前言

练习题

题型一:判断关系模式属于第几范式(在BCNF内判断)

题型二:求最小依赖集(正则覆盖)

题型三:求闭包(求属性闭包)

题型四:求候选键

题型五:分解关系R为BCNF,且具有无损连接性

题型六:分解关系R为3NF,且具有无损连接性和保持函数依赖

分解综合题

1. R(U, F), U = {A, B, C, D}, F = {AB → C, C → D, D → A}


前言

本系列的重点是大学本科课程《数据库系统概念》。总结数据库学习中的各类知识点,并且对各类数据库考试中可能遇到的题型和对应的解法做总结归纳。在自我复习的同时也将这份心得带给大家,希望能对大家的数据库学习提供帮助~~

练习题

题型一:判断关系模式属于第几范式(在BCNF内判断)

题解模板:

  1. 根据候选码快速判断法确定候选码
  2. 从高级范式到低级范式,根据各个范式定义确定(总结性定义,非概念性定义)

BCNF:平凡依赖/左边属性集a是超码

3NF:平凡依赖/左边属性集a是超码/b-a属于候选码

2NF:非主属性完全依赖于候选码

(1) R(U, F), U = {X, Y, Z}, F = {XY → Z}

候选码:XY

根据BCNF定义(平凡依赖或左边a是候选码)。由于XY是候选码,所以是BCNF范式

(2) R(U, F), U = {X, Y, Z}, F = {Y → Z, XZ → Y}

候选码:(XZ)/(XY)

根据3NF定义(平凡依赖或左边a是候选码或b-a属于候选码)。由于Z-Y=Z属于候选码;XZ是候选码,所以是3NF范式

(3) R(U, F), U = {X, Y, Z}, F = {Y → Z, Y → X, X → YZ}

候选码:X、Y

根据BCNF定义(平凡依赖或左边a是候选码)。由于X、Y都是候选码,所以是BCNF范式

(4) R(U, F), U = {X, Y, Z}, F = {X → Y, X → Z}

候选码:X

根据BCNF定义(平凡依赖或左边a是候选码)。由于X是候选码,所以是BCNF范式

(5) R(U, F), U = {W, X, Y, Z}, F = {X → Z, WX → Y}

候选码:XW

BCNF由于X不满足;3NF由于Z不属于候选码不满足;

根据2NF定义(非主属性完全依赖主属性):由于Z是非主属性但是依赖X,是部分依赖主属性。所以仅是1NF

(6) R(U, F), U = {A, B, C, D, E}, F = {AB → CE, E → AB, C → D}

候选码:E、AB(候选码是:超码中任何子集都不能覆盖所有元素的超码

根据2NF定义(非主属性完全依赖主属性):由于C完全依赖AB;D完全依赖于C也就是完全依赖于AB(这里的完全依赖是在F+中满足即可)。所有是2NF

题型二:求最小依赖集(正则覆盖)

算法:

1、合并

2、将依赖右边属性单一化

3、消除左边的无关属性(消除后判断新的函数依赖r是否正确,即r能不能由F导出)

4、合并

5、消除右边的无关属性

例:设有依赖集:F={ABCCABCDACDBDEGBECCGBDCEAG},计算与其等价的最小依赖集。

解:

1、判断左边的属性都不相同,因此不能合并

2、将依赖右边属性单一化:

 F1={ABCCABCDACDBDEDGBECCGBCGDCEACEG }

3、消除F1中左边无关属性:

由于C→A故E是多余的;对于ACDB,由于(CD+=ABCEDG,故A是多余的。删除依赖左部多余的依赖后:

    F2={ABCCABCDCDBDEDGBECCGBCGDCEG }

检查左边没有无关属性

4、合并

F3={ABCCABCDCDBDEGBECCGBDCEG }

5、 消除F3中右边无关属性:

对于CGB,由于(CG+=ABCEDG,故CGB是多余的。删除依赖左部多余的依赖后:

    F4={ABCCABCDCDBDEGBECCGDCEG }

检查右边没有无关属性

6、左右边都没有无关属性,正则覆盖求解结束

题型三:求闭包(求属性闭包)

求属性闭包流程:

1、拿属性集A,逐一放到函数依赖a->b中,如果a∈A则新增b到属性集A中

2、不停重复放到函数依赖中,直到一轮后属性集A不再变化

例:关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)+。

解:

1、A→D扩充AE变为ADE

2、E→C扩充ADE变为ACDE

3、CD→I扩充ACDE变为ACDEI

4、走一轮发现ACDEI不再变化,因此(AE)+=ACDEI

题型四:求候选键

快速求解理论:

对于给定的关系R(A1,A2,…, An)和函数依赖集F,可将其属性分为四类:

L类:仅出现在F的函数依赖左部的属性;

R类:仅出现在F的函数依赖右部的属性;

N类:在F的函数依赖左右两边均未出现的属性;

LR类:在F的函数依赖左右两边均出现的属性。

定理1  对于给定的关系模式R及其函数依赖集F,若X(X属于R)是L类属性,则X必为R的任一候选关键字的成员。

定理对于给定的关系模式R及其函数依赖集F,若XX属于R)是R类属性,则X不在任何候选关键字中。

定理 3 对于给定的关系模式R及其函数依赖集F,若XX属于R)是N类属性,则X必为R的任一候选关键字的成员。


利用快速理论求解步骤:

1、找L类、N类属性加为候选码A

2、求A的闭包看是否全覆盖属性

3、如果覆盖结束;如果不覆盖则继续4

4、找R类属性,将其排除

5、找剩下的属性,逐一加入A中得到A‘,看是否是候选码

   1:关系模式RUF),其中U={ABCD}F={ABCD},试求此关系的候选键。解:根据理论得AC为候选码

   例设有关系模式R(ABCD),其函数依赖集F={DBBDADBACD},求R的所有候选键。解:根据理论得AC,(AC)+=ACDB,因此AC是候选码

题型五:分解关系R为BCNF,且具有无损连接性

BCNF分解不能做到一定保持函数依赖,但是可以保证无损连接

流程:

1、找到result中不符合BCNF的关系模式Ri

2、找到Ri中的非平凡函数依赖a->b,其中a不是超码

3、利用(result-Ri)∪(Ri-b)∪(a,b),将不满足的Ri分解为两个可能满足的关系模式(Ri-b是指在关系模式Ri中去掉和属性b有关的所有函数依赖,但是属性并不去除,同时要重新找新的函数依赖,这个依赖是在闭包里的)

设关系模式R(A,B,C,D,E),FD={A->D, E->D,  D->B,  BC->D,  EC->A}。试求:

(1)R的候选码

(2)R所属的范式

(3)R分解为BCNF,且具有无损连接性

解:

(1)候选码为:CE,非主属性:ABD

(2)判断2NF:A依赖CE;B依赖D依赖A依赖CE;D依赖A依赖CE。因此满足2NF(这个依赖是在闭包中满足

(3)

第一次选择A->D函数依赖:得到R1(ABCE,EC->A,E->B);R2(AD,A->D)

第二次选择E->B函数依赖:得到R1(ACE,EC->A);R2(AD,A->D);R3(BEE->B)

题型六:分解关系R为3NF,且具有无损连接性和保持函数依赖

3NF合成算法流程:

  1. 求出F的正则覆盖Fc
  2. 根据Fc的每个函数依赖分解关系模式R
  3. 判断是否有其中一个R包含候选码
  4. 如果没有则增加一个仅包含候选码的关系模式Ri

TEACHER(教师编号,教师姓名,电话,所在部门,借阅图书编号,书名,借书日期,还书日期,备注)

1)教师编号是候选码吗?说明理由

2)该关系模式的主码是什么?

3)该关系模式是否存在部分函数依赖?如果存在,请写出至少两个?

4)该关系模式满足第几范式?

5)将该关系模式分解为3NF

解:

1)教师编号不是候选码。

(2)假定对任一本书一个人一天只能借一次,则主码为

教师编号,借阅图书编号,借书日期;

非主属性为教师姓名、电话、所在部门、书名、还书日期、备注

(3)存在。

(教师编号,借阅图书编号,借书日期)->教师姓名

(教师编号,借阅图书编号,借书日期)->教师电话

(教师编号,借阅图书编号,借书日期)->所在部门

(教师编号,借阅图书编号,借书日期)->书名

(4)因为存在非主属性对于码的部分函数依赖,所以,未达到二范式,只属于一范式。

(5)

     教师(教师编号,教师姓名,电话,所在部门)

     图书(图书编号,图书名)

     借阅(教师编号,图书编号,借书日期 还书日期,备注)

分解综合题

将给定的关系模式分解成满足BCNF(Boyce-Codd Normal Form)和3NF(Third Normal Form)的关系模式

1. R(U, F), U = {A, B, C, D}, F = {AB → C, C → D, D → A}

候选码:AB、CB、BD

BCNF:

1、选C → D分解得到R1(ABC,AB → C)R2(CD,C → D)

2、选C→A分解得到R1(BC)R2(CD,C → D)R3(AC,C → A)

3NF:

属于3NF不用分解

2. R(U, F), U = {A, B, C, D}, F = {B → C, B → D}

候选码:AB

BCNF:

1、选B → C分解得到R1(ABD,B → D)R2(BC,B → C)

2、选B → D分解得到R1(AB)R2(BC,B → C)R3(BD,B → D)

3NF:

1、Fc={B->CD}

2、R1(BCD,B->CD)R2(AB)

3. R(U, F), U = {A, B, C, D}, F = {AB → C, BC → D, CD → A, AD → B}

候选码:AB、BC、CD、AD

BCNF:

属于BCNF不用分解

3NF:

属于3NF不用分解

 4. R(U, F), U = {A, B, C, D, E}, F = {AB → C, DE → C, B → D}

候选码:ABE

BCNF:

1、选AB → C分解得到R1(ABDE,B → D)R2(ABC,AB → C)

2、选B → D分解得到R1(ABE)R2(BD,B → D)R3(ABC,AB → C)

3NF:

1、Fc=F

2、分解为{(ABE)、(ABC)、(CDE)、(BD)}

5. R(U, F), U = {A, B, C, D, E, F}, F = {A → B, C → DF, AC → E, D → F}

候选码:AC

BCNF:

1、选A → B分解得到R1(ACDEF,C → DF, AC → E, D → F)R2(AB,A → B)

2、选C → DF分解得到R1(ACE,AC → E)R2(AB,A → B)R3(CDF,C → DF,D → F)

3、选D → F分解得到R1(ACE,AC → E)R2(AB,A → B)R3(CD)R4(DF,D → F)

3NF:

1、Fc={A → B, C → D,AC → E, D → F}

2、分解为{(AB)(CD)(ACE)(DF)}

总结 

本文的所有知识点、图片均来自《数据库系统概念》(黑宝书)、山东大学李晖老师PPT。不可用于商业用途转发。

  • 32
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十二月的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值