数据库中关于函数依赖集的例题

一、已知关系模式R<U,F>,其中U={A,B,C,D,E};F={AB->C,B->D,C->E,EC->B,AC->B};求(AB)F^{+}

      ①、因为题目求的是AB的闭包,所以我们先设X(0)=AB。

      ②、当求玩X(0)之后,我们要计算X(1)。逐一扫描F集合中的各个函数依赖,找到左部含AB子

              集(A、B、AB)的函数依赖。可得:AB->C,B->D。于是,X(1)可以更新为AB\bigcup

              CD=ABCD。

      ③、判断X(0)和X(1)是否相等。如果不相等,则要继续重复第①、②步骤。在本题中,X(0)\neq

             X(1),所以我们要继续找出左部含有ABCD子集(A、B、C、D、AB、AC……)的函数依

             赖,可以得到AB->CB->DC->E、AC->B。于是,X(2)=X(1)\bigcupBCDE=ABCDE。

      ④、由于X(2)=U,所以算法停止。

      ⑤、我们可以得到求(AB)F^{+}=ABCDE。


二、设有关系模式R<U,F>,U={ A,B,C,D,E,G },F={ E->D,C->B,CE->G,B->A},求该关系模式的码。

      要解本道题,首先我们要知道一个定理:

      对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的

      成员。

      由此定理可以推出以下的结论:

      对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,且X+包含了R的全部属

       性;则X必为R的唯一候选码。

      通俗的解释或者说如果只是想应付题目,我们可以理解为,在左部出现的一定在候选码中。

      如果我们求出了某属性集的闭包等于U,那么这个属性集就是唯一的候选码。

     所以本题的解题步骤为:

     ①、对属性进行分组,仅出现在函数依赖左部的属性为L(我们可以理解为Left)={E,C};既出现在

            左部,又出现在右部的属性为LR(Left&Right)={B}。

     ②、求L中各属性的闭包。EF^{+}={ E,D },CF^{+}={ C,B,A }。

     ③、求LR中各属性的闭包。BF^{+}={B,A}。

     ④、因为(EC)F^{+}={E,D,C,B,A,G }=U,所以EC为码。


以上例题均来自于《数据库基础教程》第三版。

 

 

  • 3
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值