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

🌈 个人主页:十二月的猫-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.mzph.cn/diannao/31631.shtml

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

相关文章

百度地图使用任意图片旋转任意角度作为地面贴图

公司项目有个需求是要在地图上贴个航拍的照片做出类似卫星地图的效果,但是只有一张图片而且可以随时替换,也不好做瓦片地图,而且照片的角度可以任意旋转。 要实现这个功能需要解决以下问题: 百度地图怎么贴图片图片角度如何旋转 不卖关子,我先放出实现的效果,为了不涉及侵…

期末考后怎样发成绩?

老师们,下周可就是期末考啦,又到了头疼发成绩的时候了。每当这个时候,家长们总是急切地咨询孩子的考试表现,向老师们询问成绩。这种场景几乎成了每学期结束时的常态。 别担心,我来安利一个超棒的工具——“易查分小程序…

一键制作,打造高质量的数字刊物

随着数字化时代的到来,数字刊物已经成为信息传播的重要载体。它以便捷、环保、互动性强等特点,受到了越来越多人的青睐。然而,如何快速、高效地制作出高质量的数字刊物,成为许多创作者面临的难题。今天,教大家一个制作…

Codepen Three.js环境依赖配置

Codepen Three.js环境依赖配置 前言 如果想在CodePen环境写Three.js依赖的项目,环境搭建可以参考该Codepen项目: Chill the lion 详细 打开设置可以看到以下配置 更多项目参考 1. Chill the Lion Chill the Lion 是一个基于 ThreeJS 制作的 WebGL 示例。它由…

使用MyBatis的动态SQL注解实现实体的CRUD操作

使用MyBatis的动态SQL注解实现实体的CRUD操作 1. 引言2. 准备工作2.1 创建数据表2.2 创建实体类 Book2.3 修改Mapper接口 BookMapper 3. 测试CRUD操作3.1 配置日志3.2 查询操作3.3 新增操作3.4 修改操作3.5 删除操作 4. 与MyBatis Plus的对比5. 动态SQL注解的适用场景5.1 动态查…

API低代码平台介绍6-数据库记录删除功能

