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

news2024/11/24 9:58:38

🌈 个人主页:十二月的猫-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/1849877.html

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

相关文章

在scrapy中使用Selector提取数据

经院吉吉: 首先说明一下,在scrapy中使用选择器是基于Selector这个对象滴,selector对象在scrapy中通过XPATH或是CSS来提取数据的,我们可以自己创建selector对象,但在实际开发中我们不需要这样做,因为respons…

DAY10-力扣刷题

1.最后一个单词的长度(简单) 58. 最后一个单词的长度 - 力扣(LeetCode) 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子…

8.华为两台交换机的三种连接方式access 、trunk、undo portswitch

目的:两台三层交换机的三种连接方式 1.access 2.trunk 3.undo portswitch 模拟机不支持此配置,实体机支持 第一种access CE1配置 [~HUAWEI]vlan batch 10 [~HUAWEI]int Vlanif 10 [~HUAWEI-Vlanif10]ip add 10.10.10.1 24 [~HUAWEI]int g1/0/0 [~HUAWE…

空间复杂度 线性表,顺序表尾插。

各位少年,大家好,我是那一脸阳光,本次分享的主题是时间复杂度和空间复杂度 还有顺序表文章讲解和分享,如有不对可以评论区指导。 时间复杂度例题 // 计算斐波那契递归Fib的时间复杂度? long long Fib(size_t N){if(N…

用友U9-UBF自定义报表-打印模板开发学习笔记

自定义报表、打印模板开发学习笔记 一、基础了解 1、UBF开发工具的了解 Ideconfig.xml配置 True:打印、报表设计模式 False:单据设计模式 2、开发环境试用 BE:实体项目 BF:操作项目 SV:服务项目 分析项目&am…

昨天gitee网站访问不了,开始以为电脑哪里有问题了

昨天gitee网站下午访问不了,开始以为是什么毛病。 结果同样的网络,手机是可以访问的。 当然就ping www.gitee.com 结果也下面那样是正常的 以为是好的,但就是访问www.gitee.com也是不行,后来用阿里云的服务器curl访问是下面情况&…

当flex-direction: column时,设置flex:1不生效解决办法

当需求是: 页面纵向排列,且最后一个元素撑满剩余高度 flex:1在横向排列时是可以的,但是纵向排列会失效,此时需要给最后一个子元素设置align-self: stretch;即可撑满剩余高度 <div class"father"><div class"child child1"></div><div…

2021数学建模C题目– 生产企业原材料的订购与运输

C 题——生产企业原材料的订购与运输 思路&#xff1a;该题主要是通过对供应商的供货能力和运送商的运货能力进行估计&#xff0c;给出合适的材料订购方案 程序获取 第一题问题思路与结果&#xff1a; 对 402 家供应商的供货特征进行量化分析&#xff0c;建立反映保障企业生…

配置 python 脚本操作Excel 环境

在已装python的前提下 一、安装依赖库 pip install pandas pip install openpyxl安装完后&#xff0c;可以在 Python 中运行以下命令来查看 pandas 或 openpyxl 的安装路径&#xff1a; import pandas as pd print(pd.__path__)import openpyxl print(openpyxl.__path__)二、测…

Redis数据过期、淘汰策略

数据过期策略&#xff1a; 惰性删除&#xff1a; 设置该key过期时间后&#xff0c;我们不去管它&#xff0c;当需要该key时&#xff0c;我们在检查其是否过期&#xff0c;如果过期&#xff0c;我们就删掉它&#xff0c;反之返回该key。 这种方式对cpu友好&#xff08;只在用…

lambdastreammaven

1.Lambda &#xff08;1&#xff09;Java 8 Lambda 表达式 在 Java 8 以前&#xff0c;若我们想要把某些功能传递给某个方法&#xff0c;总要去写内部类 或匿名内部类类。代码示例&#xff1a; list.sort(new Comparator<User>() { Override public int compare(User …

C语言| 数组倒置算法

数组倒置 方法一 1 定义两个数组a[5] b[5],两个循环变量i j 2 用for循环&#xff0c;把数组a的最后一个数&#xff0c;赋值给数组b第一个元素 3 输出数组b 【程序代码】 #include <stdio.h> int main(void) { int a[5] {11, 22, 33, 44, 55}; int b[5]; …

nodejs从基础到实战学习笔记-nodejs简介

一、Node.js简介 • Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 • Node采用Google开发的V8引擎运行js代码&#xff0c;使用事件驱动、非阻塞和异步I/O模型等技术来提高性能&#xff0c;可优化应用程序的传输量和规模。 1.1 特性 …

PPT的精细化优化与提升策略

&#x1f44f;&#x1f44f;&#x1f44f;欢迎来到我的博客 ! 亲爱的朋友们&#xff0c;欢迎您们莅临我的博客&#xff01;这是一个分享知识、交流想法、记录生活的温馨角落。在这里&#xff0c;您可以找到我对世界独特视角的诠释&#xff0c;也可以与我一起探讨各种话题&#…

【SAP ME 42】关于SAP ME自定义开发中NWDS中配置JDK

1、NWDS启动配置JDK -vm C:/Java/jdk1.8.0_361/bin 2、开发组件配置JDK

一种简单的图像分析

简介 一种简单的边界分析&#xff0c;通过相邻的像素的灰度进行判断&#xff0c;计算出边界。 测试1 原图 结果 测试2 原图 结果 代码说明 主要的技术在makeTable过程中&#xff0c;这个过程主要执行了以下几步 计算每个像素的灰度计算相邻多个像素的最大灰度差统计灰度差…

GPT-4o目前暂无音频输出的能力

OpenAI的发布会惊艳的操作&#xff0c;近乎实时的语音对话&#xff0c;让很多人向往。 但实际上Chat对话时&#xff0c;尚无输出音频的能力&#xff0c;可能还未开放。 这是国外的一个开发小哥的交流帖子&#xff0c;可能还需要些时日才能用的上实时的音频输出。 不过当前Op…

Python MicroPython库:嵌入式开发

更多Python学习内容&#xff1a;ipengtao.com MicroPython是一种精简高效的Python解释器&#xff0c;专为运行在微控制器和受限环境下设计。它支持大多数Python语法和标准库&#xff0c;同时提供了丰富的硬件控制接口&#xff0c;使开发者能够用Python编写嵌入式应用。MicroPyt…

Windows系统下安装RabbitMQ详细步骤

声明&#xff1a;原文参考链接出自&#xff1a; 如何在Windows系统下安装RabbitMQ_rabbitmq windows安装-CSDN博客 https://zhuanlan.zhihu.com/p/693160757 一、RabbitMQ安装软件资源准备 因为RabbitMQ是Erlang语言开发的&#xff0c;因此安装Erlang环境在进行安装RbbitMQ的…

展讯-GPIO操作

1.修改IO配置 以GPIO92为例 IO配置文件在&#xff1a; bsp/kernel/kernel4.14/arch/arm64/boot/dts/sprd/uis8581e5h10.dts bsp/bootloader/u-boot15/board/spreadtrum/uis8581e5h10/pinmap-sp9863a.c 配置 按上述内容&#xff0c;配置IO口 编译之前查看硬件GPIO&#xff0c…