关系数据库理论之最小函数依赖集

本文介绍了关系数据库中最小函数依赖集的概念及其求解方法。包括函数依赖的基本原理、闭包的定义与计算方法,以及逐步解析如何求得最小函数依赖集。

前言

在本文中,会介绍为什么要引入最小函数依赖集,最小函数依赖集是什么,以及如何求最小函数依赖集。

为什么需要最小函数依赖集

在关系数据模型中,一个关系通常由R(U,F)构成,U为属性的全集,F为函数依赖集。在实际生活中,我们可以根据语义来定义关系中属性的依赖关系,例如学号可以唯一确定一位学生的姓名、性别等等。但是,有时候给出的函数依赖集并不是最简的,这有时会拖累我们对关系的后续处理,例如关系的分解、判断是否为无损分解等。所以,我们在必要时,需要对函数依赖集进行化简,这就是需要最小函数依赖集的原因。
在正式介绍最小函数依赖集之前,还需要了解一个概念,那就是闭包。准确的说是属性集X关于函数依赖集F的闭包

闭包

闭包分为两种,一种是函数依赖集F的闭包,另外一种是属性集X关于函数依赖集F的闭包。前者不做讨论,重点说说后者。先来看定义

F为属性集U上的一组函数依赖集,XY ∈ \in U X F + X_F^+ XF+= {A|X → \rightarrow A能由F根据Armstrong公理导出}, X F + X_F^+ XF+称为属性集X关于函数依赖集F的闭包。

说白了,就是给定属性集X,根据现有的函数依赖集,看其能推出什么属性。
这里的Armstrong公理系统不用深究,想具体了解的可以点击查看百度百科。
举例:

已知关系模式R<U,F>,其中:
U = {A,B,C,D,E},
F = {AB → \rightarrow C,B → \rightarrow D,C → \rightarrow E,EC → \rightarrow B,AC → \rightarrow B}
( A B ) F + (AB)_F^+ (AB)F+

解:

从AB出发,此时我们的集合里已经包含了{A,B}。
我们从现有的函数依赖集中可知,
AB可以推出C,于是C加入集合,
B可以推出D,于是D加入集合,
C可以推出E,于是E加入集合,
EC可以推出B,因为C、E、B都在集合中,于是不加入,
AC可以推出B,因为A、B、C都在集合中,于是不加入
至此,可求得 ( A B ) F + (AB)_F^+ (AB)F+ ={A、B、C、D、E}。

最小函数依赖集

定义

如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集最小覆盖
(1)、F中任一函数依赖右部仅含有一个属性。
(2)、F中不存在这样的函数依赖 X → \rightarrow A,使得FF-{X → \rightarrow A} 等价。
(3)、F中不存在这样的函数依赖X → \rightarrow AX有真子集Z使得F-{X → \rightarrow A} ⋃ \bigcup {Z → \rightarrow A}F等价。

解释

以上定义翻译成大白话就是,一个函数依赖集F要想称为最小函数依赖集,要满足以下三点:
1、F中任一函数依赖的右边只有一个属性。
2、F中不存在这样的函数依赖:从现有的函数依赖集中删除一个函数依赖X → \rightarrow A,删除后所得的函数依赖集与原来的函数依赖集等价,这样的函数依赖是不允许存在的。
3、F中不存在这样的函数依赖:假设函数依赖集中存在AB → \rightarrow Y,现对该依赖的左部进行化简,即删除A,得B → \rightarrow Y;或删除B,得A → \rightarrow Y,若经过化简后的函数依赖集与没有化简前的函数依赖集等价,那么这样的函数依赖是不允许存在的。

算法

1、首先,先利用函数依赖的分解性,将函数依赖集中右部不为单个属性的分解为单属性。

2、对于经过第1步筛选后的函数依赖集F中的每一个函数依赖X → \rightarrow A,进行以下操作:

  • 2.1、将X → \rightarrow A从函数依赖中剔除
  • 2.2、基于剔除后的函数依赖,计算属性X的闭包,看其是否包含了A,若是,则该函数依赖是多余的(这里体现出前面说的等价,因为如果基于化简后的函数依赖依赖,计算X的闭包依然包含A,则说明A可以由其他依赖推出,X → \rightarrow A不是必须的),可以删除,否则不能删除

3、对于经过第2步筛选后的函数依赖集F中每个左部不为单个属性的函数依赖AB → \rightarrow Y,进行以下操作:
我们约定,经过第二步筛选后的函数依赖集记为F1,经过第三步处理后的函数依赖集为F2。

  • 3.1、去除A,得B → \rightarrow Y,得F2,基于F1和F2计算属性B的闭包,如果二者相等,则说明它们是等价的,A可以去除;如果不相等,则A不能去除。
  • 3.2、去除B,得A → \rightarrow Y,得F2,基于F1和F2计算属性A的闭包,如果二者相等则说明它们是等价的,B可以去除;如果不相等,则B不能去除。

