-
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 A1 F1 Car A1 F2 Bus A2 F2 这里“产品(X)→→代理商(Y)”,产生的多值依赖关系如下
产品(X) 工厂(Z) 代理商(Y) Car F1 A1 Car F2 A1 这里一个car对应一组代理商,这就是代理商多值依赖于产品。为什么会产生这个多值依赖呢?
因为工厂,只有代理商A1销售Car ,但是这里却又两个工厂生产Car ,说以导致了Car和A1的关系冗余。这就是数据表的设计问题的体现。消除多值依赖也很简单。做如下表设计。产品-经销商关系表
产品 供应商 Car A1 Bus A1 Car A2 产品生产关系表
产品 工厂 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 A1 F1 Car A1 F2 Bus A2 F2 “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为非平凡的多值依赖。 可以看出,如果把上面的一组改 -
边学边思考——数据库中函数依赖与多值依赖的辨析
2014-12-18 13:45:31轻松理解数据库必须掌握的数据依赖关系。 -
数据库之多值依赖与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 , . .... -
多值依赖 模式分解 (学习感想)
2020-06-25 10:35:54对于一个只有函数依赖的模式而言,我们把它分解到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表示仓库,. -
边学边思考数据库中函数依赖与多值依赖的辨析
2021-01-21 04:07:50我们先复习下什么是函数:函数是发生在集合之间的一种对应关系(我喜欢用图理解) 数据库中讨论得比较多是非平凡函数依赖,而平凡意义不大) 因为成绩不是(学号,课程)的子集。 部分函数依赖:(学号,姓名)→ 性别 因为... -
数据库基础1—函数依赖 多值依赖
2014-09-16 13:47:53在数据库知识中有讲到数据库的函数依赖, -
多值依赖
2015-05-31 23:25:06多值依赖: 比如:学校中某一门课程由多个教员讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。我们可以用一个非规范化的关系来表示教员T,课程C和参考书B之间的关系... -
函数依赖 候选码 主码 第三范式 BCNF 多值依赖
2020-10-14 11:04:46一、函数依赖: 1.完全函数依赖: 通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB。 2.部分函数依赖: 通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。 3.传递函数依赖: 通过A得到... -
6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响...BCNF-4NF、函数依赖与多值依赖)
2020-05-12 23:18:08文章目录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的子集。... -
部分函数依赖,完全函数依赖,传递函数依赖,平凡函数依赖和非平凡函数依赖...
2018-02-26 11:50:00函数依赖: 简单来说就是一种决定关系,学生编号x决定学生姓名y,则称学生姓名y函数依赖于学生编号x,记做x->y。 部分函数依赖: 表达一种冗余的依赖关系,设U{A1,A2,…,An}是属性集合,R(U)为某关系... -
数据库系统原理(4)--数据依赖与关系模式规范化
2017-03-26 23:11:43关系模式设计中的问题关系数据库设计要解决的主要问题 什么样的数据库模式才合理? 怎么分解才能满足要求? 衡量的标准是什么? 理论基础是什么? 如何进行实现?...数据依赖数据依赖的定义数据依赖是数据之间的 -
数据库系统概论-第六章-关系数据理论
2018-10-27 15:39:30关系模式的组成: 关系模式由五部分组成,是一个五元组: ... F为属性组U上的一组数据依赖 第一范式(1NF): 作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。满足了这个... -
关系数据理论(回顾关系模式、数据依赖、不规范的关系模式存在的问题、 函数依赖、非平凡函数依赖/平凡函数...
2022-05-08 20:25:59关系数据库的规范化理论是数据库逻辑设计的一个有力工具。 1、回顾关系模式 第2章中已经讲过,一个关系模式应当是一个五元组: ...(5)F 属性组U上的一组数据依赖 由于(3)、(4)对模式设计关系不大,因此本章中把... -
数据库基础(3)函数依赖-平凡依赖,完全依赖,部分依赖,传递依赖
2018-11-24 09:32:40包括平凡依赖,完全依赖,部分依赖以及传递依赖 ,这些都是关系数据库范式的基础 函数依赖基本概念 函数依赖基本定义 简单来说就是,只要属性X的属性值一样(x1=x2) 那么 属性Y中的属性值就一样(y1=y2),就... -
数据库作业15:第六章: 关系数据理论
2020-04-19 14:02:40关系模式: R(U, F) 本章中把关系模式看作一个三元组 R是符号化的元组语义 U为一组属性 F为属性组U上的一组数据依赖 ...主要类型有:函数依赖(FD)、多值依赖(MVD) 函数依赖:设R(U)是一个属性集U上的... -
黑马程序员 数据库 函数依赖
2013-12-04 14:02:27---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- ...在计算机科学中,数据依赖是指一种状态,当程序结构导致数据引用之前处理过的数据时的状态。其中最 -
数据库6:关系数据理论
2022-01-03 17:52:431.选择 2.填空&简答 一个不好的关系模式存在四个问题 (1)数据冗余 ...原因:某些数据依赖引起的 ...什么是数据依赖?F(x)=Y 只要x相同Y一定相同,即为Y依赖...非平凡的函数依赖:X →Y,但Y ⊈X,则称X →Y ...