精华内容
下载资源
问答
  • 通俗来说,函数依赖指的是在数据库中,各种不同属性(或者属性集合)关系间的一种“约束”,也可以看作属性之间的一种映射,也是一种“依赖性”,存在“当且仅当”的前提。给定一个属性集U上的关系R, 假设X,Y为U的子集...

    首先,什么是函数依赖?

    通俗来说,函数依赖指的是在数据库中,各种不同属性(或者属性集合)关系间的一种“约束”,也可以看作属性之间的一种映射,也是一种“依赖性”,存在“当且仅当”的前提。

    给定一个属性集U上的关系R, 假设X,Y为U的子集,若X属性集可以被看作通过某种函数来决定Y属性集,则我们写作

    equation?tex=%28X+%5Crightarrow+Y%29 ,当且仅当X与Y之间的映射仅存在一个唯一值。

    部分函数依赖

    假设

    equation?tex=X%27%5Csubset+X ,

    equation?tex=X%27%5Crightarrow+Y

    一个例子,给定一个tableux,存在以下关系:

    (学号,姓名,学生宿舍)

    (学号,姓名)→学生宿舍 (通过学号和姓名可以找到学生宿舍)

    学号,姓名分别是(学号,姓名)的两个真子集。

    (学号→学生宿舍)(通过学号可以得出学生宿舍)

    (姓名→学生宿舍)(通过姓名也可以得出学生宿舍)

    说明学生宿舍部分依赖于学号+姓名。

    完全函数依赖

    假设

    equation?tex=X%27%5Csubset+X%EF%BC%8CX%27%21%5Crightarrow+Y

    再举个例子,考试成绩:

    (学号,课程,分数)

    (学号,课程)→分数

    但是单独知道学号或者课程两者中的一个,是无法知道具体分数的。说明分数完全依赖于学号+课程。

    传递函数依赖

    可以把传递依赖看作一个单向链,

    equation?tex=X%5Crightarrow+Y%2CY%5Crightarrow+Z%28Y%21%5Crightarrow+X%29

    比如通过学号,我们可以知道姓名、性别、班级,间接可以知道班主任是谁(反过来推,如果一个班主任不只负责一个班级,那么从班主任→班级是得不到一个确定结果的)。

    所以(学号→班级)(班级→班主任)

    班主任传递依赖于学号。

    以上是在下粗浅易懂的理解,望有帮助。

    展开全文
  • 数据库函数依赖

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

    前言

          今天又重新拾起了《数据库系统原理》,因为之前对它学的不够扎实,所以现在需要重新进行深入的学习,函数依赖这一部分虽然不是特别难,但是我就是有点“迷”,老是有点弄不清楚,所以今天抽出点时间“收拾”他一下,下面和大家分享一下“收拾过程”!!!

    收拾过程

    • 什么是函数依赖?
      • 定义:设一个关系为R(U),X和Y为属性集U上的子集,若对于X上的每个值都有Y上的一个唯一值与之对应,则称X和Y具有函数依赖关系,并称X 函数决定Y,或称Y函数依赖于X,记作X→Y,称X为决定因素。
      • 简单地说,函数依赖就是:知道A可以确切的找到B,这样的函数叫做函数依赖。其实就是单值函数:例如:f(x)=2x(PS:后面会有详细的示例说明)
        这里写图片描述

    这里写图片描述

    • 示例:
      如通过学号和专业两个属性,1号可以确定是计算机(是函数依赖),但是通过年龄和专业这两个属性来判断,21岁,有中文,有英文,不能确定下来(不是函数依赖)
    • 什么是完全函数依赖?
      这里写图片描述

      • 示例:
        SC(S#,C#,GRADE)       说明:S#:学号,C#:课程号,GRADE:成绩,S#→\C#,S#→\GRADE,单个属性不能作为决定因素,但是组合起来可以,即(S#,C#)→GRADE,注:(S#,C#)相当于X,GRADE相当于Y。
    • 什么是部分函数依赖?

      • 定义:设一个关系为R(U),X和Y为属性集U上的子集,若存在X→Y,同时X的一个真子集X’也能够函数决定Y,即存在X’→Y,则称X→Y的函数依赖为部分函数依赖,或者说,X部分函数决定Y,Y部分函数依赖于X;否则若在X中不存在一个真子集X’,使得X’也能够函数决定Y,则称X完全函数决定Y,或Y完全函数依赖于X。X→Y的部分函数依赖也称为局部函数依赖。
        这里写图片描述

      • 示例:

    职工号姓名性别年龄职务
    1001张三36正处
    1002李四38副处
    1003王五50正科
    1004赵六38副处
    1005孙七49科员

           上述职工关系中,职工号和其他每个属性之间的函数依赖都是完全函数依赖,以为职工号是一个单属性决定因素,他不可能在包含其他任何属性,那么就不存在真子集函数决定其他每个属性的情况存在,如(职工号,性别)的值虽然能够决定相应职工的年龄,但其中的真子集“职工号”就能够函数决定其年龄,所以(职工号,性别)到年龄之间的函数为部分函数依赖(因为只通过“职工号”就可以决定)。(简单的说:真子集可以决定结果)

    • 什么是传递函数依赖?
      这里写图片描述
             定义:一个关系R(U),X,Y,Z为属性集U上的子集,其中存在X→Y和Y→Z,但Y不决定X,同时Y不包含Z,则存在X→Z,即X传递函数决定Z,Z传递函数依赖于X。
             注意:在这里强调的是Y不反过来函数决定X,因为如果X→Y,同时Y→X,则X和Y为相互决定的函数依赖关系,记做“X←→Y”,这样X和Y是等价的,在函数依赖中是可以相互转化的,X→Z就是直接函数依赖,而不是传递函数依赖了。

      • 示例:
               如:设一个学生关系为(学号,姓名,性别,系号,系名,系主任名),一般每个学生只属于一个系,每个系有许多学生,每个系都对应唯一的系名和系主任名。
               传递函数依赖分析:在该关系中,学号能够函数决定姓名、性别和系号,即存在“学号→姓名”、“学号→性别”、“学号→系号”,系号又能够函数决定系名和系主任名,即存在“系号→系名”和“系号→系主任名”。由于学号决定系号,系号又决定系名和系主任名,所以给定一个学号之后也就能够唯一对应一个系名或系主任名,也就是说,在学生关系中还存在“学号→系名”和“学号→系主任名”这两个函数依赖是传递函数依赖。
    • 什么是最小函数依赖?

      • 定义:设一个关系为R(U),X和Y为U的子集,若X→Y为完全函数依赖,同时Y为单属性,则称X→Y为R的最小函数依赖。由R中所有最小函数依赖构成R的最小函数依赖集,并且在最小函数依赖集中不应含有冗余的传递函数依赖。
      • 示例:
        • 设一个关系为R(A,B,C,D),它的函数依赖集为FD={A→B,B→C,A→C,B→D},判断它是否为R的最小函数依赖集。
      • 分析:由FD中的A→B和B→C可得到A→C,也就是说A→B和B→C中已经蕴涵A→C,所以给出的A→C是冗余的,应去掉。原FD不是R的一个最小依赖集,若修改为FD={A→B,B→C,B→D},就成为R的最小函数依赖集。
    • 如何根据函数依赖求出关系中的侯选码?

      • 定义:设一个关系为R(U),X为U的一个子集,若X能够函数决定U中的每个属性,并且X的任何真子集都不能函数决定U中的每个属性,则称X为关系R的一个候选码。
      • 解析:
        • 由于一个候选码能够函数决定关系中的每个属性,根据函数依赖的合并规则,可知候选码能够函数决定整个元组,即所有属性。也可以说:若关系中的一个属性或属性组能够函数决定整个元组,并且它的任何子集都不能函数决定整个元组,则它被称为该关系的一个候选码。
      • 示例一:
        • 在上面介绍过的职工关系中,职工号属性能够函数决定职工号、姓名、性别、年龄、职务等所有属性,并且职工号为单属性,不可再分,肯定不会存在任何子集能够函数决定整个元组,所以职工号为该关系的一个候选码;若在该关系中还带有身份证号属性,则身份证号属性的每一个值也能够唯一标识一个元组,所以也能够函数决定关系中的所有属性,因此身份证号也是一个候选码。
      • 示例二:
        • 设一个教学关系为(教师号,姓名,课程号,课程名,课程学分,专业号,专业名,教学等级分),假定每个教师有一个唯一的教师号,每门课程有一个唯一的课程号,每个专业有一个唯一的专业号,每个教师号对应一个姓名,每个课程号对应一个课程名和一个课程学分,每个专业号对应一个专业名,教学等级分是根据某个教师给某个专业上某门课程的教学评价效果而得到的分数,每个教师可以给不同的专业上不同的课程,请通过函数依赖分析,求出该关系的候选码。
      • 分析:
        • FD={教师号→姓名,课程号→课程名,课程号→课程学分,专业号→专业名,(教师号,课程号,专业号)→教学等级分}。
          由FD可以看出,只有(教师号,课程号,专业号)能够函数决定每个属性,并且它的任何真子集都不能函数决定每个属性,所以(教师号,课程号,专业号)是该关系的唯一一个候选码。
    • 什么是平凡和非平凡函数依赖?

      • 定义:设一个关系为R(U),X和Y为属性集U上的子集,若X→Y且X不包含Y,则称X→Y为非平凡函数依赖,否则若X Y则必有X→Y,称此X→Y 为平凡函数依赖。
      • 分析:在一个职工关系中,职工号总能函数决定它本身,记作“职工号→职工号”,对于任一个给定的职工号,都有它本身的职工号值唯一对应,此为平凡函数依赖。又如:职工号和性别构成的属性子集总是能够函数决定其中的职工号或性别属性,可分别记作为“(职工号,性别)→职工号”和“(职工号,性别)→性别”,因为对于任何给定的一个元组中的职工号和性别的组合值,都唯一对应一个职工号值或性别值,不可能出现其他的职工号值或性别值,此种也为平凡函数依赖。
      • 非平凡函数依赖,即X→Y且X Y。如在职工关系中,职工号函数决定其他每个属性都是非平凡函数依赖,另外“(职工号,姓名)→性别”也是非平凡函数依赖,虽然在这里由决定因素中所含的职工号单属性就能够函数决定性别,而带有的姓名属性有些多余。

      小结

                 这一部分总算是总结完了,可以告一小段落了,这回自己原来不明白的地方现在都清楚了,这些都是自己对这一部分的理解,可能会有些许出入,但是还是希望能帮助到一些需要帮助的人,同时也欢迎大家在下方评论区留言,互相交流一下!!!

    展开全文
  • 数据库函数依赖、多值依赖

    万次阅读 2019-04-30 19:31:57
    一、函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间依存,互相制约的关系,即反应现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1 , A2 , . ....

    一、函数依赖(Functional Dependency)的概念

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

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

    简单来说,就是一个属性可以唯一决定另一个属性。

    例:

    (学生:Sno学号,Sname姓名,Sdept系别)

    1、Sno->Sname,学号可以决定一个姓名。学号函数决定姓名
    2、Sname->Sdept,姓名可能会重复。姓名不能函数决定系别

    下面是自己总结的四种依赖关系:

    二、多值依赖(Functional Dependency)的概念

            设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。

            若X->->Y,而Z=空集,则称X->->Y为平凡的多值依赖。否则,称X->->Y为非平凡的多值依赖。

    平凡多值依赖就是,属性集合中分为两个真子集,每一个X对应一组Y的取值

            可以看出,如果把上面的一组改为一个,那么多值依赖就变成了函数依赖。当然一个值组成的组也是组,所以说,函数依赖是多值依赖的特殊情况。

    多值依赖的性质:

    若 X->->Y , 则 X->->Z  多值依赖对称性

    若X->Y.则X->->Y   说明函数依赖是多值依赖的特殊情况,当X->Y的时候,对于每一个X都有一个Y与之对应,那么对于每一对X,Z都有一组Y与之对应

    设属性值之间有包含关系 XY包含于W包含于U 那么如果R(U)上有X->->Y,那么在R(W)上一世成立的

    若X->->Y 在R(U)上成立,且Y’ 包含于Y,不能断言 X->->Y’在R(U)上成立(注意和上一条性质不同) (因为多值依赖中的定义中涉及了U中除了X,Y之外的其余属性Z,因此换成Y’后就需要涉及Z’ = U-X-Y’ 比之前确定X->->Y的时候属性列多,就不一定了)

    展开全文
  • 数据库函数依赖名词的解释

    千次阅读 2020-06-18 15:17:06
    函数依赖函数依赖是关系模式属性之间的一种逻辑依赖关系 假设有A、B两个函数,A → B(A 决定 B,即A推出B,也叫做B函数依赖于A) 平凡函数依赖:当属性集Y是属性集X的子集时,必然存在函数依赖X→Y,这种类型...

    函数依赖:函数依赖是关系模式中属性之间的一种逻辑依赖关系

    假设有A、B两个函数,A → B(A 决定 B,即A推出B,也叫做B函数依赖于A)

    平凡函数依赖:当属性集Y是属性集X的子集时,必然存在函数依赖X→Y,这种类型称为平凡的函数依赖

    有函数A、B,B是A的子集(即B里面的内容,A都有,但A的内容B不一定有),即一定有 A → B

    非平凡函数依赖:如果Y不是X的子集,则X→Y为非平凡的函数依赖

    有函数A、B,B是A不是B的子集(也就是B里面至少有一些属性是A没有的),还有 A → B,即这种类型叫做非平凡函数依赖

    部分函数依赖:X的某个真子集X’,有X’→Y,则称Y对X部分函数依赖

    {A, B} = X, X → Y,A → Y or B→ Y ,一个整体能推出一个函数,整体中的部分也可以推出一个函数,即这就是部分函数依赖

    完全函数依赖:X的任何一个真子集X’,都没有X’→Y,则称Y对X完全函数依赖

    {A, B} = X, X → Y,但X的部分属性,A、B并不能推出一个函数,只有整体的时候能,这就是完全函数依赖

    传递函数依赖:若X→Y,没有Y→X,Y→Z,Y∉X,Z∉Y,则称Z对X传递函数依赖

    范式:把关系模式规范化过程中为不同程度的规范化要求设立的不同的标准称为范式

    无损连接分解:将泛关系模式R分解成数据库模式ρ,则称分解ρ相对于函数依赖集F是无损连接分解

    题目一般都是给所有属性,分解后的p,还有函数依赖给你,让你求是否是无损连接分解

    保持函数依赖分解:把R分解成R1,R2,…,Rk后,函数依赖集F应被F在这些Ri上的投影所蕴含,则称分解ρ是保持函数依赖集F的分解

    这个也是给分解后的,然后让你求是否是保持函数依赖


    欢迎大家关注下个人的「公众号」:独醉贪欢

    展开全文
  • 函数依赖: 字母表示:FD(Functional Dependency,FD) 定义:R(U),X、Y为属性集,t1、t2为元组,若t1[X]=t2[X],则t1[Y]=t2[Y],称X函数决定Y函数或Y依赖于X,记作X→Y。 例3-22 对实例3-21“学生选课”关系...
  • 数据库函数依赖判断

    千次阅读 2020-11-11 13:02:27
    数据库函数依赖判断例题 1.前言 因为在复习国科大数据库新技术课程,找遍全网也没有找到对函数依赖判定的实例化讲解。于是决定自己写一个给大家参考。第一篇csdn博客,写的不好,敬请见谅。 2.例题 问:已知R<U,F...
  • 数据库函数依赖

    千次阅读 热门讨论 2015-10-11 10:59:55
    一、函数依赖关系 1.数据依赖 数据依赖通常包括函数依赖和多值依赖。 2.函数依赖问题 A.函数依赖 定义: 设一个关系R,X和Y是它的两个属性集,若对于X上的每一个值都有Y上的一个唯一的值与之对应,则称X...
  • 函数依赖是指关系属性间(或者说是表字段间)的对应关系。 定义:设 R 为任一给定关系,如果对于 R 属性 X 的每一个值,R 的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—&...
  • 用c++求数据库中函数依赖集的闭包

    千次阅读 2016-05-24 17:49:48
    由于数据库作业要求用程序求一个函数依赖集中属性集的闭包和此依赖集的闭包,便用c++写了这个程序,刚好在这分享给大家,代码写得丑,望大家勿喷。
  • 数据库部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别 在理解函数依赖之前,先来看一下函数依赖分析: 在关系,包括在任何候选码的属性称为主属性;不包括在任何候选...
  • 数据库中函数依赖、键和范式

    千次阅读 2018-05-27 21:07:35
    1.函数依赖X→Y,表示Y依赖于X;X→Y,且Y→X不成立,Y→Z,则X→Z,表示Z传递依赖于X。2.键主属性:表示在候选键的属性;超键:是指能够唯一标识一个元组的属性集;...用有向图表示出关系函数依赖; ...
  • 数据库求最小函数依赖集(最小覆盖)

    千次阅读 多人点赞 2020-03-03 21:57:11
    这个英文流程反而清晰,主要过程如下: 1.设置G=F; ...A,对X的每一个属性B,计算去除B之后的X在G的闭包,如果闭包包含A,那么就用去除B之后的X替换之前的X,注意此步实际上是两个for循环,...
  • 数据库函数依赖与候选码求解

    千次阅读 2021-04-20 21:32:18
    最近学习了函数依赖与候选码的求解,这仅仅是自己的理解,第一次形成文字。如果有什么问题,希望大家指正,我们共同进步。谢谢大家!
  • 逐一扫描F集合的各个函数依赖,找到左部含AB子 集(A、B、AB)的函数依赖。可得:AB->C,B->D。于是,X(1)可以更新为AB CD=ABCD。 ③、判断X(0)和X(1)是否相等。如果不相等,则要继续重复第①、②步骤。在本题,...
  • 设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。...
  • 数据库复习】函数依赖

    千次阅读 2018-11-10 10:58:05
    数据库复习】函数依赖
  • 关于数据库数据依赖,函数依赖的学习攻略
  • 若对于R(U)的任意一个可能的关系r,r不可能存在两个元组在X上得属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X->Y 物理解释:Y=f(X),即若输入X的同一个值,Y的输出值是唯一确定的...
  • 数据库中函数依赖 X ->Y的含义 X函数决定Y,或者Y函数依赖于X函数 平凡/非平凡的函数依赖 平凡的函数依赖要求Y是X的子集,就是自己决定自己或者自己的一部分. 如果Y不属于X,那么称为非平凡的函数依赖 完全依赖和...
  • SQL数据库中有两个功能依赖项.a)部分功能依赖性:非键列依赖于复合主键的某些列,但不是所有列.b)传递函数依赖:任何非键列都依赖于其他非键列.对于一个好的SQL数据库.规则1:列仅包含原子值规则2:没有重复的数据...
  • 1、函数依赖 话术:sno确定sname、sname依赖于sno 基于现实的要求 2、如何确定函数依赖? 关于码的几个名词
  • 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】 1、函数依赖:在一个表里面,...
  • 轻松理解数据库必须掌握的数据依赖关系。
  • 数据库求最小函数依赖

    万次阅读 多人点赞 2019-03-01 16:26:50
    第一步:将F所有函数依赖的右边化为单一属性。得到F1={A→B,A→C,ABD→C,ABD→E,E→D}。 第二步:将第一步得到的F1去除其中的冗余依赖关系。假设A→B是冗余依赖关系,去除后F1'={A→C,ABD→C,ABD→E,E→D}...
  • 原子的:如果某个域的的元素被认为是不可再分的,那么这个域就是原子的(非原子存储复杂并且容易导致数据冗余) 第一范式:如果关系模式R的所有属性的域都是原子的,那么R就是属于第一范式(1NF),目前的关系...
  • 在关系数据库中引入模糊数学思想,运用模糊数学的表示方法来描述实体,并且存放在数据库中...研究模糊数据库中函数依赖理论,具体讨论模糊数据库中函数依赖的基本定义和基本公理系统以及在模糊关系数据库中的应用实例。
  • 怎样求数据库最小函数依赖

    千次阅读 2019-05-09 09:44:17
    ** 设F是关系模式R(ABC)的FD集,F={A->...①先把F的FD写成单属性模式 如题得到F={A->B,A->C,B->C,A->B,AB-C} 这里显然多了一个A->B可以删除一个,得到F={A->B,A->C,B->C,AB-C} ② ...
  • 前言 一个设计良好的数据库模式(database schema),应该要具备以下特点: 完整性(Completeness) 减少冗余(Redundancy freeness) 一致的含义(Consistent understanding) ...为什么需要函数依赖...
  • 由于最近在看思维导图>>这本书, 其实大一就买了…刚开始看了一半没啥感觉, 最近突然想起来还有这...平凡依赖如果X→Y而且Y不是X的子集,则称X→Y是非平凡函数依赖. 例: (s#, cn) -> s#是平凡依赖, 而(s#, cn) -> aa就

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 289,748
精华内容 115,899
关键字:

数据库中的函数依赖