精华内容
下载资源
问答
  • 多值依赖和第四范式的个人理解
    千次阅读 多人点赞
    2020-01-03 09:42:36

    1. 多值依赖

    1.1 多值依赖:多值依赖属4nf的定义范围,比函数依赖要复杂得多。在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖

    在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。

    1.2 数学定义:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。

    1.3 特点:1.允许X的一个值决定Y的一组值,这种决定关系与Z取值无关。

                     2.多值依赖是全模式的依赖关系。(多值依赖的缺点是:数据冗余太大)

    1.4 举例:有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <仓库管理员,库存产品号>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖。

    2. 第四范式

    2.1 数学定义:设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性Ai(i-1,2,...,n)存在有函数依赖X->Ai(X必包含键)。那么R∈4NF。

    2.2 思想来源:1.第四范式是在关系数据库中,对关系的最基本要求的满足第一范式。这样的关系模式是合法的,允许的。但人们发现有些关系模式存在插入、删除、修改异常、数据冗余等弊病,人们寻求解决这些问题的方法,这就是规范化的目的。

                             2.规范化的基本思想是逐步消除数据依赖中不合适的部分,使关系数据库模式的各关系模式达到某种程度的“分离”,即“一事一地”的模式设计原则。

    3.定义对解:定义和实例对比解析

    3.1 多值依赖:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关

    产品(X)代理商(Y)工厂(Z)
    Car     A1F1
    CarA1F2
    Bus     A2F2

     这里“产品(X)→→代理商(Y)”,产生的多值依赖关系如下

    产品(X)工厂(Z)代理商(Y)
    Car    F1A1
    CarF2A1

    这里一个car对应一组代理商,这就是代理商多值依赖于产品。为什么会产生这个多值依赖呢?
    因为工厂,只有代理商A1销售Car ,但是这里却又两个工厂生产Car ,说以导致了Car和A1的关系冗余。这就是数据表的设计问题的体现。消除多值依赖也很简单。做如下表设计。

    产品-经销商关系表

     

    产品供应商
    Car A1
    Bus A1
    CarA2

    产品生产关系表

     

    产品工厂
    Car    F1
    Car    F2
    Bus   F2

    3.2 从是否符合第四范式的角度分析以上表设关系R(X,Y,Z),其中X,Y,Z是成对的、不相交属性的集合。若存在非平凡多值依赖,则意味着对R中的每个属性Ai(i-1,2,...,n)存在有函数依赖X->Ai(X必包含键)。那么R∈4NF。

    产品(X)代理商(Y)工厂(Z)
    Car     A1F1
    CarA1F2
    Bus     A2F2

    “R中的每个属性Ai(i-1,2,...,n)存在有函数依赖X→Ai(X必包含键) ”,将这个要求,针对当前表展开。

    X→Y:代理商依赖于产品

    X→Z:工厂依赖于产品

    从形式上看,这里明显Car →  A1的关系有两个,不满足条件。这个是从数学上形式的分析,不符合第四范式。至于原因,就是上面多值依赖的存在。

    更多相关内容
  • 函数依赖、多值依赖

    千次阅读 2019-03-13 09:49:12
    一、函数依赖(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[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 × (不存在一一对应关系)
    
    
    
    函数依赖是语义范畴 
    
    1、语义:数据所反映的现实世界事物本质联系
    2、根据语义来确定函数依赖性的存在与否
    3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。
    
    
    
    属性间的联系决定函数依赖关系 
    
    设X、Y均是U的子集
    1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y)
    2、X和Y间联系是M:1(M), 则X→Y。
    3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。
    
    
    
    完全函数依赖和部分函数依赖 
    
    1、函数依赖分为完全函数依赖和部分函数依赖
    
    2、定义:
    在R(U)中,如果X→Y,并且对于X的任何真子集X’都有X’-/->Y’,则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集X’,使得X’→Y成立,则称Y部分依赖于X。
    
    例:
    
    学生ID,学生姓名,所修课程ID,课程名称,成绩
    
    (学生ID,所修课程ID)→成绩
    
    成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。
    
    (学生ID,所修课程ID)→学生姓名
    
    学生ID→学生姓名
    
    学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。
    
    平凡函数依赖和非平凡函数依赖 
    
    设X,Y均为某关系上的属性集,且X→Y
    1)若Y包含于X,则称X→Y为:平凡函数依赖;
    2)若Y不包含于X,则称X→Y为:非平凡函数依赖。
    Y包含于X内,W于X相交,与Y无直接交集。
    
    则:X→Y为平凡函数依赖
    
    X→W, W→Y为非平凡函数依赖
    
     函数依赖的逻辑蕴涵
    
    设有关系模式R(U)及其函数依赖集F, 如果对于R的任一个满足F的关系r函数依赖X→Y都成立,
    则称F逻辑蕴涵X→Y,或称X→Y可以由F推出。
    例4.3.1:
    关系模式 R=(A,B,C),函数依赖集F={A→B,B→C}, F逻辑蕴涵A→C。
    
    函数依赖的性质
    
    若U为关系模式R的属性全集,F为U上的一组函数依赖,设X、Y、Z、W均为R的子集,对R(U,F)有:
    F1(自反性):若X≥Y(表X包含Y),则X→Y为F所蕴涵;(F1′:X→X)
    F2(增广性): 若X→Y为F所蕴涵,则XZ→YZ为F所蕴涵;(F2′:XZ→Y)
    F3(传递性): 若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵;
    
    F4(伪增性):若X→Y,W≥Z(表W包含Z)为F所蕴涵,则XW→YZ为F所蕴涵;
    F5(伪传性): 若X→Y,YW→Z为F所蕴涵, 则XW→Z为F所蕴涵;
    
    F6(合成性): 若X→Y,X→Z为F所蕴涵,则X→YZ为F所蕴涵;
    F7(分解性): 若X→Y,Z≤Y (表Z包含于Y)为F所蕴涵,则X→Z为F所蕴涵。
    
    函数依赖推理规则F1∽F7都是正确的。
    
    
    
    多值依赖的定义:
    
       设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的取值
    
    可以看出,如果把上面的一组改为一个,那么多值依赖就变成了函数依赖。当然一个值组成的组也是组,所以说,函数依赖是多值依赖的特殊情况。
    
    如下表:
    
    课程C                                   教师T                              参考书B
    
    数学                                      邓军                                数学分析
    
    数学                                      邓军                                高等代数
    
    数学                                      邓军                                微分方程
    
    
    
    表中,U = C+T+B,(C,T)确定一组B,但是这组B其实与T无关,仅由C确定,所以(C,T)->->B。又因为T不是空集,所以(C,T)->->B为非平凡多值依赖。
    
    要想消除多只依赖,可以分解为:(C,T), (C,B)及
    
    表1:
    
    课程C                  教师T
    
    数学                     邓军
    
    
    
    表2:
    
    
    
    课程C                    参考书B
    
    数学                      数学分析
    
    数学                      高等代数
    
    数学                      微分方程
    
    
    
    对于R中的每个非平凡多值依赖X->->Y(Y不属于X),X都含有候选码,则R属于4NF。
    
    分析:对于每一个非平凡多值依赖X->->Y,X若含有候选码,也就是X->Y,所以4NF所允许的非平凡多值依赖是函数依赖。
    
    多值依赖的性质:
    
    若 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的时候属性列多,就不一定了)
    
    
    
     函数的概念和这个概念有相似的地方
    
    学习函数的概念前,先引入的概念是映射,一对一映射的关系就被称为函数。简单的例子
    
    f(x, y, z)= x2+4y+z
    
    对于任何一确定的(x,y,z),都有一个确定的f(x,y,z)与之对应。这种概念很容易推广到关系数据库模式上,R(U),U={X,Y,Z, K},对于任何一个元组,只要(X,Y,Z)确定了,就能确定整个元组,也就是存在K = f(X,Y,Z)的关系,只不过这里的f不能用公式表达,而只能是语义上的含义。
    
    
    
    再到后来,我们接触了类似y2=x的方程,也就是
    
    f(x,y) = +-sqrt(x)
    
    显然,此时对于一个确定的x值,f(x)可能有两个值与之对应,从严格的“函数”定义出发,这不能算是函数。但是为了统一概念,被称作“多值函数”。需要注意的是这里虽然x不能完全确定f(x,y)的值,但是能确定f(x,y)的取值范围(所有可能的值的组)。
    
    关系模式中的多值依赖也从概念上与此非常类似,给定元组中的一些属性,可确定另外的属性可能的取值,也就是说,给定的属性值能确定几个元组,而不是唯一的元组。
    
    还是上面的多值函数,可见f(x,y)的值仅与x有关 ,而与y无关。这在关系模式上就叫做平凡多值依赖。平凡多值依赖是4NF中可以存在的,而非平凡且非函数多值依赖不能在4NF中存在。

     

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

    万次阅读 多人点赞 2018-01-04 18:51:27
    任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料...

    任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~

     

     

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

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

    设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 × (不存在一一对应关系)

     

    函数依赖是语义范畴 

    1、语义:数据所反映的现实世界事物本质联系
    2、根据语义来确定函数依赖性的存在与否
    3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。

     

    属性间的联系决定函数依赖关系 

    设X、Y均是U的子集
    1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y)
    2、X和Y间联系是M:1(M), 则X→Y。
    3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。

     

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

    1、函数依赖分为完全函数依赖和部分函数依赖

    2、定义:
    在R(U)中,如果X→Y,并且对于X的任何真子集X’都有X’-/->Y’,则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集X’,使得X’→Y成立,则称Y部分依赖于X。

    例:

    学生ID,学生姓名,所修课程ID,课程名称,成绩

    (学生ID,所修课程ID)→成绩

    成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。

    (学生ID,所修课程ID)→学生姓名

    学生ID→学生姓名

    学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

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

    设X,Y均为某关系上的属性集,且X→Y
    1)若Y包含于X,则称X→Y为:平凡函数依赖;
    2)若Y不包含于X,则称X→Y为:非平凡函数依赖。
    Y包含于X内,W于X相交,与Y无直接交集。

    则:X→Y为平凡函数依赖

    X→W, W→Y为非平凡函数依赖

     函数依赖的逻辑蕴涵

    设有关系模式R(U)及其函数依赖集F, 如果对于R的任一个满足F的关系r函数依赖X→Y都成立,
    则称F逻辑蕴涵X→Y,或称X→Y可以由F推出。
    例4.3.1:
    关系模式 R=(A,B,C),函数依赖集F={A→B,B→C}, F逻辑蕴涵A→C。

    函数依赖的性质

    若U为关系模式R的属性全集,F为U上的一组函数依赖,设X、Y、Z、W均为R的子集,对R(U,F)有:
    F1(自反性):若X≥Y(表X包含Y),则X→Y为F所蕴涵;(F1′:X→X)
    F2(增广性): 若X→Y为F所蕴涵,则XZ→YZ为F所蕴涵;(F2′:XZ→Y)
    F3(传递性): 若X→Y,Y→Z为F所蕴涵,则X→Z为F所蕴涵;

    F4(伪增性):若X→Y,W≥Z(表W包含Z)为F所蕴涵,则XW→YZ为F所蕴涵;
    F5(伪传性): 若X→Y,YW→Z为F所蕴涵, 则XW→Z为F所蕴涵;

    F6(合成性): 若X→Y,X→Z为F所蕴涵,则X→YZ为F所蕴涵;
    F7(分解性): 若X→Y,Z≤Y (表Z包含于Y)为F所蕴涵,则X→Z为F所蕴涵。

    函数依赖推理规则F1∽F7都是正确的。

     

    多值依赖的定义:

       设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的取值

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

    如下表:

    课程C                                   教师T                              参考书B

    数学                                      邓军                                数学分析

    数学                                      邓军                                高等代数

    数学                                      邓军                                微分方程

     

    表中,U = C+T+B,(C,T)确定一组B,但是这组B其实与T无关,仅由C确定,所以(C,T)->->B。又因为T不是空集,所以(C,T)->->B为非平凡多值依赖

    要想消除多只依赖,可以分解为:(C,T), (C,B)及

    表1:

    课程C                  教师T

    数学                     邓军

     

    表2:

     

    课程C                    参考书B

    数学                      数学分析

    数学                      高等代数

    数学                      微分方程

     

    对于R中的每个非平凡多值依赖X->->Y(Y不属于X),X都含有候选码,则R属于4NF。

    分析:对于每一个非平凡多值依赖X->->Y,X若含有候选码,也就是X->Y,所以4NF所允许的非平凡多值依赖是函数依赖。

    多值依赖的性质:

    若 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的时候属性列多,就不一定了)

    同时也引用在http://blog.csdn.net/smstong/article/details/5599609

     函数的概念和这个概念有相似的地方

    学习函数的概念前,先引入的概念是映射,一对一映射的关系就被称为函数。简单的例子

    f(x, y, z)= x2+4y+z

    对于任何一确定的(x,y,z),都有一个确定的f(x,y,z)与之对应。这种概念很容易推广到关系数据库模式上,R(U),U={X,Y,Z, K},对于任何一个元组,只要(X,Y,Z)确定了,就能确定整个元组,也就是存在K = f(X,Y,Z)的关系,只不过这里的f不能用公式表达,而只能是语义上的含义。

     

    再到后来,我们接触了类似y2=x的方程,也就是

    f(x,y) = +-sqrt(x)

    显然,此时对于一个确定的x值,f(x)可能有两个值与之对应,从严格的“函数”定义出发,这不能算是函数。但是为了统一概念,被称作“多值函数”。需要注意的是这里虽然x不能完全确定f(x,y)的值,但是能确定f(x,y)的取值范围(所有可能的值的组)。

    关系模式中的多值依赖也从概念上与此非常类似,给定元组中的一些属性,可确定另外的属性可能的取值,也就是说,给定的属性值能确定几个元组,而不是唯一的元组。

    还是上面的多值函数,可见f(x,y)的值仅与x有关 ,而与y无关。这在关系模式上就叫做平凡多值依赖。平凡多值依赖是4NF中可以存在的,而非平凡且非函数多值依赖不能在4NF中存在。

    展开全文
  • 数据库中的范式和多值依赖

    万次阅读 多人点赞 2018-04-22 16:15:36
    数据库中的函数依赖,主码,候选码等的区别:点击打开链接 ...第一范式:定义很,其实说的就是列不可分。 如: 出厂日期 总额 数量 单价 ...

    数据库中的函数依赖,主码,候选码等的区别点击打开链接

     

    数据库中的范式:分为,1NF,2NF,3NF,BCNF,4NF。一般我们,我们设计数据库到第三范式就算完整的了。它们的关系如下:

    第一范式定义很多,其实说的就是列不可分。

    如:

     

    出厂日期

     总额

     

    数量

    单价

    在关系数据库中不能出现这种情况。

     

    第二范式定义若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。意思是非主属性完全依赖于码(候选码,主码),这里需要注意一下,是非主属性(候选码之外的属性),在前一篇文章已经说过。

    如:

     

    (学号, 系名, 课程号, 成绩) ∈1NF
    (学号, 系名, 课程号, 成绩)不属于 2NF

    在该关系模式中,学号+课程号是码,其他属性都是非主属性,但是只有成绩完全依赖于码,系名是部分依赖,因为学号就可以推出学生所在的系了。

     

    第三范式定义它的定义。。不打了,太烦了。其实说的就是消除 传递依

    。每一个非主属性都要直接依赖于码,不能传递依赖于码。如:在一个

    学生表中,我们规定一个系的学生是住在同一个宿舍区域的,于是,该关

    系模型为:

    学生表(学号, 系名, 宿舍区)

    在这关系中,学号为码,学号——>系名,学号——>宿舍区,但是,系名也能推出宿舍区,变成   学号——>系名——>宿舍区,即宿舍区传递依赖于学好了。

    解决方法:拆分成两个表:

    1(学号,系名),2(系名,宿舍区)

    从上面我们可以看到,在两个表中我们可以看到,当两个表通过外键(1表的系名,2中系名为主健)关联后,另一个表的的信息(如2表中的宿舍区)不能再写到包含外键关系的表中(1表)。

     

    BC范式:前面的三个范式是针对非主属性的,BC范式则是针对于码(什么是码,前篇文章说过),它要求每个函数的依赖关系中其决定因素都要包含码。

    如:

     

    在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。

               函数依赖:(S,J)→T,(S,T)→J, T→J 其中,(S,J)和(S,T)都是候选                 码。

    可以看出STJ中,它是属于第三范式的,因为没有哪一组依赖关系中,非主属性传递或者部分 依赖于码,(记住是非主属性,是候选码以外的属性,T在候选码中),但是,它不属于BC范式,因为T是决定因素,T不包含码(候选码的任何一个真子集都不能叫候选码)。

     

     

    多值依赖定义:第四范式需要掌握的一个内容。它说的就是设R(U)是一个属性集U上的一个关系模式, X、 Y和Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖 X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关(想不到好的方法把它概括起来,哎!)

    判定方法:对于任意关系中,如果存在两个元组(就是行),记为A,B,如果他们的某一属性X的值相等,那么我们交换它们另外的属性Y的值后,得到的新的两个元组,在表中是可以在原来的表中找到与它们相匹配的元组的。

    如:

    该表中的码为(C,T,B)我们可以找到第一和第四行,它们的属性X=物理是相同的,当我们交换Y=教员属性后得到(物理,王军,普通物理学)和(物理,李勇,普通 物理学),与原来的表相比,是一毛一样的。我们也可以交换第三行和第四行,得到(物理,王军,物理习题集)和(物理,李勇,普通物理学),与原来表相比,我们还是能找到与它们相匹配的元组的。

     

     

    平凡多值依赖和非平凡的多值依赖:

    若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖否则称X→→Y为非平凡的多值依赖。

     

    多值依赖与函数依赖的区别:

     

    1)若函数依赖X→Y在R(U)上成立,则对于任何Y' 属于Y均有X→Y' 成立

     

    2)多值依赖X→→Y若在R(U)上成立,不能断言对于任何Y' 属于Y有X→→Y' 成立,因为多值依赖中,其实就是一对一组,一个老师可能交多门课,所以不同老师可能有教相同的课,所以不能推出X→→Y' 成立。我们可以看出,如果把一组改为一个,实际上就是函数依赖,所以所函数依赖是多值依赖的特例,多值依赖不一定是函数依赖,但函数依赖一定是多值依赖。

     

     

    多值依赖性质:

     

    (1)多值依赖具有对称性

    若X→→Y,则X→→Z,其中Z=U-X-Y

    (2)多值依赖具有传递性

    若X→→Y,Y→→Z, 则X→→Z –Y

    (3)函数依赖是多值依赖的特殊情况。

    若X→Y,则X→→Y。

    (4)若X→→Y,X→→Z,则X→→YU Z。

    (5)若X→→Y,X→→Z,则X→→Y∩Z。

     

    (6)若X→→Y,X→→Z,则X→→Y-Z,X→→Z -Y。

     

     

     

     

    第四范式:1)不允许有非平凡且非函数依赖的多值依赖


                     2)允许的非平凡多值依赖是函数依赖

                     3)平凡的多值依赖属于第四范式

     

    像,我们上面的图表(C,T,B),如果改成属于第四范式,就要分为:

     

                               CT(C, T) ∈ 4NF

                 CB(C, B) ∈ 4NF

    其中, C→→T, C→→B是平凡多值依赖。

     

    总结:

    目的:尽量消除插入、删除异常,修改复杂,数据冗余

     

     

     

    展开全文
  • 第6章 关系数据理论—多值依赖和4NF

    千次阅读 2021-03-12 20:15:10
    第6章 关系数据理论—多值依赖和4NF 本篇文章全部内容来自数据库系统概论第五版—王珊、萨师煊著。 这是对自己学习的总结,如有错误,请大家指正,一起进步! 1、多值依赖 例:学校某一门课程由个教授讲授,他们...
  • 数据库原理-多值依赖

    万次阅读 多人点赞 2017-02-26 15:29:29
    终于理解了多值依赖 转自http://blog.csdn.net/smstong“多值依赖的定义: 设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-... 若X->->Y,而Z=空集,则称X->->Y为平凡多值依赖。否则,称X->-
  • 多值依赖与部分函数依赖

    千次阅读 2014-02-03 21:59:59
    多值依赖的定义:  设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X... 若X->->Y,而Z=空集,则称X->->Y为平凡多值依赖。否则,称X->->Y为非平凡多值依赖。 可以看出,如果把上面的一组改
  • 轻松理解数据库必须掌握的数据依赖关系。
  • 数据库之多值依赖与4NF

    千次阅读 2014-04-05 13:32:21
    多值依赖的定义:  设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X... 若X->->Y,而Z=空集,则称X->->Y为平凡多值依赖。否则,称X->->Y为非平凡多值依赖。 可以看出,如果把上面的一
  • 数据库之函数依赖、多值依赖

    万次阅读 2019-04-30 19:31:57
    一、函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间依存,互相制约的关系,即反应现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1 , A2 , . ....
  • 对于一个只有函数依赖的模式而言,我们把它分解到BCNF这个层次,那就彻底解决了增删改的异常,如(学生S,系Sd,宿舍D)有S→Sd,Sd→D,当我们把它分解为(学生S,系Sd)和(系Sd,宿舍D),就不用再考虑语义上的啥...
  • 范式 函数依赖 多值依赖

    千次阅读 多人点赞 2020-12-30 22:11:33
    第一范式、第二范式、第三范式、第四范式、第五范式、扩展第三范式、函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、平凡函数依赖、多值依赖,定义、举例、图解、关系
  • 关系模式的多值依赖

    2022-04-13 10:22:21
    定义1:设R(U)是属性集U上的一个关系模式。X、Y、Z是U的子集,并且...Y为平凡多值依赖。 即对于R(X、Y),如果有X->->Y成立,则X->->Y为平凡多值依赖。 例如:关系模式WSC(W,S,C)中,W表示仓库,.
  • 我们先复习下什么是函数:函数是发生在集合之间的一种对应关系(我喜欢用图理解) 数据库中讨论得比较是非平凡函数依赖,而平凡意义不大) 因为成绩不是(学号,课程)的子集。 部分函数依赖:(学号,姓名)→ 性别 因为...
  • 数据库基础1—函数依赖 多值依赖

    万次阅读 2014-09-16 13:47:53
    在数据库知识中有讲到数据库的函数依赖
  • 多值依赖

    千次阅读 2015-05-31 23:25:06
    多值依赖:  比如:学校中某一门课程由个教员讲授,他们使用相同的一套参考书。每个教员可以讲授门课程,每种参考书可以供门课程使用。我们可以用一个非规范化的关系来表示教员T,课程C和参考书B之间的关系...
  • 一、函数依赖: 1.完全函数依赖: 通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。 2.部分函数依赖: 通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。 3.传递函数依赖: 通过A得到...
  • 文章目录0.思维导图1.为什么要学习关系数据库规范化理论?(1)基本概念回顾(2)关系模式的形式化定义(3)什么是数据依赖F?(4)数据依赖F对关系模式的影响1️⃣ 数据冗余(Data ...(2)函数依赖① 函数依赖② 平
  • 2021-04-28

    2021-04-28 10:17:47
    人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和多值依赖。 但是一个模式的数据依赖会有不好的性值,所以需要规范化。 二、规范化 1.函数依赖 定义:设R(U)是属性集U上的关系模式,X,Y是U的子集。...
  • 函数依赖:  简单来说就是一种决定关系,学生编号x决定学生姓名y,则称学生姓名y函数依赖于学生编号x,记做x->y。 部分函数依赖:  表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系...
  • 数据库系统原理(4)--数据依赖与关系模式规范化

    万次阅读 多人点赞 2017-03-26 23:11:43
    关系模式设计中的问题关系数据库设计要解决的主要问题 什么样的数据库模式才合理? 怎么分解才能满足要求? 衡量的标准是什么? 理论基础是什么? 如何进行实现?...数据依赖数据依赖的定义数据依赖是数据之间的
  • 关系模式的组成: 关系模式由五部分组成,是一个五元组: ... F为属性组U上的一组数据依赖  第一范式(1NF): 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个...
  • 关系数据库的规范化理论是数据库逻辑设计的一个有力工具。 1、回顾关系模式 第2章中已经讲过,一个关系模式应当是一个五元组: ...(5)F 属性组U上的一组数据依赖 由于(3)、(4)对模式设计关系不大,因此本章中把...
  • 包括平凡依赖,完全依赖,部分依赖以及传递依赖 ,这些都是关系数据库范式的基础 函数依赖基本概念 函数依赖基本定义 简单来说就是,只要属性X的属性一样(x1=x2) 那么 属性Y中的属性就一样(y1=y2),就...
  • 关系模式: R(U, F) 本章中把关系模式看作一个三元组 R是符号化的元组语义 U为一组属性 F为属性组U上的一组数据依赖 ...主要类型有:函数依赖(FD)、多值依赖(MVD) 函数依赖:设R(U)是一个属性集U上的...
  • ---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- ...在计算机科学中,数据依赖是指一种状态,当程序结构导致数据引用之前处理过的数据时的状态。其中最
  • 1.选择 2.填空&简答 一个不好的关系模式存在四个问题 (1)数据冗余 ...原因:某些数据依赖引起的 ...什么是数据依赖?F(x)=Y 只要x相同Y一定相同,即为Y依赖...非平凡的函数依赖:X →Y,但Y ⊈X,则称X →Y ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,615
精华内容 3,046
关键字:

平凡的多值依赖