精华内容
下载资源
问答
  • 说到部分函数依赖,传递函数依赖,必须谈到2个概念,“非主属性”和“主属性”。 主属性:组成主键的属性,就是主属性。例如,属性集{学号,姓名,联系电话},学号是主键。学号是主键的属性,所以学号是主属性。 ...

    说到部分函数依赖,传递函数依赖,必须谈到2个概念,“非主属性”和“主属性”。

    主属性:组成候选码的属性,就是主属性。例如,属性集{学号,姓名,身份证号码,联系电话},学号是主键。学号,身份证号码都是候选码,都属于主属性。可以看出,主键不一定包含所有的主属性。

    非主属性:除去主属性,就是非主属性。示例中,姓名,联系电话,是非主属性。

    部分函数依赖与传递函数依赖,网上有很多,但大多都是概念,不好理解。我这里给出1个比较容易理解的定义:

    部分函数依赖:当1个关系模式中主键由2个及以上的属性组成时,非主属性只依赖于其中1个主属性,就是部分函数依赖。举例,属性集{学号,姓名,联系电话,教师编号,教师姓名},主键是2个主属性(学号+教师号),教师编号决定了教师姓名,所以教师姓名依赖于教师编号,不依赖于学号,教师姓名只依赖于主键的其中1个主属性,所以就是部分函数依赖。

    与部分函数依赖相反的是“完全函数依赖”。完全函数依赖是:非主属性完全依赖于主属性。举例1,属性集{学号,课程号,成绩},学号和课程号是主键,学号和课程号一起决定成绩,所以成绩完全依赖于学号和课程号,就是完全依赖。举例2,属性集{学号,姓名,联系电话},学号是主键,学号决定姓名,学号决定联系电话,姓名依赖学号,联系电话依赖学号,也是完全依赖。

    传递函数依赖:当关系模式中,出现非主属性决定非主属性时,就是传递函数依赖。举例,属性集{学号,姓名,学校编号,学校名称},主键是学号,学号决定学校编号,学校编号决定学校名称,且学校编号、学校名称都属于非主属性,那么就是传递函数依赖。

    范式判断,我就不说那些课本概念了,我做一下通俗易懂的定义:

    1NF:  属性不可再分(数据库表中的每一列都是不可分割的基本数据项)

    2NF:满足1NF且非主属性均完全函数依赖于候选键。

    3NF:满足2NF且非主属性没有传递依赖于候选键。

    BCNF:满足3NF、且主属性完全函数依赖于候选键、且主属性没有传递依赖与候选键。

    2NF、3NF,解决是非属性对候选键的依赖问题。

    BCNF,解决的是主属性对候选键的依赖问题。

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

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

     

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

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

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

     

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

     

    假设存在关系:

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

    主键:学号+课程号

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

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

     

    完全函数依赖分析

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

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

     


    部分函数依赖分析

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

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

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

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

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

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

     

    传递函数依赖分析

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

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

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

     

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

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

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

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

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

     

    展开全文
  • 部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在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属于第一范式,且每个属性都不传递依赖于键码。

    展开全文
  • 一、函数依赖 函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 设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(学号,宿舍,费用)中,通过{学号}可以得到{宿舍},通过{宿舍}可以得到{费用},而反之都不成立,则存在传递依赖{学号}->{费用}。(传递依赖也会造成数据冗余及各种异常。)

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

    展开全文
  • 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 1、函数依赖:在一个表里面,...
  • 由于最近在看思维导图>>这本书, 其实大一就买了…刚开始看了一半没啥感觉, 最近突然想起来还有这...平凡依赖如果X→Y而且Y不是X的子集,则称X→Y是非平凡函数依赖. 例: (s#, cn) -> s#是平凡依赖, 而(s#, cn) -> aa就
  • 数据库的部分依赖、完全依赖传递依赖

    万次阅读 多人点赞 2018-12-06 13:40:59
    一、部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 例如:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。 二、完全函数...
  • 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
  • 1、函数依赖 话术:sno确定sname、sname依赖于sno 基于现实的要求 2、如何确定函数依赖? 关于码的几个名词
  • 数据库函数依赖

    千次阅读 多人点赞 2018-08-23 14:34:26
    今天又重新拾起了《数据库系统原理》,因为之前对它学的不够扎实,所以现在需要重新进行深入的学习,函数依赖这一部分虽然不是特别难,但是我就是有点“迷”,老是有点弄不清楚,所以今天抽出点时间“收拾”他一下,...
  • 数据库 函数依赖

    2020-06-03 19:29:34
    同样,对于F中的所有依赖,可以向左部添加额外元素,就得到了部分函数依赖 传递函数依赖:(学号,课程号)—>成绩,成绩—>等级,从这两个依赖我们可以推出:(学号,课程号)—>等级,这就是一个传递函数依赖...
  • 数据库函数依赖

    千次阅读 热门讨论 2015-10-11 10:59:55
    一、函数依赖关系 1.数据依赖 数据依赖通常包括函数依赖和多值依赖。 2.函数依赖问题 A.函数依赖 定义: 设一个关系R,X和Y是它的两个属性集,若对于X上的每一个值都有Y上的一个唯一的值与之对应,则称X...
  • 数据依赖指的是通过一个关系中属性间的相等与否体现出来的数据间的相互关系,其中最重要的是函数依赖和多值依赖。 2.函数依赖 设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们...
  • 传递函数依赖 确定函数依赖的方法 码 外部码 范式 1NF 2NF 3NF BCNF 多值依赖 4NF 如何判断R为第几范式? 已知一个关系模式的属性之间的语义,也就是相互依赖的关系,如何判断该模式满足第几范式? 1、...
  • 一、部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。...三、传递函数依赖 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,
  • 数据库函数依赖名词的解释

    千次阅读 2020-06-18 15:17:06
    函数依赖函数依赖是关系模式中属性之间的一种逻辑依赖关系 假设有A、B两个函数,A → B(A 决定 B,即A推出B,也叫做B函数依赖于A) 平凡函数依赖:当属性集Y是属性集X的子集时,必然存在函数依赖X→Y,这种类型...
  • 针对一个具体的问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成。 由此引出了关系数据库理论,一个有问题的关系模式会...对于范式,又有了一个新的名词函数依赖 函数...
  • 数据库中的函数依赖 X ->Y的含义 X函数决定Y,或者Y函数依赖于X函数 平凡/非平凡的函数依赖 平凡的函数依赖要求Y是X的子集,就是自己决定自己或者自己的一部分. 如果Y不属于X,那么称为非平凡的函数依赖 完全依赖和...
  • 目录数据库系统原理-函数依赖和关系模式分解第一范式如何处理非原子值原子性关系数据库设计中易犯的错误模式分解无损连接分解优化关系模式的步骤函数依赖函数依赖定义函数依赖的使用函数依赖集的闭包Armstrong公理...
  • 数据库 函数依赖及范式(最通俗易懂)

    千次阅读 多人点赞 2019-06-04 19:49:00
    数据库 函数依赖及范式(最通俗易懂) 一、基础概念 要理解范式,首先必须对知道什么是关系数据库,如果你不知道,我可以简单的不能再简单的说一下:关系数据库就是用二维表来保存数据。表和表之间可以……(省略...
  • 基于《数据库系统概论》和《数据库系统概念》,阐述了函数依赖和范式及其相关概念、问题和用途,包括平凡与非平凡函数依赖、完全与部分函数依赖、传递函数依赖、码、第一范式、第二范式、第三范式和BC范式
  • 函数依赖是指关系中属性间(或者说是表中字段间)的对应关系。 定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—&...
  • 函数依赖 函数依赖定义 R(U)是属性集U上的关系模式,X,Y是U的一个子集,r是R(U)中的任意给定的关系,对于r中的任意两个元组s和t,当s【X】=t【x】时,一定有s【y】=t【y】,称为Y函数依赖于X 记为 x->y x被...
  • 数据库原理之函数依赖、多值依赖

    万次阅读 多人点赞 2018-01-04 18:51:27
    完全函数依赖和部分函数依赖 1、函数依赖分为完全函数依赖和部分函数依赖 2、定义: 在R(U)中,如果X→Y,并且对于X的任何真子集X’都有X’-/->Y’,则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真...
  • 前言 一个设计良好的数据库模式(database schema),应该要具备以下特点: 完整性(Completeness) 减少冗余(Redundancy freeness) 一致的含义(Consistent understanding) ...为什么需要函数依赖...
  • 数据库中的函数依赖、键和范式

    千次阅读 2018-05-27 21:07:35
    1.函数依赖X→Y,表示Y依赖于X;X→Y,且Y→X不成立,Y→Z,则X→Z,表示Z传递依赖于X。2.键主属性:表示在候选键中的属性;超键:是指能够唯一标识一个元组的属性集;候选键:能够唯一标识一个元组,且不含多属性;...
  • 数据库原理系列】关系函数依赖

    千次阅读 2020-11-27 14:11:54
    函数依赖 概述 函数依赖 设R(U)是属性集合U={A1,A2,…,An}上的一个关系模式,X, Y是U上的两个子集,若对R(U)的任意一个可能的关系r, r中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称“X函数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,533
精华内容 46,613
关键字:

数据库传递函数依赖