• 求关系模式的候选码


    数据库利用闭包求关系模式的候选码

    求闭包的方法:

    理解定义:闭包就是由一个属性直接或间接推导出的所有属性的集合

    实例

    有关系模式R(A,B,C,D,E,F),F是R上的函数依赖集合,F={A→B,B→C,EF→A,C→DE},则{A,B}的闭包是?

    由B→C得出此时闭包为ABC,所以C在集合中,由C→DE得出此时闭包为ABCDE,此时依赖关系已全部用齐~AB的闭包就为ABCDE。

    求关系模式的候选码:

    实例

    给定关系模式R(A, B, C, D, E),如果存在依赖:A→B,BC→D,DE→A,则该关系模式的码为?

    1.分别写出依赖关系两边的所有元素

    L:CE

    R:none

    LR:ABD

    L为依赖关系中只在左边出现的元素,这些元素必为码的一部分或者就是码。

    R为依赖关系中只在右边出现的元素,这些元素不可能是码。

    LR为依赖关系中在两边都出现的元素,这些元素可能是码,我们需要求闭包进一步判断。

    2.使用闭包求候选码

    因为L有CE两个元素,LR有ABD三个元素,我们要求最小的依赖关系集,简单来说求出候选码的元素个数要最少,首先对CE求候选码,如果CE直接是候选码的话那么该集合关系候选码就为CE,如果CE不是候选码,则继续求CE+,也就是ACE,BCE,CDE,用上述的方法进行求闭包,如果闭包的元素为U(全集:ABCDE),则该集合是一个码。

    CE:C啥子也不能推出,E啥子也不能推出~,所以自身闭包就是CE,而非U,因此CE不是码

    ACE:A→B,则此时闭包为ABCE,BC在ABCE中,BC→D,此时闭包仍然为ABCDE,即闭包为U,满足码的条件,ACE为码,就不用继续看完所有依赖了~

    BCE:同理嘛,BC→D,此时闭包为BCDE,DE→A,此时闭包为ABCDE,即U,BCE为码~

    CDE:DE→A,此时闭包为ACDE,A→B,此时闭包为ABCDE,即U,所以CDE也为码~

    那么最后可以得出ACE,BCE,CDE为候选码,也就是码。

  • 相关阅读:
    Golang 之 casbin(权限管理)
    Golang validate验证器
    商城实战课程
    webstorm上的Element提示插件
    实战高并发大流量秒杀系统
    lettcode 739: 每日温度
    时钟同步 chrony
    linux 文件目录权限命令
    Nginx 四层负载均衡
    Nginx 版本回滚
  • 原文地址:https://www.cnblogs.com/lightice/p/12759678.html
Copyright © 2020-2023  润新知