知识链接:函数依赖的分解性
若X → \rightarrow YZ,则X → \rightarrow Y 且 X → \rightarrow Z。

举例

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

解:
1、首先根据函数依赖的分解性,对F进行第一次筛选,需要变动的有:
ADG → \rightarrow BC拆解成ADG → \rightarrow B、ADG → \rightarrow C
得新函数依赖集:
F = {B → \rightarrow D,DG → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B,ADG → \rightarrow B,ADG → \rightarrow C}

2、筛选多余的函数依赖

  • 2.1:去除B → \rightarrow D,得F = {DG → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B,ADG → \rightarrow B,ADG → \rightarrow C}, B F + B_F^+ BF+ = {B},不包含D,故B → \rightarrow D不删除。
  • 2.2:去除DG → \rightarrow C,得F = {B → \rightarrow D、BD → \rightarrow E,AG → \rightarrow B,ADG → \rightarrow B,ADG → \rightarrow C}, ( D G ) F + (DG)_F^+ (DG)F+={D,G},不包含C,故DG → \rightarrow C不删除。
  • 2.3:去除BD → \rightarrow E,得F = {B → \rightarrow D,DG → \rightarrow C,AG → \rightarrow B,ADG → \rightarrow B,ADG → \rightarrow C}, ( B D ) F + (BD)_F^+ (BD)F+ = {B,D},不包含E,故BD → \rightarrow E不删除。
  • 2.4:去除AG → \rightarrow B,得F = {B → \rightarrow D,DG → \rightarrow C,BD → \rightarrow E,ADG → \rightarrow B,ADG → \rightarrow C}, ( A G ) F + (AG)_F^+ (AG)F+ = {A,G},不包含B,故AG → \rightarrow B不删除。
  • 2.5:去除ADG → \rightarrow B,得F = {B → \rightarrow D,DG → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B,ADG → \rightarrow C}, ( A D G ) F + (ADG)_F^+ (ADG)F+ = {A,D,G,C,B,E},包含B,故ADG → \rightarrow B去除
  • 2.6:去除ADG → \rightarrow C,得F = {B → \rightarrow D,DG → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B,ADG → \rightarrow B}, ( A D G ) F + (ADG)_F^+ (ADG)F+ = {A,D,G,C,B,E},包含C,故ADG → \rightarrow C去除
    经过第二部筛选后,函数依赖集F变为{B → \rightarrow D,DG → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B}。

3、化简函数依赖左侧不为单个属性的函数依赖

  • 3.1:先看DG → \rightarrow C
    • 3.1.1:去除D,得G → \rightarrow C,得函数依赖集F1 = {B → \rightarrow D,G → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B}。
      基于F1,可求得 G F + G_F^+ GF+ = {G,C}。
      基于F(第二步求出的,下同),可求得 G F + G_F^+ GF+ = {G}
      可见二者并不相同,所以D不去除。
    • 3.1.2:去除G,得D → \rightarrow C,得函数依赖集F1 = {B → \rightarrow D,D → \rightarrow C,BD → \rightarrow E,AG → \rightarrow B}
      基于F1,可求得 D F + D_F^+ DF+ = {D,C}
      基于F,可求得 D F + D_F^+ DF+ ={D}
      可见二者并不相同,所以G不去除。

综上,DG → \rightarrow C,已是最简。

  • 3.2:再看BD → \rightarrow E
    • 3.2.1:去除B,得D → \rightarrow E,得函数依赖集F1 = {B → \rightarrow D,DG → \rightarrow C,D → \rightarrow E,AG → \rightarrow B}
      基于F1,可求得 D F + D_F^+ DF+ = {D,E}
      基于F,可求得 D F + D_F^+ DF+ = {D}
      可见二者并不相同,所以B不去除。
    • 3.2.2:去除D,得B → \rightarrow E,得函数依赖集F1 = {B → \rightarrow D,DG → \rightarrow C,B → \rightarrow E,AG → \rightarrow B}
      基于F1,可求得 B F + B_F^+ BF+ = {B,E,D}
      基于F,可求得 B F + B_F^+ BF+ = {B,D,E}
      可见二者相同,所以D可以去除

综上,BD → \rightarrow E,可化简为B → \rightarrow E。

  • 3.3:最后看AG → \rightarrow B
    • 3.3.1:去除A,得G → \rightarrow B,得函数依赖集F1 = {B → \rightarrow D,DG → \rightarrow C,B → \rightarrow E,G → \rightarrow B}
      基于F1,可求得 G F + G_F^+ GF+ = {G,B}
      基于F,可求得 G F + G_F^+ GF+ = {G}
      可见二者并不相同,所以A不可去除。
    • 3.3.2:去除G,得A → \rightarrow B,得函数依赖F1 = {B → \rightarrow D,DG → \rightarrow C,B → \rightarrow E,A → \rightarrow B}
      基于F1,可求得 A F + A_F^+ AF+ = {A,B}
      基于F,可求得 A F + A_F^+ AF+ = {A}
      可见二者并不相同,所以G不可去除。

