我只是想确保我正确地思考它
1)完全依赖是指一个或多个主键确定另一个属性
2)部分依赖关系是指其中一个主键确定另一个或多个属性
3)传递依赖关系是指nonkey属性确定另一个属性
我正在考虑它吗?答案 0 :(得分:7)
这个答案直接来自我的CS课程,并从Connolly和Begg教科书中获得。
完整的功能依赖
识别候选键 (此处为propertyNo,iDate和pAddress)。这是因为这3个的任何组合都可以让你找到给定元组的其他属性(我可以找到那些根据这三件事进行检查的staffNo,我可以找到carReg工作人员没有使用给出这3件事等)。但请注意,您需要所有这3个才能找到其他属性,而不仅仅是一个子集。 完全依赖关系始终与非候选键相关,具体取决于候选键,具体取决于所有或依赖在一些。
部分依赖
考虑到这三个候选键,查看候选键。是否有候选键的任何子集依赖于另一个?是的,它是pAddress。给定propertyNo,您可以找出该属性的地址。然后看看候选键之外。是否有任何这些键仅依赖于候选键的一部分,而不是所有组件?在这种情况下没有。因此,部分依赖关系始终是候选键内的依赖关系或非候选键的依赖关系,而只是部分候选键而不是所有组件
传递依赖
现在,查看非候选键(staffNo,comments,iTime(检查时间),sName,carReg)。在那些内部,是否有任何功能上依赖于另一个?是的,它是sName - 给定一个staffNo,你可以找出工作人员的名字。但是staffNo在功能上依赖于3个候选键。因此,通过传递性,propertyNo + iDate + pAddress - > staffNo - > sName,因此 sName过渡依赖于staffNo 。 传递依赖关系始终与候选键之外的属性相关。
答案 1 :(得分:5)
不完全。在你的术语中更准确一点:当你说“一个或多个主键”之类的东西时,你(可能)真的意思是“主键的一个或多个列”?
仅当一个键由多个列(一个复合键)组成时,才会出现完全依赖和部分依赖之间的区别:
1)完全依赖是指需要完整密钥(密钥的所有列)以确定另一个属性。
2)部分依赖性是指密钥是复合的,而密钥的某些但不是所有列都确定了另一个属性。 (这可能仍然不止一列。)
3)传递依赖性如你所说。
答案 2 :(得分:3)
完全依赖意味着依赖于所讨论的所有属性,通常意味着候选键的所有属性。它不一定是指定为“主要”的键,因为主键在依赖理论和规范化中不起任何特殊作用。
部分依赖意味着依赖于这些属性的适当子集,通常意味着某个候选键的适当子集。
根据上下文,传递依赖可以表示以下任一项:
(1)形式A-> B,B-> C
的依赖性(2)形式A-> B,B-> C的依赖性,其中B不是超级密钥
在提到(2)所描述的情况时,几乎总是使用术语传递依赖,并且即使(1)是更正式的正确含义,它也几乎成了这种意义的同义词。
答案 3 :(得分:1)
部分依赖::表中的属性仅依赖于主键的一部分,而不依赖于整个键。 (有关详细信息,请参见此链接) https://www.studytonight.com/dbms/second-normal-form.php
传递依赖项::非主要属性取决于其他非主要属性而不是主要属性或主键时。 (有关详细信息,请参见此链接) https://www.studytonight.com/dbms/third-normal-form.php