我只是想确定自己的想法是否正确。
1)完全依赖是指一个或多个主键决定另一个属性。
2)部分依赖是指一个主键决定另一个或多个属性。
3)传递依赖是指非关键字属性决定另一个属性。
我的理解正确吗?
我只是想确定自己的想法是否正确。
1)完全依赖是指一个或多个主键决定另一个属性。
2)部分依赖是指一个主键决定另一个或多个属性。
3)传递依赖是指非关键字属性决定另一个属性。
我的理解正确吗?
这个答案直接来自于我的计算机科学课程,是从Connolly和Begg的教材中获得的。
全函数依赖
确定候选键(这里是propertyNo、iDate和pAddress)。因为这三者的任何组合都可以让你找到给定元组的其他属性(例如,我可以通过这三个条件找到完成检查的员工编号,我可以找到使用该车辆的员工编号等)。但请注意,要找到其他属性,需要同时拥有这3个条件,而不仅仅是部分条件。 全函数依赖始终涉及非候选键取决于候选键,不论是全部还是部分取决于候选键。
部分函数依赖
在这三个候选键中寻找依赖关系。是否有任何一个候选键的子集依赖于其他条件?有,它就是pAddress。给定一个propertyNo,你可以找到该物业的地址。然后再看看候选键之外的内容。是否有某些键仅依赖于候选键的某些部分而不是所有组件?在这种情况下,没有。所以部分依赖关系始终是候选键内部的依赖关系或非候选键对候选键的部分,而不是全部组件的依赖关系
传递依赖
现在,看一下非候选键(staffNo、comments、iTime(巡检时间)、sName、carReg)。其中,有没有任何一个属性对其他属性具有函数依赖性?有,那就是 sName - 给定一个 staffNo,你可以找出员工的名字。但是 staffNo 是对 3 个候选键具有函数依赖性的。因此通过传递性,propertyNo + iDate + pAddress -> staffNo -> sName,所以sName 对 staffNo 具有传递依赖。传递依赖总是涉及到候选键之外的属性。
完全依赖指的是依赖于所有相关属性,通常意味着所有候选键的属性。它不必是被指定为“主”键,因为主键在依赖理论和规范化中没有任何特殊作用。
部分依赖指的是依赖于这些属性的一个真子集,通常是某个候选键的真子集。
根据语境不同,传递依赖可能意味着以下两种情况之一:
(1) 形如 A->B, B->C 的依赖
(2) 形如 A->B, B->C 的依赖,其中 B 不是超键
几乎总是在指代(2)所描述的情况时使用传递依赖这个术语,并已经几乎成为了该意义的近义词,尽管(1)是更正式正确的含义。
Partial Dependency: 当表中的属性仅依赖于主键的一部分而不是整个主键时,称为部分依赖。 (详见此链接) https://www.studytonight.com/dbms/second-normal-form.php
Transitive Dependency: 当非主属性依赖于其他非主属性而不是依赖于主属性或主键时,称为传递依赖。 (详见此链接) https://www.studytonight.com/dbms/third-normal-form.php