综上,AG → \rightarrow B,已是最简。
综上,R的最小函数依赖集为F = {B → \rightarrow D,DG → \rightarrow C,B → \rightarrow E,AG → \rightarrow B}

写在最后

这个问题是我在考研复试的时候复习过程中遇到的,主要的纠结点在于第三步的判断上,查资料的时候发现网上很多都没有写清,最后还是在度娘的文库里找到了比较清楚的解释,在此做一下思路的整理。
本文定义以及例子参考自:

内容概要:本文介绍了一个基于Simulink的混合储能驱动永磁同步电机全系统仿真模型,涵盖了系统整体架构与关键控制策略,重点实现了电流环的二阶滑模控制(STSMC)、有限集模型预测控制(FCS-MPC)和PI控制等多种先进控制方法。该模型集成了混合储能系统与永磁同步电机驱动系统,能够模拟复杂工况下的动态响应、能量管理过程及多变量耦合特性,适用于高性能电机控制系统的设计、分析与验证,尤其在新能源汽车、电动驱动系统和工业自动化等领域具有重要应用价值。; 适合人群:具备Simulink仿真基础、电力电子与电机控制背景的高校研究生、科研人员及自动化、电气工程领域的研发工程师。; 使用场景及目标:①用于研究和对比不同电流控制策略(如STSMC、FCS-MPC、PI)在永磁同步电机系统中的动态性能、鲁棒性与抗干扰能力;②支撑混合储能系统在电动驱动、新能源汽车、智能电网等领域的系统级仿真与优化设计;③为先进控制算法的开发与工程化落地提供高保真、模块化的仿真平台。; 阅读建议:建议结合Simulink模型与相关控制理论进行对照学习,重点关注各功能模块之间的信号交互、控制逻辑设计及参数整定方法,可通过修改负载条件、切换控制模式等方式开展对比实验,深入理解系统动态行为与控制效果差异。
软件概述 UG(Unigraphics NX)是一款由西门子(Siemens PLM Software)开发的交互式CAD/CAM/CAE系统。作为全球领先的产品工程解决方案,它集成了产品设计、工程仿真与制造加工于一体。其功能强大且应用广泛,能够轻松实现各种复杂实体和造型的构造,为模具、汽车、航空航天及通用机械等行业提供了高性能的机械设计与制图灵活性。 软件基础信息 • 支持系统: 64位 Windows 10、Windows 11 核心功能模块 一、创新设计:高效、灵活、无缝协同 全链路产品设计 涵盖从2D布局、3D建模、装配设计到图纸文档记录的各个环节,大幅提升设计吞吐量,缩短交付周期超35%。 强大的同步建模技术 打破数据壁垒,可无缝导入并直接修改来自其他CAD系统的几何模型,是跨平台协同设计的理想选择。 复杂装配管理 专为大型复杂产品打造,即使面对成千上万的零件也能从容应对,快速识别并解决数字样机中的干涉等问题。 集成设计验证 内置自动验证功能,实时监控设计是否符合公司及行业标准;结合PLM数据可视化合成,辅助工程师做出更明智的决策。 二、综合仿真(Simcenter 3D):精准预测,降低试错成本 极速前后处理 依托先进的几何引擎,将强大的分析命令与几何编辑紧密集成,相比传统有限元工具,可缩短高达70%的仿真建模时间。 全方位结构分析 在同一环境中集成线性静力学、动态、疲劳及非线性分析,底层由业界顶尖的NX Nastran解算器提供支持,确保计算的高精度与可靠性。 声学与热管理分析 提供内外声学仿真以优化音质、降低噪音;具备一流的热传导仿真能力,帮助电子产品和工业机械实现最佳热管理方案。 多物理场耦合 简化了结构动力学、热传导、流体流动等复杂物理现象的模拟过程,消除外部数据传输错误,真实还原产品运行工况。 三、智能制造(CAM):打通从计划到车间的数字主线 全面的制造解决方案 提供从工装设计、CAM编程到机床控制器(如Sinumerik)的一体化支持,助力制定更科学的生产决策。 深度集成的PLM环境 借助Teamcenter实现数据和流程的统一管理,避免多数据库冲突,支持重用验证过的加工工艺与刀具库。 车间级互联 通过DNC系统与车间无缝对接,直接将加工数据和刀具清单下发至CNC机床,实现计划与生产的紧密结合。 提质增效 优化NC编程与刀具路径,提升表面精加工水平与零件精度;减少人为错误,显著提高新机床部署成功率及制造资源利用率。 总结 UG NX 2023作为一款集成化的产品工程解决方案,通过其强大的设计、仿真和制造功能,为现代制造业提供了完整的数字化产品开发平台。无论是复杂产品的设计验证,还是精密制造的流程优化,UG NX 2023都能为工程师团队提供高效、可靠的解决方案,助力企业提升产品创新能力和市场竞争力。 适用领域 模具设计、汽车制造、航空航天、通用机械、消费电子等
评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值