最小函数依赖集Fm的定义,求法以及举例_最小函数依赖集满足的三个条件-程序员宅基地

技术标签: 数据库  

最小函数依赖集Fm的定义,求法以及举例

定义

如果函数依赖集F满足以下三个条件,则称F为最小函数依赖集,记作Fm

①F中每个函数依赖的右部都是单属性,即右部最简化。
②对于F中任一函数依赖X -> A 和X的真子集X',(F - (X - A)) ∪ (X' -> A)
与F都不等价,即左部无多余属性。
③对于F中任一函数依赖X -> A,F - {X -> A}与F都不等价,即无多余函数依赖。

求法

输入:一个函数依赖集F。
输出:F的一个等价的最小函数依赖集Fm
步骤:
(1)用分解规则,使F中的每个函数依赖的右部仅含单属性。此步为等价分解。
(2)去掉各依赖左部多余的属性。一个一个地检查左部非单个属性地函数依赖。即XY -> A ,判断Y是否多余,则在分解后地F求X的属性闭包X+,若A包含于X+ ,则Y是多余的。此步为等价消属性。
(3)去掉多余的函数依赖。逐一检查上步结果F的各函数依赖X -> A,并将X -> A从F中去掉,然后在剩下的F中去求X+,若A包含于X+,则X -> A多余。依次做下去,直到找不到冗余的函数依赖。此步为等价消依赖。

举例

设有函数依赖集 F = {AB -> CE, A -> C, GP -> B, EP -> A, CDE -> P, HB -> P, D -> HG, ABC -> PG}, 求与 F 等价的最小函数依赖集。

解:
①分解D->HG为D->H、D->G,分解AB->CE为AB->C、AB->E,分解ABC->PG为ABC->P、ABC->G,得到F={AB->C, AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

②判断AB -> C中B是否冗余:由于存在A -> C,故B冗余,F={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

经判断其余左部均无多余属性,进行到下一步。(此处 ABC -> P 和 ABC -> G 可简化)

③判断AB->E是否冗余, F’ ={A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
AB+ = ABCPG, AB->E不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断A->C是否冗余, F’ ={AB->E, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
A+ = A,A->C不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断GP->B是否冗余, F’ ={AB->E, A->C, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
GP+ = GP, GP->B不冗余, **F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G} **

判断EP->A是否冗余, F’ = {AB->E, A->C, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
EP+ = EP , EP->A不冗余, **F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G} **

判断CDE->P是否冗余, F’ = {AB->E, A->C, GP->B, EP->A, HB->P, D->H, D->G, ABC->P, ABC->G}
CDE+ = CDEHG, CDE->P不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断HB->P是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, D->H, D->G, ABC->P, ABC->G}
HB+ = HB, HB->P不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断D->H是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->G, ABC->P, ABC->G}
D+ = DG, D->H不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断D->G是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, ABC->P, ABC->G}
D+ = DH, D->G不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断ABC->G是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P}
ABC+ = ABCEP, ABC->G不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

