• 数据库系统概述----求属性集X关于F的闭包XF+


    属性集X关于函数依赖集F的闭包XF+ 的求解过程

    一、定义:

      设F为属性集U上的一组函数依赖,X⊆U,XF+ ={A | X→ A能y由F根据Armstrong公理推导出 }XF+ 称为属性集X关于函数依赖集F的闭包

    二、用途

      1.若判断X→Y是否能由F根据Armstrong公理推导出,则求出XF+ ,判断Y是否为XF+ 的子集;若YXF+ 的子集,则X→Y能由F根据Armstrong公理推导出,否则不能。

      2.如果XF+ = UXR<U , F>的候选码。

    三、求解算法

    R<U , F>,求属性X(X ⊆ U)关于U上的函数依赖集F的闭包XF+  

    1. 输入:X,F
    2. 输出:XF+  
    3. 步骤:

          (1)令X0 =X,=0

          (2)求MID,这里的 MID ={A| (∃V) (∃W) (V→W ∈ F ⋀ V ⊆Xi  ⋀ A∈W ) }; 也就是说先令MID' 为空集,对于F中的每一个函数依赖Y→Z,满足属性集Y⊆Xi ,那么MID' =MID'Z;最终的MID' 即为所求的MID

          (3)Xi+1 =MID∪Xi 

          (4)判断Xi+1 =Xi 是否相等

          (5)若相等或Xi+1 = U,则Xi+1 就是XF+ ,算法终止。

          (6)若不相等,则令i = i +1,返回第(2)步。

    四、例子说明:

      已知关系模式R<U,F>,其中U={A,B,C,D,E}F={AB→C,B→D,C→E,EC→B,AC→B},求XF+ 。

    (1)令X0 =AB,求X1

        先求此时的MID

          因为F中有ABC,BD,所以MID=CD

        所以得X1=X0MID=AB∪CD=ABCD;

        又因为X0≠X1且X1U,所以要继续求X2;  //   如果这时X0=X1了,那么根据求解算法第(5)步,X1即为所要求得的XF+ 

    (2)有X1=ABCD,求X2

        先求此时的MID

          因为F中有CE,ACB,所以MID=BE;  //  ABC,BD在第(1)步中已经出现了所以这里忽略

          所以得X2=X1MID =ABCD∪BE=ABCDE;

          因为此时X2U 了,所以根据求解算法第(5)步,X2即为所要求得的XF+ ,算法结束。

  • 相关阅读:
    多线程学习纪要
    字符编码ASCII、Unicode、UTF-8以及验证
    C# 自定义特性Attribute要点
    Java --- 流操作
    数据库 --- 索引
    Java -- 枚举
    mybatis --- 使用通用mapper或者mybatis-plus进行映射时,当数据库中有大写字母,自定义映射的字段名。
    后端 --- 快速创建一个sb项目 (使用spring官网的https://start.spring.io)
    数据库 --- decimal类型测试
    Java --- 线上故障调优01 打印堆栈信息
  • 原文地址:https://www.cnblogs.com/xiaolu266/p/8040106.html
Copyright © 2020-2023  润新知