函数依赖

函数依赖是指关系中属性间(或者说是表中字段间)的对应关系。
定义:设 R 为任一给定关系,如果对于 R 中属性 X 的每一个值,R 中的属性 Y 只有唯一值与之对应,则称 X 函数决定 Y 或称 Y 函数依赖于 X ,记作 X—>Y。其中,X 称为决定因素。
通俗一点,就是给定一个 X 都有唯一的 Y。可以理解为函数 y = f(x); 对于任意的 x 都有唯一的 y ,且 y 的取值由 x 决定。
例如:学生号—>学生姓名,学生年龄等等有关该学生的所有信息
反之,像学生姓名不能决定唯一的学生,因为存在同名的可能,这种情况就不能称作函数依赖。
根据函数依赖性质可分为以下三种:

  • 完全函数依赖
    • 书上定义的意思基本是:如果存在 X 属性集(注意是集合,说明是联合主键)决定 唯一的 Y ,且 X 中的任一子集都不能决定 唯一的 Y,则 Y 完全依赖于 X。
    • 例如:学生数学成绩完全由该学生的学号和数学课决定,所以数学课成绩完全依赖于(学号,数学课)
  • 部分函数依赖
    • 定义和完全函数依赖有一点不一样,就是 X 的属性集中任一子集可以决定唯一的 Y
    • 例如:学生学号和姓名可以决定唯一的学生,但是学生号也可以决定唯一的学生
  • 传递函数依赖
    • 定义:设 R 为任一给定关系, X Y Z 为其不同的属性子集,若 X —> Y, Y 不决定 X 且 Y —>Z,则有 X —>Z,称为 Z 传递函数依赖于 X
    • 例如:书的出版编号是唯一,版权归出版社所有,所以只能由该出版社出版。所以存在函数依赖:书出版编号—>出版社名,出版社名—>出版社地址,但是出版社名不能决定唯一的出版书编号(除非出版社只出版过一本书,那我没话说),则有出版社地址传递函数依赖于出版书编号

理解好函数依赖,对于理解关系数据库的三范式起到关键作用。

  • 参考
    • 《数据结构系统原理》(黄靖 主编)

你可能感兴趣的:(数据库系统原理)