一、今日学了啥?
- 函数依赖是数据库设计的基础概念,表示属性间的决定关系
- 候选键的识别方法是找入度为零的属性并通过有向图遍历验证
- 部分函数依赖和传递函数依赖是导致数据冗余和异常的主要原因,需要通过模式分解来消除
- 理解函数依赖的核心是掌握属性间的决定关系,能够通过有向图正确识别候选键是关键技能
二、重点/要记住的!
-
函数依赖(Functional Dependency)
- 定义:在关系模式中,如果对于任意两个元组,只要X属性值相同,Y属性值也必须相同,则称X函数决定Y,记作
X → Y
- 通俗理解:给定X值就能唯一确定Y值,如身份证号决定学号
- 定义:在关系模式中,如果对于任意两个元组,只要X属性值相同,Y属性值也必须相同,则称X函数决定Y,记作
-
候选键(Candidate Key)
- 定义:能唯一标识元组且无冗余的属性或属性组
- 特点:可以有多个,从中选择一个作为主键
-
有向图表示法
- 用节点表示属性,用箭头表示函数依赖关系
- 箭头方向:从决定因素指向被决定因素
-
部分函数依赖
- 在候选键为复合键时,非主属性依赖于候选键的一部分
- 如:{学号, 课程号} → 成绩,但学号 → 姓名,则姓名部分依赖于候选键
-
传递函数依赖
- 如果
A → B
且B → C
,并且B ↛ A
,则C传递依赖于A - 如:学号 → 宿舍号,宿舍号 → 宿舍费用,则学号传递决定宿舍费用
- 如果
-
候选键与主键
- 候选键是所有可能的唯一标识符,主键是从候选键中选择的一个
- 一个关系可以有多个候选键,但只有一个主键
-
部分依赖与完全依赖
- 部分依赖:只依赖候选键的一部分
- 完全依赖:依赖整个候选键
-
入度为零的理解
- 入度为零指没有箭头指向该节点
- 这些属性通常是候选键的组成部分
-
函数依赖图的遍历
- 从候选键出发能访问所有节点才说明该属性集是候选键
- 不是简单看是否有箭头出去,而是看能否推导出所有其他属性
三、今天的小收获/卡住的地方
暂不涉及
四、明天学啥?
明天学习范式判断
像实干家一样思考问题,像思想家一样付诸行动。
愿你我共同进步!