数据库实战(一)(关系数据库设计)

news2024/11/19 9:20:13

🌈 个人主页:十二月的猫-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。不可用于商业用途转发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1838510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

登录爆破神器:Hydra 保姆级教程

前言 Hydra 是一个广泛使用的网络登录破解工具,支持多种协议(如 HTTP、FTP、SSH、Telnet 等),用于执行暴力破解攻击。它由 Van Hauser 和 The Hackers Choice (THC) 团队开发,设计用于快速和高效地尝试大量用户名和密…

信息技术课如何禁止学生玩游戏

在信息技术课上禁止学生玩游戏是一个常见的挑战,但可以通过一系列策略和工具来有效地实现。以下是一些建议: 明确课堂规则和纪律: (1)在课程开始时,明确告知学生课堂规则和纪律,包括禁止玩游戏的规定。 (2)强调遵守…

创建一个electron桌面备忘录

Sound Of Silence 1.创建electron项目命令: npm create quick-start/electron my-new-project 2选择:√ Select a framework: vue √ Add TypeScript? ... No √ Add Electron updater plugin? ... Yes √ Enable Electron download mirror proxy? .…

记一次生产事故,来来回回搞了一个月

🍅我是小宋,关注我,带你轻松过面试 读源码。提升简历亮点(14个demo) 🌏号:tutou123com。拉你进专属群。 记一次生产事故,来来回回搞了一个月 背景 我们的主要业务是台湾省的一个小…

工业自动化中OBC充电机测试负载箱的应用

在工业自动化中,OBC充电机是电动汽车和混合动力汽车的重要组成部分。它的主要功能是为电动汽车的电池组提供电能,保证车辆的正常运行。为了保证OBC充电机的性能和安全性,通常需要对其进行严格的测试。在这个过程中,负载箱是一种非…

【SQL server速成之路】函数

(3)LEFT函数 LEFT ( character_expression , integer_expression ) 功能:返回从字符串character_expression左边开始,由integer_expression指定个数的字符。参数character_expression:为字符型表达式,integ…

C#的Switch语句2(如何快速中断函数执行)

文章目录 switch语法结构case具体的值枚举值字符串const关键字 如果没有匹配的值default语句不一定要在最后与C的差异-case穿透(Fall-through) 下一篇文章 switch语法结构 基础的语法结构,在上一篇文章已经写了,具体请看&#xf…

Python --- 如何修改Jupyter Notebook在本地保存文件的默认路径?

如何修改Jupyter Notebook在本地保存文件的默认路径? 一直以来都比较喜欢jupter notebook,自从用了以后就爱上了。平时用的时候,因为大多都是临时调用,每次在界面里直接new一个新的file就开干。 曾经也想过我创建的这些python文件…

MySQL从5.7升级到8.0步骤及其问题

MySQL从5.7升级到8.0步骤及其问题 前言 本文源自微博客,且以获得授权,请尊重版权。 一、需求背景 Docker环境下,MySQL5.7升级到8.0,数据迁移时使用的是mysqldump方式迁移。 二、迁移步骤 数据备份: docker exec -i 1…

QEMU + Vscode + Arm Arch‘s Linux调试小记

目录 下载QEMU 下载aarch64-gcc 下载BusyBox 编译linux 6.9.5的内核 启动! 链接到vscode进行远程调试 Reference 前几天看到了一篇讲授如何调试ARM Linux内核的文章,这里现在记录一下调试ARM Linux内核的办法 下载QEMU 对于Arch Linux用户而言&a…

结构思考力:让你的思维更有条理

在这个信息爆炸的时代,如何让自己的思维更有条理,更高效地沟通显得尤为重要。最近读了《结构思考力》一书。今天,我想和大家分享一下读后感,从以下几个方面展开:1. 什么是结构思考力及其重要性;2. 为什么要…

数据治理创新路:建设数据集市,强化数据报送一致性新实践

随着信息化和数字化的飞速发展,数据已经成为企业运营和决策的核心要素。然而,数据治理的复杂性和多样性给企业带来了不小的挑战。为了更好地应对这些挑战,许多企业开始探索数据治理的创新路径,其中建设数据集市和强化数据报送一致…

Vue08-webpack使用

webpack使用 1、什么是Webpack 本质上, webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler) 。当webpack处理应用程序时, 它会递归地构建一个依赖关系图(dependency graph) , 其中包含应用程序需要的每个模块&#xff0…

期货以旁观者心态关注市场,会更加理性

1.期货交易具备较高灵活度,相比于股票,期货盈利速度明显提升。针对普通投资者,适量参与中线投机更为合适。 2.选择期货品种需兼顾市场属性稳定与计划特点较弱两方面,以及波动剧烈、投机特征显著的品种。 3.若市场环境不利且缺乏机…

temu跨境选品师是怎么样的一个项目?

TEMU(特穆)跨境选品师项目,作为一项创新的全球商品采购和选品服务,正在逐步改变消费者对于跨境电商产品的认知和选择方式。这个项目不仅仅是一个简单的商品推荐平台,更是一种以数据驱动的精准选品策略的体现,为消费者提供了全新的…

【操作系统】操作系统课后作业-聊天程序

无名管道与有名管道的区别 无名管道: 它是半双工的,具有固定的读端和写端。 只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 不是普通的文件,不属于其他任何文件系统,并且只存…

期望25K,我的React知识体系

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 我最终还是上岸了,花了3天总结了近万字的react知识体系思维导图,分享出来希望能帮助有缘人吧,以下只是部分截图&…

org.eclipse.milo opcua 库查看记录

1 Reference连接 在OPC UA Server中,所有Node之间都是使用Reference进行连接的。 读取时指定HierarchicalReferences就可以读取HierarchicalReferences及以下所有类型的节点。 2 nodeId读取 browse 默认读取了Method、Object、Variable类型节点,Refer…

CCS条形光源——HLDL3系列,长距离和宽范围照射应用的不二之选

机器视觉系统中,光源起着重要作用,不同类型的光源应用也不同,选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用条形光源HLDL3系列。 高亮LED光源HLDL3系列 适用于长距离和宽范围照射的条形光源。 适用于各种检测案例&a…

Linux DNS配置文档

一、问题描述 1. 无法在浏览器通过域名访问百度; 2. 无法在终端 ping 通百度,例如:ping www.baidu.com 3. 可以 ping 通公网地址,例如:ping 114.114.114.114 或 ping 8.8.8.8 二、问题原因 域名解析 DNS 配置错误&am…