Fm={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

分解具有无损连接性和依赖保持性的3NF的方法和例子

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45832614/article/details/117627255

智能推荐

【我的Python学习之旅】python语言基础 之 表达式和运算符(五)_python一个表达式中出现多种运算符时,按照小括号运算符、逻辑型、测试性、关-程序员宅基地

文章浏览阅读671次。表达式的组成表达式是可以计算的代码片段,由操作数和运算符构成。操作数、运算符和圆括号按一定的规则组成表达式。表达式通过运算后产生运算结果,返回结果对象。运算结果对象的类型由操作数和运算符共同决定。运算符表明对操作数进行什么样的运算。运算符包括十、一、、/等。操作数包括文本常量(没有名称的常数值,例如1、“abc”)、变量(例如i= 123)、类的成员变量/函数(例如math. pi.math..._python一个表达式中出现多种运算符时,按照小括号运算符、逻辑型、测试性、关

.NET Core C#系列之AKStream.NET摄像头国标GB28181语音对讲之广播请求(信令服务-->摄像头)...-程序员宅基地

文章浏览阅读562次。内容比较多,先一步步的讲吧。发送语音对讲之前,先发用对讲的信令。广播请求(信令服务-->摄像头)至于抓包分析,网上分享的很多了。其实都是发送Broadcast 广播通知,然后摄像头是广播通知应答,然后进行sdp 就行协议交换,可以简单理解成端口交换,其实就是音频流要推动到哪个端口,协商完毕,可以发送音频流。音频流发送结束,发送拜拜信令。整个流程就是如此,这里以https://github...._c#国标gb28181

嵌入式SQL语言-程序员宅基地

文章浏览阅读3.6k次。嵌入式SQL语言一、概述二、变量声明与数据库连接1、变量的声明与使用(1) 数据库与DBMS连接(2) 与数据库断开连接(3) SQL执行的提交与撤消(4) 事务的概念与特性三、数据集与游标1、**检索单行结果**2、检索多行结果3、游标(Cursor)的使用四、可滚动游标及数据库的增删改1、可滚动游标的概念、定义和使用2、数据的删除与更新3、数据库记录的更新4、数据库记录的插入5、示例:宿主语言与SQL结合的过程性控制五、状态捕获及错误处理机制一、概述高级语言+SQL语言既继承高级语言的过程控制性又_嵌入式sql

linux 防火墙 限速,linux iptables限速及限制每IP连接数-程序员宅基地

文章浏览阅读912次。第一步:建立adsl连接,在系统设置——网络设置处有。在图形界面下很容易搞定。第二步:打开IP转发和伪装(也就是路由与NAT)1、作为根用户打开/etc/sysconfig/network文件,在文件增加以下一行: GATEWAYDEV=PPP0 这句话的作用是设定默认路由,有时没有也可2、打开IP转发功能:打开/etc/sysctl.conf文件,修改net.ipv4.ip_forward=0一..._当前限速使用linux 防火墙自带的限速功能。暂不进行自研开发,配置iptables命令即

android switchcompat 颜色,Android SwitchCompat样式-程序员宅基地

文章浏览阅读448次。我在装有Android 5.1.1的新设备上测试了我的应用程序.在我的SettingsActivity中,我有一个开关.我已经阅读了一些帖子,并将其更改为android.support.v7.widget.SwitchCompat,但问题仍然是:在我的旧设备上,开关看起来非常漂亮.您可以为textOn和textOff设置两个文本,它非常适合.但是自从api 21或其他我在这里得到这个小混蛋以来:看..._android switchcompat 样式 写入style

[ADAS预研笔记]感知模型的训练与部署 - 结合TDA4 SDK_adas 算法部署-程序员宅基地

文章浏览阅读738次,点赞2次,收藏12次。预训练和微调都在PC端进行,根据需求选择合适的深度学习框架,如Caffe、PyTorch、TensorFlow等。就是指预先训练的一个模型或者指预先训练模型的过程;就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。在 CNN 领域中,实际上,很少人自己从头训练一个 CNN 网络。主要原因是自己很小的概率会拥有足够大的数据集,基本是几百或者几千张,不像 ImageNet 有 120 万张图片这样的规模。拥有的数据集不够大,而又想使用很好的模型的话,很容易会造成过拟合。_adas 算法部署

随便推点

Halcon dyn_threshold详解_halcon dyn_threshold-程序员宅基地

文章浏览阅读7.8k次,点赞11次,收藏30次。dyn_threshold原型dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )功能利用局部阈值分割图像参数列表OrigImage (input_object):原始图像ThresholdImage (input_object):处理后图像(一般采用滤波处理)RegionDynThresh (output_object):分割后区域Offset (input_control):灰_halcon dyn_threshold

3、基础入门——抓包&封包&协议&APP&小程序&PC应用&web应用_wpe抓微信小程序-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏2次。一个回城动作可能会发送很多数据包,抓包与封包的区别在于:抓包会抓取实现回城这一动作的所有数据包,且分别显示;封包则是以动作为单位进行数据包抓取,最终呈现为抓取到"一个数据包"。Charles不太友好,点一个按钮会高亮多个网址,Fiddler会好点。注意:雷电模拟器4.0会抓不到部分数据包,逍遥模拟器安游戏可能很卡。监控cc进程,实现封包抓包。(不太好用,还得是封包监听工具1.13)封包监听工具1.13(WPE三件套),该工具所有协议都会抓取。对于这种非web协议的APP,需要用。将模拟器的流量转发给。_wpe抓微信小程序

航电oj-2024 C语言合法标识符_航电2567c语言-程序员宅基地

文章浏览阅读293次。 这个题我自己写的不对,在群里问的大佬,代码和解释如下:代码:#include<stdio.h>#include<string.h>#define TRUE 1#define FASLE 0int is(char c){ if(((c>='0')&&(c<='9'))||((c>='a')&&(c..._航电2567c语言

蓝牙4.0核心架构分析_蓝牙软件架构-程序员宅基地

文章浏览阅读617次。蓝牙4.0核心架构分析核心系统架构经典蓝牙核心系统实现蓝牙BR/EDR的最小核心系统涵盖4个底层和蓝牙规范定义的相关协议,以及一个公共服务层协议。服务发现协议(SDP)和所有必要的配置文件在通用访问配置文件(Generic Access Profile,GAP)中定义。BR/EDR核心系统包括对AMP的支持以及AMP管理协议(AMP Manager Protocol)和协议适配层(PAL..._蓝牙软件架构

webrtc aec3效果对比aec与aecm(webrtc M64 20180115版本)_aec3 aecm-程序员宅基地

文章浏览阅读1.3w次,点赞3次,收藏15次。1、webrtc回声消除算法aec3也出来有几个月了,下面看下最新版的aec3效果,使用读文件仿真,例子为webrtc中的audioproc_f.exe,aec3,aec,aecm均使用默认参数,没有改动。在cmd中使能aec3参数audioproc_f -i D:\Git\webrtc-checkout\src\out\Debug\mic.wav-ri D:\Git\webrtc-checkou..._aec3 aecm

jsp/servlet/struts/hibernate/spring内部实现机制_spring + hibernate + jsp-程序员宅基地

文章浏览阅读1.3k次。http://blog.csdn.net/wishfly/article/details/8574564目录(?)[+]jsp原理一、JSP工作原理JSP程序需要运行于特定的Web服务器中,例如Tomcat/WebLogic等。所有JSP文件,在执行的时候都会被服务器端的JSP引擎转换为Servlet程序(Java源文件),然后调用Java编译器将S_spring + hibernate + jsp

推荐文章

热门文章

相关标签