【软考】函数依赖

1. 数据依赖
  • 1.数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系
  • 2.数据依赖是现实世界属性间联系和约束的抽象
  • 3.数据依赖是数据内在的性质,是语义的体现
  • 4.函数依赖是一种最重要、最基本的数据依赖
2. 函数依赖
2.1 定义
  • 1.设R(U)是属性集U上的关系模式,X、Y是U的子集。若对R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作X->Y
2.2 举个例子
  • 1.例如一个名为学生的关系模式,属性集U包括学号、姓名、年龄、班级四个属性
  • 2.假设X是学号,Y是姓名、年龄、班级,X和Y均是U的子集
  • 3.若两个学生不存在学号属性值相等,而姓名、年龄、班级属性值不等的情况下,那么学号函数决定姓名、年龄、班级 或者 姓名、年龄、班级依赖于学号,即学号->姓名,年龄,班级
  • 4.存在两个学生姓名属性值相等,而年龄、班级属性值不等的情况吗?答案是存在的,所以年龄、班级不依赖于姓名
  • 5.因此学号决定姓名、年龄和班级,或者说姓名、年龄和班级依赖于学号
2.3 作用
  • 1.函数依赖可以帮助我们理解数据的结构
  • 2.推导出其他有用的信息,例如候选键和外键
  • 3.可以确保数据的完整性、减少数据冗余以及优化查询性能
3. 非平凡的函数依赖
3.1 定义
  • 1.如果X->Y,但Y不是X的子集,则X->Y是非平凡的函数依赖
  • 2.如果X能决定Y,但Y不是X的子集,则是非平凡的函数依赖
  • 3.学号能决定姓名、年龄和班级,姓名、年龄和班级是学号的子集,学号确定,那么姓名、年龄和班级也随之确定,因此是平凡的函数依赖
  • 4.非平凡体现在数据之间额外的有意义的关系
3.2 举个例子
  • 1.例如一个订单的关系模式,其属性集U包括订单号、客户号、订单日期、客户姓名
  • 2.订单号->客户号,订单日期,X={订单号},Y={客户号,订单日期}
  • 3.客户号和订单日期不是订单号的子集,虽然订单号可以确定客户号和订单日期这俩属性,但客户号和订单日期是这条记录的具体信息
  • 4.订单号不能直接得出客户号的值,因为客户号并不是由订单号决定的,客户号与订单号没有直接的函数依赖关系。没有订单号,也会有客户号,客户号在设计客户信息的时候就存在了。
  • 5.因此订单号->客户号,订单日期是一个非平凡的函数依赖,数据之间有意义的关系
4. 平凡的函数依赖
4.1 定义
  • 1.如果 X->Y,且 Y属于X,则称X->Y是平凡的函数依赖。
4.2 举个例子
  • 1.学号->姓名,年龄,班级
  • 2.函数依赖是平凡的,因为学号完全决定了姓名、年龄和班级这三个属性的值
  • 3.学号中包含了足够的信息来唯一确定这些属性的值,是直接的函数依赖关系。这个函数依赖是平凡的
5. 完全函数依赖
5.1 定义
  • 1.在一个关系中,如果X->Y,并且对于X的任何一个真子集X’都有X’不能决定Y,则称Y对X完全函数依赖
5.2 举个例子
  • 1.例如(员工id,部门id)->员工姓名,同一个部门下,员工id不能重复,不同部门的员工id可以重复,只有同时知道员工id和部门id,才能唯一确定员工的姓名,单独知道其中某个id是不足以确定员工姓名的
  • 2.即员工姓名对员工id,部门id完全依赖
6. 部分函数依赖
6.1 定义
  • 1.如果X->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖
  • 2.部分函数依赖也称为局部函数依赖
6.2 举个例子
  • 1.(订单id, 产品id)->产品数量, 产品单价,这个函数依赖表示订单号和产品ID的组合能够决定产品数量和产品单价。
  • 2.如果发现只需要订单id就能决定产品单价,而不需要产品id,那么产品单价就对(订单id, 产品id)部分函数依赖。
7. 传递依赖
  • 1.在R(U,F),如果X->Y,Y⊈X,Y->Z,则称Z对X传递依赖。
8. 码
8.1 候选码
  • 1.Candidate Key。
  • 2.若关系中的某一属性属性组的值能唯一地标识一个元组,则称该属性或属性组为候选码。
  • 3.设K为 R(U)中属性的组合,若 K→U,且对于 K的任何一个真子集 K’都有 K’不能决定U,则K为R的候选码。
  • 4.候选码通常也称为候选关键字
  • 5.候选码可以唯一标识一条记录的一组属性。
  • 6.在数据库中,如果某个属性或属性组的值能够唯一地标识一个元组(记录),这个属性或属性组称为候选码。
8.2 主码
  • 1.Primary Key。
  • 2.若有多个候选码,则选定其中一个作为主码。
8.3 外码
  • 1.Foreign Key。
  • 2.如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
  • 3.例如学生与课程的选课关系student-course(student_id, course_id),属性student_id是学生关系中的码,属性course_id是课程关系中的码,因此student_id和course_id都是外码。
8.4 全码
  • 1.All-Key
  • 2.关系模型的所有属性组是这个关系模式的候选码,称为全码。
  • 3.例如关系模式R(T,C,S),属性T表示教师,属性C表示课程,属性S表示学生。假设一个教师可以讲授多门课程,某门课程可以由多个教师讲授,学生可以听不同教师讲授的不同课程,则想要区分关系中的每一个元组,则要所有属性,这个关系模式R的码应为全属性T、C和S,即All-Key。
9. 主属性和非主属性
  • 1.包含在任何一个候选码中的属性称为主属性,否则称为非主属性。
10. 例题
10.1 例题1
  • 1.题目
1.给定关系模式R,U={A,B,C},F={AB→C,C→B}。关系R(D),且分别有(C)
A.只有1个候选关键字AC
B.只有1个候选关键字AB
C.有2个候选关键字AC和BC
D.有2个候选关键字AC和AB

A.1个非主属性和2个主属性
B.2个非主属性和1个主属性
C.0个非主属性和3个主属性
D.3个非主属性和0个主属性
  • 2.分析
1.AB能推导出C,C能推导出B,因此AB能推导出所有属性,因此AB是候选关键字
2.C能推导出B,AC能推导出所有属性,因此AC也是候选关键字
3.包含在任何一个候选码中的属性称为主属性,A、B、C均包含在任何一个候选码,因此A、B、C都是主属性,
没有非主属性。
10.2 例题2
  • 1.题目
2.假设关系 R<U,F>, U={A1,A2,A3}, F={A1A3 →A2, A1A2→A3},则关系R的各候选关键字中必定含有属性(A)。
A.A1
B.A2
C.A3
D.A2A3
  • 2.解析
1.既能唯一标识元组,包含的字段又是最精炼的,而且如果去掉其中任何一个字段后不再能唯一标识元组,那么就是候选关键字。
2.候选关键字有A1A3,A1A,所以候选关键字中必有的属性是A1。
  • 32
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佑辉

老板,赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值