精华内容
下载资源
问答
  • 数据库部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别 在理解函数依赖之前,先来看一下函数依赖分析: 在关系中,包括在任何候选码中的属性称为主属性;不包括在任何候选...

    数据库 部分函数依赖 完全函数依赖  传递函数依赖  第一范式、第二范式、第三范式、BCNF范式区别

     

    在理解函数依赖之前,先来看一下函数依赖分析:

    在关系中,包括在任何候选码中的属性称为主属性;不包括在任何候选码中的属性称为非主属性

    函数依赖只分析关系中的非主属性对主属性之间的依赖关系,并不分析主属性对主键(码)的依赖关系。

     

    具体关于部分函数依赖和完全函数依赖的定义,网上有很多,但大多都是概念,这里我从例子入手来分析,使大家更好的掌握部分函数依赖、完全函数依赖和传递函数依赖。

     

    假设存在关系:

    R(学号,姓名,性别,班级,班主任,课程号,课程名,学时数,成绩)

    主键:学号+课程号

    主属性:{学号,课程号}

    非主属性有:{姓名,性别,班级,班主任,课程名,学时数,成绩}

     

    完全函数依赖分析

    成绩依赖于学号和课程号两个字段的组合;但只知道学号无法确定成绩,同理只知道课程号也无法确定成绩;只有学号和课程号组合在一起才能标识哪个学生哪门课程的成绩;

    因此(学号,课程号)---->成绩  是“完全函数依赖”。

     


    部分函数依赖分析

    姓名、性别和班级三个属性只依赖于主键中的学号,与“课程号”无关。

    因此(学号,课程号)---->姓名是“部分函数依赖”

    (学号,课程号)---->性别是“部分函数依赖”

    (学号,课程号)----->班级是“部分函数依赖”

    课程名和学时数只依赖于课程号,

    因此(学号,课程号)----->课程名是“部分函数依赖”

     

    传递函数依赖分析

    班主任依赖于班级,与学号无关,与课程号也无关

    又因班级依赖于学号所以班主任间接依赖于学号

    因此,(学号,课程号)----->班主任是传递函数依赖

     

    范式这里就不说课本、网上那些晦涩难懂的概念了。

    1NF:无重复的列(数据库表中的每一列都是不可分割的基本数据项)

    2NF:满足1NF且非主键列都完全函数依赖于主键。

    3NF:满足2NF且非主属性列都不传递依赖于主键。

    BCNF:满足3NF且不允许主键的一部分被另一部分或其它部分所决定(即满足3范式,并且主属性之间没有依赖关系)。

     

    展开全文
  • 一、函数依赖 函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果...

    一、函数依赖

    函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。

    设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。

    简单的说就是在属性U上有两个子集属性X,Y,由X属性可以获得一个元组,而X属性对应的Y属性获得相同的元组

    比如:
    (sno-学生ID,tno-教师ID,cno-课程ID,sname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩)
    1、sno→sname, cno→cname,(sno,cno)→grade √
    2、sname→sno, tno→cno, sno→tname × (不存在一一对应关系)

    二、平凡依赖

    如果X决定Y,而且Y属于X,也就是Y是X 的真子集,则称该依赖为平凡依赖;否则为非平凡依赖。
    简单的讲,X可以推导出自己活着自己的一部分。
    例如:
    在学生表(学号,姓名,年级)中,(学号,姓名)可以推出学号和姓名其中的任何一个,这就是平凡函数依赖.
    直白点说,就是只要Y是X的子集,Y就依赖于X

    非平凡依赖:在学生表(学号,姓名,年级)中,通过(学号,姓名)可以推出这个学生所在的年级,但年级不是(学号,姓名)的子集,这是非平凡函数依赖.((学号,姓名)就是一个x,学号或者姓名就是一个x’)。

    三、部分函数依赖和完全函数依赖

    如果X->Y且对于X的任意真子集X均不具有X->Y,则称Y对X完全函数依赖,否则称Y对X部分函数依赖。
    例如:
    完全依赖:通过{学生学号, 选修课程名}可以得到{该生本门选修课程的成绩},而通过单独的{学生学号}或者单独的{选修课程名}都无法得到该成绩,则说明{该生本门选修课程的成绩}完全依赖于{学生学号,选修课程名}

    部分函数依赖:通过{学生学号,课程号}可以得到{该生姓名},而通过单独的{学生学号}已经能够得到{该生姓名},则说明{该生姓名}部分依赖于{学生学号,课程号}; 又比如, 通过{学生学号,课程号}可以得到{课程名称},而通过单独的{课程号}已经能够得到{课程名称},则说明{课程名称}部分依赖于{学生学号,课程号}。(部分依赖会造成数据冗余及各种异常。)

    四、传递函数依赖

    在关系R(学号,宿舍,费用)中,通过{学号}可以得到{宿舍},通过{宿舍}可以得到{费用},而反之都不成立,则存在传递依赖{学号}->{费用}。(传递依赖也会造成数据冗余及各种异常。)

    微信搜一搜【梓莘】或扫描下方二维码交个朋友共同进步。文章持续更新中。在这里插入图片描述

    展开全文
  • 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别

    要讲清楚范式,就先讲讲几个名词的含义吧:

    部分函数依赖:X,Y是关系R的两个属性集合,存在X→Y,若X’X的真子集,存在X’→Y,则称Y部分函数依赖于X

    举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);


    完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

    例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级);


    传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

    例子:在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求;

     

     1 、第一范式(1NF)

      在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

      所谓第一范式(1NF)是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列。

      2、 第二范式(2NF)

      第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。

      第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性依赖于主关键字。

      3 、第三范式(3NF)

      满足第三范式(3NF)必须先满足第二范式(2NF)。在满足第二范式的基础上,切不存在传递函数依赖,那么就是第三范式。简而言之,第三范式就是属性不依赖于其它非主属性。

    最后简单的总结一下:

    1第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。 

    2第二范式(2NF):关系模式R属于第一范式,且每个非主属性都完全函数依赖于键码。 

    3第三范式(3NF):关系模式R属于第一范式,且每个非主属性都不伟递领带于键码。 

    4 BC范式(BCNF):关系模式R属于第一范式且每个属性都不传递依赖于键码


    第三范式以上的范式在数据库中也很少用到,而且三级数据库一般也不会考,这里就不提了吧,呵呵,偷个懒

     

    展开全文
  • 函数依赖:  简单来说就是一种决定关系,学生编号x决定学生姓名y,则称学生姓名y函数依赖于学生编号x,记做x->y。 部分函数依赖:  表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系...

    函数依赖

      简单来说就是一种决定关系,学生编号x决定学生姓名y,则称学生姓名y函数依赖于学生编号x,记做x->y。

    部分函数依赖

      表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x'是x的真子集,若有x->y且x'->y,则称y部分函数依赖于x。记做x->py,显然,此时x中存在多余属性,例如,设x(学生编号,学生性别),x'(学生编号),y(学生姓名),则有x决定y,x'决定y,此时y部分函数依赖于x。

    完全函数依赖

      表达一种无冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y是U上的子集,x'是x的任意真子集,若有x->y成立且x'->y总不成立,则称y完全函数依赖于x。显然,此时x中无任何多余属性。

    传递函数依赖

      设U{A1,A2,…,An}是属性集合,R(U)为某关系表,x,y,z是U上的子集,若有x->y,y->z且y不属于x,y->x不成立,则称z传递函数依赖于x。为什么有如此奇怪的限定y不属于x,y->x不成立?,如果y属于x,那么z部分函数依赖于x,此时x中存在多余属性,若y->x成立,则有x和y等价,则R中没有必要同时存在x和y。

    平凡函数依赖和非平凡函数依赖:

      设一个关系为R(U),X和Y为属性集U上的子集,若X→Y且X不包含Y,则称X→Y为非平凡函数依赖,否则若X包含Y则必有X→Y,称此X→Y为平凡函数依赖.

    转载于:https://www.cnblogs.com/liuzhan709/p/8472438.html

    展开全文
  • 函数依赖

    千次阅读 多人点赞 2019-04-11 20:01:18
    知识点一:函数依赖可分为完全函数依赖、部分函数依赖、传递函数依赖 完全函数依赖:关系R中,X、Y是属性集,X决定Y的值(X→Y),且任何一个X(子)都没办法决定Y的值 设一个学生选课信息的关系模式SC: SNO CNO...
  • 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 1、函数依赖:在一个表里面,...
  • 这里写自定义目录标题完全函数依赖、部分函数依赖和传递函数依赖举例1. 完全依赖:2. 部分函数依赖:传递函数依赖: 完全函数依赖、部分函数依赖和传递函数依赖举例 1. 完全依赖: 通过{学生学号, 选修课程名}可以...
  • 完全函数依赖和部分函数依赖

    万次阅读 多人点赞 2017-08-21 19:55:26
    完全函数依赖 {学号,课号}-->成绩  学号+课号 可以决定 成绩 但只有学号or只有课号无法决定成绩    部分函数依赖  {学号,课号}-->姓名  只有学号就能决定姓名 (课号是冗余的) ...
  • 最小函数依赖

    2015-05-05 15:13:35
    最小函数依赖集  定义:如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。  ① F中的任何一个函数依赖的右部仅含有一个属性;  ② F中不存在这样一个函数依赖X→A,使得F与F-{X→A}等价;  ...
  • 数据依赖指的是通过一个关系中属性间的相等与否体现出来的数据间的相互关系,其中最重要的是函数依赖和多值依赖。 2.函数依赖 设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们...
  • 部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 **eg:**学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,...
  • 范式 函数依赖 多值依赖

    千次阅读 多人点赞 2020-12-30 22:11:33
    第一范式、第二范式、第三范式、第四范式、第五范式、扩展第三范式、函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、平凡函数依赖、多值依赖,定义、举例、图解、关系
  • 部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号...
  • 数据库函数依赖范式

    2016-04-25 12:46:47
    数据库函数依赖范式
  • 是部分函数依赖还是完全函数依赖,决定于是否有冗余条件来确定一个属性。 图的来源以及其他函数依赖和范式内容,见此链接
  • 4 NF 函数依赖

    2012-09-07 18:01:11
    函数依赖的推理规则,函数依赖 4NF
  • 函数依赖,y=f(x),从函数角度来看就是一个相同的x,对应唯一一个y(其实表示圆的轨迹我们称之为方程,而不是函数,但我们一般不区分这两个概念)。。 那么z=f(y),也同理===》我们一个相同的x,对应唯一的y,而y对应唯一...
  • 判断函数依赖

    千次阅读 多人点赞 2018-03-14 22:08:42
    ① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性; ② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不...
  • 平凡函数依赖

    千次阅读 2020-06-16 14:52:09
    平凡函数依赖 定义: 在Y函数依赖于X函数的基础上,即X→YX\to YX→Y时,如果Y⊂XY \subset XY⊂X,那么称X→YX\to YX→Y是平凡的函数依赖, 如果有Y⊂XY \subset XY⊂X,那么X→YX\to YX→Y一定成立 原因:因为Y⊂...
  • 关于数据库数据依赖,函数依赖的学习攻略
  • 根据函数依赖求最小依赖集

    万次阅读 多人点赞 2019-06-26 13:37:36
    【例1】关系模式R<U,F>...第二步:逐个去掉X→A依赖后,设剩下函数依赖集为G,求属性集X关于G的闭包,如果闭包包含右边属性A,则去掉该函数依赖。 A→B:(A)+=AC,不包含B,保留。 A→C:(A)+...
  • 数据库函数依赖

    千次阅读 2014-06-10 00:52:18
    数据库函数依赖 一、函数依赖(Functional Dependency)的概念   数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 二、定义   设R(U)是属性U上的一...
  • 关系数据库设计 函数依赖 逻辑蕴含

    千次阅读 多人点赞 2018-05-29 20:51:49
    F能推出 原不直观存在于 函数依赖集F 中的函数依赖 α →→\to β,则成α→→\toβ被函数依赖集F逻辑蕴含 函数依赖的闭包 F+F+F^+: ​ 由关系模式R直观得到的函数依赖F所推出的所有隐含的或未隐含的(直观...
  • 函数依赖的闭包 属性集闭包 码 求候选键算法 最小函数依赖集 关系模式R(U,D,DOM,F) R:关系名,符号化的元组定义 U:一组属性 D:属性组U中的属性所来自的域 DOM:属性到域的映射 F:属性组U上的一组数据...
  • 函数依赖与模式分解 讲解函数依赖与模式分解 讲解函数依赖与模式分解 讲解函数依赖与模式分解 讲解
  • 函数依赖、多值依赖

    千次阅读 2019-03-13 09:49:12
    一、函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,...
  • [函数依赖]极小覆盖举例依赖

    千次阅读 2018-03-14 14:24:28
    求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 数据库:求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 要解答此问题我们先来了解一下概念: 如果函数依赖集F满足以下条件,则称F为一个极...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 957,947
精华内容 383,178
关键字:

函数依赖怎么算