13

我只是想确保我以正确的方式思考它

1)完全依赖是当一个或多个主键确定另一个属性时

2)部分依赖是当一个主键确定另一个或多个属性时

3)传递依赖是当一个非关键属性决定另一个属性时

我想对了吗?

4

4 回答 4

16

这个答案直接来自我的 CS 课程,并从 Connolly 和 Begg 教科书中获得。

在此处输入图像描述

完整的功能依赖

识别候选键 (此处为 propertyNo、iDate 和 pAddress)。这是因为这 3 个的任何组合都可以让您找到给定元组的其他属性是什么(我可以找到根据这三件事进行检查的工作人员编号,我可以找到给定这三件事的 carReg the staffNo used 等等.)。但请注意,您需要所有这 3 个属性才能找到其他属性,而不仅仅是一个子集。 完全依赖关系总是与取决于候选键的非候选键相关,或者取决于全部或取决于一些。

部分依赖

给定这三个候选键,查看候选键。是否存在依赖于另一个的候选键的任何子集?是的,它是 pAddress。给定一个propertyNo,就可以算出该property的地址是什么了。然后查看候选键之外的内容。是否有任何这些键仅依赖于候选键的一部分,而不是所有组件?在这种情况下没有。因此,部分依赖始终是候选键内的依赖或非候选键仅对候选键的一部分而不是所有组件的依赖

传递依赖

现在,查看非候选键(staffNo、comments、iTime(检查时间)、sName、carReg)。在这些之中,有什么在功能上依赖于另一个吗?是的,它是 sName - 给定一个职员编号,您可以找出职员的姓名。但是 staffNo 在功能上依赖于 3 个候选键。所以通过传递性,propertyNo + iDate + pAddress -> staffNo -> sName,所以sName 传递依赖于 staffNo传递依赖总是与候选键之外的属性相关。

于 2016-04-12T10:39:12.437 回答
6

不完全的。在您的术语中更准确会有所帮助:当您说“一个或多个主键”之类的东西时,您(大概)真的是指“主键的一个或多个列”?

仅当键包含多于一列(复合键)时,才会出现完全依赖和部分依赖之间的区别:

1)完全依赖是当需要完整的键(键的所有列)来确定另一个属性时。

2)部分依赖是当键是复合的并且键的一些但不是所有的列确定另一个属性时。(这可能仍然不止一列。)

3)传递依赖如你所说。

于 2013-04-22T17:09:09.867 回答
4

完全依赖意味着依赖于所有有问题的属性,通常意味着候选键的所有属性。它不必是指定为“主”的键,因为主键在依赖理论和规范化中没有任何特殊作用。

部分依赖意味着依赖于这些属性的适当子集,通常意味着某个候选键的适当子集。

根据上下文,传递依赖可能意味着以下任何一种:

(1) A->B, B->C 形式的依赖

(2) A->B, B->C 形式的依赖关系,其中 B 不是超键

当提到(2)描述的情况时,几乎总是使用术语及物依赖,并且实际上已成为该含义的同义词,即使(1)是更正式的正确含义。

于 2013-04-22T17:58:21.020 回答
1

部分依赖:表中的属性仅依赖于主键的一部分,而不依赖于整个键。(详情见此链接) https://www.studytonight.com/dbms/second-normal-form.php

传递依赖:当一个非主属性依赖于其他非主属性而不是依赖于主属性或主键时。(详情见此链接) https://www.studytonight.com/dbms/third-normal-form.php

于 2020-07-23T01:24:28.540 回答