关系型数据库函数依赖与关键字

函数依赖

设R为任一给定关系,如果对于R中属性X的每一个值,R中的属性Y只有唯一值与之对应,则称X函数决定Y或称Y函数依赖于X,记作X → Y。其中X称为决定因素。

函数依赖分类

  • 完全函数依赖
  • 部分函数依赖
  • 传递函数依赖

完全函数依赖

设R为任一给定关系,X、Y为其属性集,若X → Y,且对X中的任何真子集X’ ,那么X’ ↛ Y 都成立,则称Y完全函数依赖于X。

SC(SNO,CNO,CTITLE,INAME,IPLACE,GRADE)
 (学号,课程号,课程名,授课老师,授课地址,成绩)
(SNO,CNO) →  GRADE  为完全函数依赖
SNO  ↛  GRADE     CNO  ↛  GRADE  
     完全函数依赖

部分函数依赖

设R为任一给定关系,X、Y为其属性集,若X → Y,且X中存在一个真子集X’,满足X’ → Y,则称Y部分函数依赖于X。

学号(SNO) 姓名(NAME) 性别(SEX)
334001 小A
334002 小B
334003 小C
(SNO, NAME)  → SEX
SNO → SEX

传递函数依赖

设R为任一给定关系,X、Y、Z为其不同属性子集,若X → Y,Y ↛ X,Y → Z,则有X → Z,称为Z传递函数依赖于X。

BOOKS(BNO,PNAME,PADDRESS)
   (书号,出版社名,出版社地址)
BNO → PNAME     PNAME ↛ BNO     PNAME → PADDRESS,
 则PADDRESS传递函数依赖于BNO

关键字

设R为任一给定关系,U为其所含的全部属性集合,X为U的子集,若有完全函数依赖X → U,则X为R的一个候选关键字。

SC(SNO,CNO,CTITLE,INAME,IPLACE,GRADE)
(SNO,CNO) →  CTITLE,(SNO,CNO) → INAME,
(SNO,CNO) →  IPLACE, (SNO,CNO) → GRADE
则(SNO,CNO)为候选关键字(主属性)