数据库最小函数依赖求法 附相关习题及解析

首先我们给出最小函数依赖的定义

如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。
① F中的任何一个函数依赖的右部仅含有一个属性;
② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;
③ F中不存在这样一个函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。

可能我们大多数开始看的时候,都会觉得的很绕口,其实很简单,就是有一些字母 X 和函数依赖集 F,你可以找到一个最小的函数依赖集,它的所有函数依赖的箭头右边都只有一个字母,且不影响把箭头右边的字母都推出来,并且左边的字母数量也是最少,没法再删减了

算法

  1. 右部最小化:即把所有的右边不是单个属性的依赖变为单个属性。
  2. 求谁挡谁:把这个依赖删除,看左边属性的闭包能否包含右边的属性,就是把他挡住,看没了他还行不行。
  3. 左部最小化:对于函数依赖,如果左边不是单个属性,那我们挡住一个属性,看其他的属性还能推出来右边的属性吗,可以的话就删掉他,不可以的话就保留。

我们来看个例题:

关系模式R(U,F)中,U={A,B,C,D,E,G},F={B→D,DG→ C,BD→E,AG→B,ADG→BC};求F的最小函数依赖集。

  1. 右部最小化

    ADG→BC拆解成ADG→B、ADG→C

    得新函数依赖集:

    F = {B→D,DG→C,BD→E,AG→B,ADG→B,ADG→C}

  2. 求谁挡谁

在这里插入图片描述
3. 左部最小化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

习题:设F={C→A, CG→D, CG→B, CE→A, ACD→B}, 求最小函数依赖集。(11分)

答案:

(1)右部最小化:函数依赖集F满足右部最小化;
(2)求谁挡谁:CE→A可去掉,CG→B可去掉,所以可得F1={C→A, CG→D, ACD→B};
(3)左部最小化:可将ACD→B用CD→B取代。

所以F的最小函数依赖集为{C→A, CG→D, CD→B}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux专区】如何配置新服务器 | 添加普通用户到sudoers | 配置vim | git免账号密码pull push

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《Linux专区》👈 💬前言: 时隔131天,你的好友Claffic重新发文了!(✿◕‿◕✿) 上期已经带大家白嫖了阿…

Unity坦克大战开发全流程——游戏场景——敌人——移动的敌人

游戏场景——敌人——移动的敌人 制作预制体 将坦克拖拽至场景中进行设置 写代码 让坦克在两点之间不停移动 随机坐标函数 然后在start()中调用即可 坦克要一直盯着玩家 当小于一定距离时,攻击玩家 重写开火逻辑 注意还要将其tag改成Monster! 当敌人死…

鲲志说:向我乘风破浪,好事多磨的2023致敬!(感恩有礼,感谢有你)

伴随着2023最后一个工作日的结束,也终于要给一年的工作划上一个结尾了,当然,也要给自己一个交代,给自己一个年度总结 2023年,大的挫折也是有的,但我相信好事多磨,总的来说是事业型的一年&#x…

前端--基础 目录文件夹和根目录 VScode打开目录文件夹

目录 目录文件夹和根目录 : 目录文件夹 : 根目录 : VScode 打开目录文件夹 : VScode 打开文件夹 : 拖拽目录文件夹 : 目录文件夹和根目录 : 我们都清楚,在实际的工作中会…

考研后SpringBoot复习1

考研后SpringBoot复习 Hello World入门 复习的版本为SpringBoot2的版本 创建maven项目 在pom文件中导入SpringBoot的依赖同时引入web开发的启动器 <!--声明springboot父项目--><parent><groupId>org.springframework.boot</groupId><artifactId>…

