数据库函数依赖问题

数据库函数依赖问题,第1张

你好!

首先我们可以看到,C→D在R2上保持函数依赖,但是A→D,B→D在R1,R2上都不保持所以做进一步判断——

判断的算法如下:

对F上的每一个α→β使用下面的过程:

①令result=α;

②t=(result∩Ri)+ ∩Ri;

result=result∪t

(第二步的Ri={R1(),R2(),,Rn()},该步骤遍历一遍分解出的关系模式)

要注意的是这里的属性闭包是在函数依赖集F下计算出来的,如果result中包含了β的所有属性,则函数依赖α→β,分解是保持依赖的(当且仅当上述过程中F的所有依赖都被保持)。

那么我们来判断一下,首先是A→D

先对R1,令result=A,result∩R1=A,A+=AD,t=A+∩R1=A,result=A;

再对R2,令result=A,result∩R2=空集,空集无法求闭包,那么t=空集,result=A。

可以发现无论对于R1还是R2最后的result都是A,并未包含D,所以A→D未被保持,这里已经可以得出该分解不保持函数依赖

对于B→D也是一样的方法:

先对R1,令result=B,result∩R1=B,B+=BD,t=B+∩R1=B,result=B;

再对R2,令result=B,result∩R2=空集,空集无闭包,t=空集,result=B;

result并未包含D,所以B→D也同样未被保持,该分解不保持函数依赖

你好!

第一范式的定义:每一个分量都是不可分的数据项。

因此只要满足每一个属性是不可分的数据项就是第一范式,就算有部分函数依赖也一样的,是可以有部分函数依赖的。

下面给出范式简单的定义:

1NF:每个分量都必须是不可分的数据项。

2NF:满足1NF,每个非主属性对码都是完全函数依赖,排除了部分函数依赖。

3NF:满足1NF,每个非主属性都不传递依赖于码,排除了传递函数依赖。

BCNF:满足1NF,每个决定因素都包含码,且消除了主属性对码的部分与传递函数依赖。

4NF:满足1NF,删除同一表内的多对多关系。消除了非平凡且非函数依赖的多值依赖。4NF所允许的非平凡的多值依赖实际上是函数依赖。

我给你推荐一本书吧,叫做,《数据库系统概论》!

对于你所说的问题,我是这样理解的:

SNO可以推导出SDEPT, 有SDEPT可以推导出MN,但是你只有SNO,是无法推导出G的,难道不是吗?推导出G需要有CNAME,可是你却告诉只有SNO,没有选课,所以就无法得到,对应功课的成绩!这个时候,我们就要来讨论primary key,我想你肯定知道主键是什么意思了,因为你已经学到了这里,所以对数据库肯定有一定的了解,好了,不说废话,在F中,SNO不能作为主键,因为只有SNO的话,却无法得到G,(原因,前面已经讲过!),只有SDEPT,就跟更没有办法得到G了,不是吗?只有通过(SNO, CNAME)联合才能得到G,而在这之中,有SNO,所以,通过SNO可以推导出,SDEPT,而通过SDEPT,可以推导出MN,不是吗?所以总结得出,primary key 只能是(SNO , CNAME)。一个表中主键没有值,那是肯定不可以的!所有数据就不可能插于进去!

我是学数据库的,若是有什么疑问,我们可以深入谈论!

对于给你推荐的那本书,是我作为学生时,看的书,里面讲的很好,对于初学者而言,是一本不错的书!能够帮助你你在数据库这条道路上走得更远!祝你好运!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12176681.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存