zoukankan      html  css  js  c++  java
  • 数据库知识点④

     1.函数依赖的定义

      (a)平凡的函数依赖与非平凡的函数依赖

      (b)函数依赖是语义范畴的概念

      (c)函数依赖关系的存在与时间无关

      (d)函数依赖可以保证关系分解的无损连接性

    2.函数依赖的基本性质 SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)

      (a)投影性:一组属性函数决定它的子集

      举例:(SNO,CNO)->SNO 和(SNO,CNO)->CNO

      (b)扩张性: 若x->y且w->z 则有(x,w)->(y,z)

      举例:SNO->(SN,AGE) DEPT->MN 则有(SNO,DEPT)->(SN,AGE,MN)

      (c)合并性:若x->y 且x->z则有x->(y,z)

      举例:SNO->(SN,AGE) SNO->(DEPT,MN) 则有SNO->(SN,AGE,DEPT,MN)

      (d)分解性:若x->(y,z)则有x->y, x->z

    3.完全函数依赖与部分函数依赖

      1.如果X→Y,并且对于X的任何一个真子集X′,都有X′→ Y,则称Y对X完全函数依赖(Full Functional Dependency),记作 X -(f)->Y

      2.如果对X的某个真子集X′,有X′→Y,则称Y对X部分函数依赖(Partial Functional Dependency) 记作X -(p)-> Y。

      举例:

      在关系模式SCD中

      因为SNO -->SCORE,且CNO --> SCORE,所以有:(SNO,CNO)-(f)->SCORE 。

      而SNO→AGE,所以(SNO,CNO)-(p)->AGE

      3.只有当决定因素是组合属性时,讨论部分函数依赖才有意义

      4.当决定因素是单属性时,只能是完全函数依赖。

      举例:在关系模式S(SNO,SN,AGE,DEPT),决定因素为单属性SNO,有SNO→(SN,AGE,DEPT),不存在部分函数依赖。

    4.传递函数依赖

      1.定义:

      设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,

      若X→Y,但Y -->X,而Y→Z(Y 不属于X,Z 不属于Y),则称Z对X传递函数依赖(Transitive Functional Dependency),记作:X-(t)-> Z。

      如果Y→X,则X <->Y,这时称Z对X直接函数依赖,而不是传递函数依赖。

      举例:

      例如,在关系模式SCD中,SNO→DEPTN,但DEPTN -->SNO,而DEPTN→MN,则有SNO-(t)->MN。系主任是对学号的传递依赖

      当学生不存在重名的情况下,有SNO→SN,SN→SNO,SNO <->SN,SN→DEPTN,这时DEPTN对SNO是直接函依赖,而不是传递函数依赖。

    5.总结函数依赖

      综上所述,函数依赖分为完全函数依赖、部分函数依赖传递函数依赖三类,它们是规范化理论的依据和规范化程度的准则,下面我们将以介绍的这些概念为基础,进行数据库的规范设计。

    6.范式

      规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除时发生异常现象。

      这就要求关系数据库设计出来的关系模式要满足一定的条件。关系数据库的规范化过程中:不同程度的规范化要求设立的不同标准称为范式(Normal Form)。规范化的程度不同,产生不同的范式。满足最基本规范化要求的关系模式叫第一范式,在第一范式中进一步满足一些要求为第二范式,以此类推就产生了第三范式等概念。

      每种范式都规定了一些限制约束条件。

    7.范式发展过程

      范式的概念最早由E.F.Codd提出。

      从1971年起,Codd相继提出了关系的三级规范化形式,即第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。

      1974年,Codd和Boyce以共同提出了一个新的范式的概念,即Boyce-Codd范式,简称BC范式。

      1976年Fagin提出了第四范式,

      后来又有人定义了第五范式。

      至此在关系数据库规范中建立了一个范式系列:1NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。

    clip_image002

    8.第一范式(First Normal Form

      第一范式是最基本的规范形式,即关系中每个属性都是不可再分的简单项。

      定义:

      如果关系模式R,其所有的属性均为简单属性,即每个属性域都是不可再分的,则称R属于第一范式,简称1NF,记作R属于1NF。

      然而,一个关系模式仅仅属于第一范式是不适用的。给出的关系模式SCD属于第一范式,但其具有大量的数据冗余,具有插入异常、删除异常、更新异常等弊端。

      为什么会存在这种问题呢?

      让我们分析一下SCD中的函数依赖关系,它的关系键是(SNO,CNO)的属性组合,所以有:

      (SNO,CNO) -(f)->SCORE

      SNO→SN,(SNO,CNO)-(p)-> SN

      SNO→AGE,(SNO,CNO)-(p)-> AGE

      SNO→DEPT,(SNO,CNO)-(p)-> DEPT

      SNO -(t)-> MN,(SNO,CNO)-(p)-> MN

      我们可以用函数信赖图表示以上函数依赖关系,如下图所示。

    clip_image004

    9.第二范式

      定义 如果关系模式RÎ1NF,且每个非主属性都完全函数依赖于R的每个关系键,则称R属于第二范式(Second Normal Form),简称2NF,记作R属于2NF。

      分析:在关系模式SCD中,SNO,CNO为主属性,AGE,DEPT,MN,SCORE均为非主属性,经上述分析,存在非主属性对关系键的部分函数依赖,所以SCD不是2NF。

      拆分:而将SCD分解成三个关系模式S(SNO,SN,AGE,DEPT),D(DEPT,MN),SC(SNO,CNO,SCORE),其中S的关系键为SNO,D的关系键为DEPT,都是单属性,不可能存在部分函数依赖。

      结果:而对于SC,(SNO,CNO)-(f)->SCORE。所以SCD分解后,消除了非主属性对关系键的部分函数依赖,S,D,SC均属于2NF。

      经以上分析,可以得到两个结论:

      1.从1NF关系中消除非主属性关系键部分函数依赖,则可得到2NF关系。

      2.如果R的关系键为单属性,或R的全体属性均为主属性,则R属于2NF。

    10.1NF分解为2NF规则

      2NF规范化是指把1NF关系模式通过投影分解转换成2NF关系模式的集合。

      分解时遵循的基本原则就是“一事一表”,让一个关系只描述一个实体或者实体间的联系。如果多于一个实体或联系,则进行投影分解。

    11.举例分析

    clip_image005

    clip_image006

    clip_image007

      改善之处:关系模式SD和SC在性能上比SCD有了显著提高。

      (a)1NF的关系模式经过投影分解转换成2NF后,消除了一些数据冗余

      (b)分析图中SD和SC中的数据,可以看出,它们存储的冗余度比关系模式SCD有了较大辐度的降低。

      (c)学生的姓名、年龄不需要重复存储多次。

      (d)这样便可在一定程度上避免数据更新所造成的数据不一致性的问题

      (e)由于把学生的基本信息与选课信息分开存储,则学生基本信息因没选课而不能插入的问题得到了解决,插入异常现象得到了部分改善。

      (f)同样,如果某个学生不再选修C1课程,只在选课关系SC中删去该该学生选修C1的记录即可,而SD中有关该学生的其它信息不会受到任何影响,也解决了部分删除异常问题。

    上一篇数据库知识点③:http://www.cnblogs.com/zpfbuaa/p/5503200.html

    下一篇数据库知识点⑤:http://www.cnblogs.com/zpfbuaa/p/5523163.html

  • 相关阅读:
    vue 爬坑之路---设置背景图,不能resolve编译
    vue 爬坑之路----flexible.js不适配ipad和ipad pro
    vue-cli3 vue.config.js配置
    vue组件
    Vue 路由按需keep-alive
    vue-cli项目搭建
    http和https
    js时间戳和日期互转换
    vue补充
    js实现头像上传(移动端,PC端均可)
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5522527.html
Copyright © 2011-2022 走看看