Markdown之EBNF语法介绍(二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

C语言实验3:函数的定义

目录 一、实验要求 二、实验原理 1.函数头 2.函数体 3.函数的定义及使用 三、实验内容 1. sum函数 代码 截图 分析 2. sum函数 代码 截图 分析 3. rank_grade函数 代码 截图 分析 4. rank_grade函数 代码 截图 分析 5. 函数的嵌套使用 代码 截图 分析…

vue中怎么缓存当前组件?缓存后怎么更新?今天来说说keep-alive的理解

&#xff08;看完点个关注呗&#xff0c;持续更新&#xff09; 一、Keep-alive 是什么 keep-alive是vue中的内置组件&#xff0c;能在组件切换过程中将状态保留在内存中&#xff0c;防止重复渲染DOM keep-alive 包裹动态组件时&#xff0c;会缓存不活动的组件实例&#xff0c…

Pycharm2023版本:Python远程调试配置详解

工欲善其事&#xff0c;必先利其器 首先你需要选择一个专业版本的pycharm&#xff0c;社区版本不支持远程配置功能&#xff0c;专业版下载地址&#xff1a;Pycharm 2023 双击程序进行安装&#xff0c;30天内免费试用&#xff0c;如果想要永久使用&#xff0c;办法你懂的&…

Java强软弱虚引用

面试&#xff1a; 1.强引用&#xff0c;软引用&#xff0c;弱引用&#xff0c;虚引用分别是什么&#xff1f; 2.软引用和弱引用适用的场景&#xff1f; 3.你知道弱引用的话&#xff0c;能谈谈WeakHashMap吗&#xff1f; 目录 一、Java引用 1、强引用&#xff08;默认支持模式…

Cisco模拟器-OSPF路由协议

设计要求用两台双口路由器连接不同IP网段的计算机&#xff0c;并使用OSFP协议发现路由表使不同IP网段的计算机可以相互通信。 通过设计&#xff0c;可以连通IP地址网段不同的局域网&#xff0c;可应用在园区网的互连和互通的实现上。 主要配置步骤 路由器0&#xff1a; Router…

科技创新实验室数据管理优选:高效企业网盘推荐

科技创新实验室建设是国家加强科技创新基本能力建设的重要措施&#xff0c;企业网盘等高效办公工具的应用是保证科技创新实验室正常运行、提高科研项目团队合作效率的重要手段。 本文将介绍企业网盘Zoho WorkDrive提供的解决方案&#xff1a; 行业痛点1&#xff1a;分散的数据…

蓝队应急响应- windows常用命令

在蓝队日常中&#xff0c;免不了被入侵&#xff0c;那么就需要对目前的主机或者服务器进行检查&#xff0c;在日常生活中&#xff0c;人们使用最多的还是windows&#xff0c;比如客服的电脑中了木马&#xff0c;这个时候就需要蓝队去进行溯源等后续操作。 1. msinfo32.exe 打开…

Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置

文章目录 前言相关链接环境配置&#xff1a;AnacondaPython配置OpenCVOpencv-contrib:Opencv扩展 Notebook:python代码笔记vscode配置配置AnacondaJupyter文件导出 前言 作为一个C# 上位机&#xff0c;我认为上位机的终点就是机器视觉运动控制。最近学了会Halcon发现机器视觉还…

理解ByteBuffer

Buffer 的使用 我们通过 Java 中 NIO 包中实现的 Buffer 来给大家讲解&#xff0c;Buffer 总共有 7 种实现&#xff0c;就包含了 Java 中实现的所有数据类型。 本篇文章中&#xff0c;我们使用的是 ByteBuffer&#xff0c;其常用的方法都有&#xff1a; putgetfliprewindmark…

【基础】【Python网络爬虫】【2.请求与响应】常用请求报头和常用响应方法

Python网络爬虫基础 爬虫基础请求与相应HTTP/HTTPS 协议HTTP/HTTPS的优缺点HTTP 的缺点HTTPS的优点 请求与响应概述请求请求目标&#xff08;url&#xff09;请求体&#xff08;response&#xff09;常用的请求报头查看请求体&#xff08;requests 模块&#xff09; 响应HTTP响…

微服务(10)

目录 46.k8s中镜像的下载策略是什么&#xff1f; 47.image的状态有哪些&#xff1f; 48.如何控制滚动更新过程&#xff1f; 49.DaemonSet资源对象的特性&#xff1f; 50.说说你对Job这种资源对象的了解&#xff1f; 46.k8s中镜像的下载策略是什么&#xff1f; 可通过命令k…

报错大全(未完待续)

springboot Could not find artifact org.springframework.boot:spring-boot-maven-plugin 报错环境&#xff1a;昨天的springboot项目的pom文件正常&#xff0c;今天再打开就会有些依赖爆红 解决步骤&#xff1a; 去maven的仓库里找你下载的依赖文件&#xff0c;路径是你的…

证明:切线垂直于半径

证明&#xff1a; 切线垂直于过切点的半径。 下面是网上最简单的证明方法。 证明&#xff1a; 利用反证法。 如下图所示&#xff0c;直线AB和圆O切于点A&#xff0c;假设OA 不垂直于 AB&#xff0c;而 O B ⊥ A B OB \perp AB OB⊥AB&#xff0c;则 ∠ O B A 90 \angle OB…

感染了后缀为.[sqlback@memeware.net].2700勒索病毒如何应对?数据能够恢复吗?

导言&#xff1a; 近期&#xff0c;[sqlbackmemeware.net].2700 勒索病毒成为网络安全的一大威胁。该勒索病毒采用高度复杂的加密算法&#xff0c;将用户文件加密并勒索赎金。了解该病毒的特征对于有效恢复被加密数据以及预防进一步感染至关重要。如果受感染的数据确实有恢复的…