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中出现过

        可以很清楚的看到有YZ

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

        则分解为ρ ={YZ, CTX, CSG, HRC, HSR, THR}
        注:这里的CTX放到一起时因为C→\rightarrow→T,C→\rightarrow→X

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

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

        例如此题中的候选码为HS

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

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

    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:

数据库范式概念以及范式分解详解相关推荐

  1. 数据库第一范式,第二范式,第三范式详解

    数据库第一范式,第二范式,第三范式详解 基础知识 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等. ...

  2. 视频教程-Oracle数据库从入门到实用教程详解-Oracle

    Oracle数据库从入门到实用教程详解 全栈工程师,2010年从事软件开发以及软件教育培训工作,至今将近十余年,在项目的开发,设计,到管理上积累了丰富的实战经验,教学风格上通俗易懂,问题解答环节一对一 ...

  3. 什么是奇异值?奇异值分解是什么?SVD分解详解及实战

    什么是奇异值?奇异值分解是什么?SVD(Singular Value Decomposition)分解详解及实战 TSVD:Truncated Singular Value Decomposition ...

  4. shell编程系列23--shell操作数据库实战之mysql命令参数详解

    shell编程系列23--shell操作数据库实战之mysql命令参数详解mysql命令参数详解-u 用户名-p 用户密码-h 服务器ip地址-D 连接的数据库-N 不输出列信息-B 使用tab键代替 ...

  5. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  6. 集合 (一) ----- 集合的基本概念与Collection集合详解

    相关文章: <集合 (一) ----- 集合的基本概念与Collection集合详解> <集合 (二) ----- Map集合详解> 文章目录 集合的基本概念 一.集合的分类 ...

  7. MySQL数据库增删改查常用语句详解

    MySQL数据库增删改查常用语句详解 一 MySQL数据库表结构 1.1 常见数据类型 1.2 常用约束类型 1.3 MySQL存储引擎 二 DDL语句:数据定义语句 2.1 修改数据库密码 2.1. ...

  8. 关系型数据库表之间的联系[关系]详解

    关系型数据库表之间的联系[关系]详解 在表中,行和列的逻辑顺序无关紧要.每个表至少包含一列,该列被称为主键,它唯一地标识了表中的每一行. 键是表中扮演特殊角色的列,有两种键:主键.外键. 主键(Pri ...

  9. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  10. 数据库除关系运算符执行过程详解

    数据库除关系运算符案例详解 声明与简介 数据库里的Div(除)运算符是借鉴了数学基本元素除的理念,即整体除以个体,得到组(满足个体的特征的集合). 所以如果"被除数"的集合R有4个 ...

最新文章

  1. 网络广告计费方式常用术语
  2. 【C#】MD5 小程序编写
  3. github上的Lua in Erlang
  4. java map 迭代遍历_java 遍历Map的四种方式
  5. C++中基类的析构函数为什么要用virtual虚析构函数
  6. helloworld设置成开机自启动的服务
  7. Newbe.Claptrap 框架入门,第二步 —— 创建项目
  8. php 编码规范哪些_PHP 代码规范有哪些【详细讲解】
  9. 快速修复 Log4j2 远程代码执行漏洞步骤
  10. vue-cli history 本地开发刷新页面丢失_react 开发入门
  11. python如何使用jieba库_Python jieba库的使用
  12. 格雷码与二进制码之间的相互转换
  13. 图像处理之图像噪声和各种噪声的matlab实现
  14. 数据挖掘 任务一:预测贷款是否逾期
  15. LTE中资源数量映射用到的PRB数量(TB,CQI,MCS,PRB)
  16. idea自定义banner
  17. Android Jetpack组件之Room数据库使用
  18. Windows10 桌面不停的闪烁问题
  19. 5G智慧医疗全流程服务白皮书发布;2021年《故宫日历》青少版亮相 | 美通企业日报...
  20. 绿色IT,从环保到经济效益

热门文章

  1. 新手初学者怎样才能学好Java?
  2. 迅为RK3588开发板单独编译Android固件
  3. 您品,您细品留言板功能的总结与梳理
  4. snipaste 快捷键被chrome占用解决
  5. [转]屏幕保护色的设置
  6. Lorenz洛伦兹微分方程的Python求解
  7. 初学CAD制图时,不同制图工具的技巧分析
  8. java对输入数字排序
  9. 异常检测阅读笔记《Inpainting Transformer for Anomaly Detection》CVPR 2021
  10. ROS1和ROS2的区别