数据库记录删除功能 在前续文章中我们介绍了如何插入和修改数据库记录,本篇文章会沿用之前的测试数据,介绍如何使用ADI平台定义一个删除目标数据库记录的接口,包括 单主键单表删除、复合主键单表删除、多表删除(整合前两者&#x…

JS 【详解】树的遍历(含深度优先遍历和广度优先遍历的算法实现)

用 js 描述树 let tree [{label:a,children:[{label:b,children:[{label:d},{label:e}]},{label:c,children:[{label:f}]}]} ]使用数组是因为树的节点有顺序 深度优先遍历 从根节点出发,优先遍历最深的节点 遍历顺序为 abdecf function DFS(tree) {tree.forEach(…

揭示SOCKS5代理服务器列表的重要性

在复杂的网络安全领域中,SOCKS5代理在保护在线活动方面发挥着关键作用。本文深入探讨了SOCKS5代理服务器列表的细节,探讨了它们的应用、优势以及在增强在线安全和隐私方面不可或缺的功能。 一、理解SOCKS5代理服务器列表 作为在客户端和服务器之间进行通…

QListWidget、QMenu、Action、customContextMenuRequested

QListWidget的初始化、清空、Append添加、Insert添加、删除item QListWidget的事件的使用 QToolBox的使用,每个Page可以添加其他控件 QToolBar使用代码添加QMenu,QMenu添加3个Action QToolButton绑定Action 布局 其中 QSplitter比较特殊, 允许在水平或垂…

实现锚点链接点击tab跳转到指定位置 并且滚动鼠标顶部锚点的样式也跟随变化

实现效果如下 不管是点击还是 滚动鼠标 顶部的样式也会跟随变化 点击会跳转到指定的位置 通过IntersectionObserver 监听是否可见 下面代码可以直接执行到vue的文件 <template><div><ul class"nav"><li v-for"tab in tabs" :key…

Nvidia Isaac Sim组装机器人和添加传感器 入门教程 2024(5)

Nvidia Isaac Sim 入门教程 2024 版权信息 Copyright 2023-2024 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. …

采购管理系统:反向竞价失败的 6 个常见原因

在当今快节奏和竞争激烈的商业环境中&#xff0c;采购专业人员一直在寻找创新战略来节约成本和简化供应链流程。反向竞价就是其中一种广受欢迎的策略。 反向竞价提供了一种独特的采购方法&#xff0c;允许买家邀请多个供应商参与实时竞标&#xff0c;以争取他们的业务。虽然反…

构建个人文件上传服务:Python Flask实现上传和下载完整指南

介绍 在本教程中&#xff0c;我们将学习如何使用Python Flask框架将文件上传到服务器&#xff0c;并使用SQLite数据库来跟踪上传的文件。我们将提供后端代码和一个示例项目的Git链接&#xff0c;以便您可以轻松地跟随本教程。 准备工作 首先&#xff0c;您需要安装Python和F…

太爱这种数据可视化效果,零售行业的都看过来

在当今数字化浪潮下&#xff0c;数据可视化已成为零售行业洞察市场趋势、优化运营决策的关键技术。奥威BI零售数据分析方案凭借其卓越的数据可视化效果&#xff0c;成为零售企业的得力助手。接下来就通过BI节假日分析报表来简单地感受一下。 注&#xff1a;该BI节假日分析报表…

DDMA信号处理以及数据处理的流程---cfar检测

Hello,大家好,我是Xiaojie,好久不见,欢迎大家能够和Xiaojie一起学习毫米波雷达知识,Xiaojie准备连载一个系列的文章—DDMA信号处理以及数据处理的流程,本系列文章将从目标生成、信号仿真、测距、测速、cfar检测、测角、目标聚类、目标跟踪这几个模块逐步介绍,这个系列的…

Nacos安装教程(很细很简单),解决启动报错Please set the JAVA_HOME

nacos安装 找到你要下载的版本解压到任意非中文目录下端口默认8848&#xff0c;如有端口冲突&#xff0c;可修改配置文件中的端口。编辑shutdown.cmd文件&#xff0c;路径换成你的jdk安装地址否则会报错Please set the JAVA_HOME variable in your environment, We need java(x…

Manim本地安装

目录 背景Manim安装及配置一个上手例子参考文献 背景 通过上一期的介绍&#xff0c;我们对Manim有了初步的认识也知道Manim版本的区别&#xff0c;这一期&#xff0c;我们来给自己的计算机安装一个社区版ManimCE&#xff0c;方便以后玩Manim。笔者的硬件配置是联想笔记本Windo…

机器学习:人工智能的子领域之一

引言 人工智能&#xff08;AI&#xff09;已经成为现代科技的重要组成部分&#xff0c;推动了许多领域的创新与进步。在人工智能的诸多子领域中&#xff0c;机器学习&#xff08;ML&#xff09;无疑是最关键和最具影响力的一个。机器学习通过自动分析和学习数据中的模式&#x…

JavaScript的学习之强制类型转换

目录 一、什么是强制类型转换 二、其他类型转化为String类型 方式一&#xff1a;调用被转化数据类型的toString()方法 方式二&#xff1a;调用String函数&#xff0c;并将我们要转换的数据添加进去为参数 三、其他类型转化为Number类型 方式一&#xff1a;使用Number()函数…

环境配置04:Pytorch下载安装

说明&#xff1a; 显存大于4G的建议使用GPU版本的pytorch&#xff0c;低于4G建议使用CPU版本pytorch&#xff0c;直接使用命令安装对应版本即可 GPU版本的pytorch的使用需要显卡支持&#xff0c;需要先安装CUDA&#xff0c;即需要完成以下安装 1.查看已安装CUDA版本 GPU对应…