ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库范式概念以及范式分解详解

2021-01-03 15:57:17  阅读:703  来源: 互联网

标签:候选 依赖 范式 函数 数据库 详解 分解 属性


  1. 几个重要知识点

    • 平凡函数依赖与非平凡函数依赖

      • X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
      • X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。
    • 完全函数依赖与部分函数依赖

      在R(U)中,

      • 如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X完全函数依赖,记作X → Y。
      • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X → Y
    • 候选码

      设K为R<U,F>中的属性或属性组合。若K → U,则K称为R的一个候选码(Candidate Key)。

      千万需要记住的是候选码与超码之间的区别

    • 超码

      如果U部分函数依赖于K,即K → U,则K称为超码(Surpkey)。

      候选码是最小的超码,即K的任意一个真子集都不是候选码。

    • 主码

      主码是候选码中的任意一个

    • 主属性与非主属性

      • 包含在任何一个候选码中的属性 ,称为主属性(Prime attribute)
      • 不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)
    • 全码

      整个属性组是码,称为全码(All-key)

  2. 范式

    • 第一范式

      每个属性不可分割

    • 第二范式

      若关系模式R∈1NF,并且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF

    • 第三范式

      消除非主属性对于码的传递依赖
      若R中不存在这样的码X、属性组Y及非主属性Z(Z ⊇ Y), 使得X→Y,Y→Z成立,Y ↛ X不成立,则称R<U,F> ∈ 3NF。

      三范式分解

    • BC范式

      消除主属性对码的部分和传递函数依赖

      判断:在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。

    1. 无损连接与保持函数依赖性

      • 无损连接

    在这里插入图片描述

    无损连接判断

    • 保持函数依赖性

    在这里插入图片描述

    一个无损连接的分解不一定具有依赖保持性,反之亦然 !

    1. 三范式分解(范式分解最终的答案并非是唯一的,和分解的顺序有关!)

      • 三范式分解为保持函数依赖的分解

        步骤如下:

      在这里插入图片描述

      例题:

      设R<U, F>,其中:
      U={C, T, H, R, S, G, X, Y, Z},
      F={C→T, CS→G, HR→C,HS→ R, TH→ R, C→X},

      ​ 将R 分解为3NF,且保持函数依赖。

      解:

      1. 求F的最小函数依赖集

        该函数依赖集已经是最小化的

        1. 查看是否有一个函数依赖X->A,且XA=R。

        可以很清楚的看到,并没有这种函数依赖。

      2. 查看R中的某些属性是否并不在F中出现过

        可以很清楚的看到,并没有

      3. 将最小函数依赖集中的每一个依赖左右两边放到一起

        则分解为ρ ={YZ, CTX, CSG, HRC, HSR, THR}

      • 三范式分解既具有无损连接性又能保持函数依赖的分解

        非常简单!在原来的基础上加上候选码中的任意一个即可。

        例如此题中的候选码为HS

        那么在原来的ρ中添加HS即可,但是此处需要注意

        ∵ HS⊆ HSR
        ∴ τ= ρ ={CT, CSG, HRC, HSR, THR}为满足要求的分解

    2. BCNF分解(范式分解最终的答案并非是唯一的,和分解的顺序有关!)

      • 如何判定BCNF范式呢?

        很简单!就是看每个函数依赖的左边是否包含候选码,如果其中有一个不含候选码,则不为BCNF范式。

      • 将关系模式转换为BCNF 的无损连接的分解

        ​ 递归下去,直到出现 Φ \Phi Φ或者出现最终的一个依赖符合BCNF约束则停止分解

        ​ 例子1:
        ​ 已知 R (A, B, C), AB为码, 且B->C存在
        ​ 可知:R不满足BCNF
        ​ 设 α \alpha α = B, β \beta β = C
        ​ 则 R 可分解为:
        ​ ( α \alpha α ⋃ \bigcup ⋃ β \beta β) = (B, C)
        ​ (R – ( β \beta β − - − α \alpha α)) = (A, B)

        ​ 例子2:
        在这里插入图片描述

标签:候选,依赖,范式,函数,数据库,详解,分解,属性
来源: https://blog.csdn.net/weixin_42340926/article/details/112135705

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有