软考系统分析师·每日学习卡 | [日期:2025-08-15] | [今日主题:函数依赖]

一、今日学了啥?

  • 函数依赖是数据库设计的基础概念,表示属性间的决定关系
  • 候选键的识别方法是找入度为零的属性并通过有向图遍历验证
  • 部分函数依赖和传递函数依赖是导致数据冗余和异常的主要原因,需要通过模式分解来消除
  • 理解函数依赖的核心是掌握属性间的决定关系,能够通过有向图正确识别候选键是关键技能

二、重点/要记住的!

  • 函数依赖(Functional Dependency)

    • 定义:在关系模式中,如果对于任意两个元组,只要X属性值相同,Y属性值也必须相同,则称X函数决定Y,记作 X → Y
    • 通俗理解:给定X值就能唯一确定Y值,如身份证号决定学号
  • 候选键(Candidate Key)

    • 定义:能唯一标识元组且无冗余的属性或属性组
    • 特点:可以有多个,从中选择一个作为主键
  • 有向图表示法

    • 用节点表示属性,用箭头表示函数依赖关系
    • 箭头方向:从决定因素指向被决定因素
  • 部分函数依赖

    • 在候选键为复合键时,非主属性依赖于候选键的一部分
    • 如:{学号, 课程号} → 成绩,但学号 → 姓名,则姓名部分依赖于候选键
  • 传递函数依赖

    • 如果 A → BB → C,并且 B ↛ A,则C传递依赖于A
    • 如:学号 → 宿舍号,宿舍号 → 宿舍费用,则学号传递决定宿舍费用
  • 候选键与主键

    • 候选键是所有可能的唯一标识符,主键是从候选键中选择的一个
    • 一个关系可以有多个候选键,但只有一个主键
  • 部分依赖与完全依赖

    • 部分依赖:只依赖候选键的一部分
    • 完全依赖:依赖整个候选键
  • 入度为零的理解

    • 入度为零指没有箭头指向该节点
    • 这些属性通常是候选键的组成部分
  • 函数依赖图的遍历

    • 从候选键出发能访问所有节点才说明该属性集是候选键
    • 不是简单看是否有箭头出去,而是看能否推导出所有其他属性

三、今天的小收获/卡住的地方

暂不涉及

四、明天学啥?

明天学习范式判断

像实干家一样思考问题,像思想家一样付诸行动。

愿你我共同进步!