基本函数依赖和候选键_白话详解数据库函数依赖和Armstrong公理及其引理

  • Post author:
  • Post category:其他


一、函数依赖

1. 函数依赖

定义:设 R(U) 是属性集合 U={ A1, A2, … , An } 上的一个关系模式,X, Y 是 U 上的两个子集,若对 R(U) 的任意一个可能的关系 r ,r 中不可能有两个元组满足在 X 中的属性值相等而在 Y 中的属性值不等,则称 “ X 函数决定 Y ” 或 “ Y函数依赖于X ” ,记作


白话:在一个关系 R 中,属性(组) Y 的值是由属性(组) X 的值所决定的 。又可以说,在关系 R 中,若两个元组的 X 属性值相同,那么这两个元组的 Y 属性值也相同。

为什么叫做函数依赖? 函数的定义:对于定义域中任意 x ,有且只有一个 y 与之对应。 属性之间的依赖:对于相同的 X 属性值,有且只有一个 Y 属性值与之对应。

本质:函数依赖的本质就是反应了 一个关系中属性之间的约束关系,或者依赖关系。函数依赖是一种数据依赖。

举例:1. U = { 学号,姓名,年龄,专业 }

{学号}


{ 姓名,年龄,专业 }

函数依赖 分为 非平凡函数依赖 和 平凡函数依赖。 非平凡函数依赖:对


,但


,则称


为非平凡的函数依赖。也就是说 X 决定 Y,但是 Y 不在 X 中,这种叫做非平凡函数依赖。否则就是平凡函数依赖。

2. 完全函数依赖和部分函数依赖

定义:在关系 R(U) 中, 若


,且对于 X 的任何真子集 X‘ 都有 X’


Y,则称 Y 完全函数依赖于 X,记为:


。否则称 Y函数部分依赖于 X,记为


白话:完全函数依赖就是说 属性组 X 的所有属性一起(即完全)才能决定属性 Y,去掉任何一个属性都不行。相反的,部分函数依赖就是说 属性组 X 中的 部分属性就可以决定 Y ,用不着全部。

Insight:如果 属性(组)Y 部分函数依赖于 属性组 X,则说明属性组 X 中存在着对属性(组) Y 的非受控冗余。在设计数据库时应避免这种情况。(对应着 2NF )。



版权声明:本文为weixin_42342032原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。