4.9学习总结
数据库原理第六章习题
1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么?
答:主要有插入异常、删除异常和修改异常,这些都是由数据冗余引起的,解决的办法是进行模式分解,消除数据冗余。
2.第一范式、第二范式和第三范式的定义分别是什么?
答:第一范式:每个列都是原子项。第二范式:第一范式且不含部分函数依赖。第三范式:第二范式且不含传递函数依赖。
3.什么是部分函数依赖?什么是传递函数依赖?请举例说明。
答:部分函数依赖:如果X→Y,并且对于X的一个任意真子集X’有X’→Y成立,则称Y部分函数依赖于X。
传递函数依赖:如果X→Y、Y→Z,则称Z传递函数依赖于X。
例1.对于关系模式:选课(学号,姓名,课程号,成绩)
该关系模式的主码是(学号,课程号),而有:学号姓名
因此姓名对主码是部分函数依赖关系。
例2.对于关系模式:学生(学号,姓名,所在系,系主任)
该关系模式的主码是:学号,由于有:学号所在系,所在系系主任
因此系主任对学号是传递函数依赖关系。
4.第三范式的关系模式是否一定不包含部分依赖关系?
是。因为满足第三范式的关系模式一定满足第二范式,一定不包含部分函数依赖关系。
5.对于主码只由一个属性组成的关系模式,如果它是第一范式关系模式,则它是否一定也是第二范式关系模式?
答:是的。因为如果一个关系的主码只由一个属性组成,则此关系中一定不会存在部分依赖关系。
6设有关系模式:学生修课(学号,姓名,所在系,性别,课程号,课程名,学分,成绩).设一个学生可以选多门课程,一门课程可以被多名学生选。每个学生对每门课程有唯一的考试成绩。一个学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。
候选码:(学号,课程号)
第一范式。因为有:学号>姓名,因此存在部分函数依赖 (学号,课程号)p>姓名
第三范式关系模式:
学生(学号,姓名,所在系,性别)
课程(课程号,课程名,学分)
考试(学号,课程号,成绩),学号为引用学生的外码,课程号为引用课程的外码。
7设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任), 其语义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个人只担任一个系的系主任:一个班只有一名班主任,但一名教师可以担任多个班的班主任:一个系可以有多个班。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码。
候选码:学号
属于第二范式。
但有:学号->班号,班号->班主任,因此存在传递函数依赖:学号传递->班主任
第三范式关系模式:
学生(学号,姓名,所在系,班号),班号为引用班的外码,所在系为引用系的外码。
班(班号,班主任)
系(系名,系主任)
8设有关系模式:教师授课(课程号,课程名,学分,教师号,教师名,职称,授课时数8.授课学年),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名和职称,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,在同一学年每个教师对每门课程只讲授一次,且有确定的授课时数指出此关系模式的候选码,判断此关系模式属于第几范式,若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主码和外码
候选码:(课程号,授课教师号)
属于第一范式。因为有:课程号一课程名,因此存在部分函数依赖关系:(课程号授课教师号)p>课程名
第三范式关系模式:
课程 (课程号,课程名,学分)
教师(教师号,教师名,职称)
授课(课程号,教师号,授课时数,授课学年),课程号为引用课程的外码,教师号
为引社用教师的外码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现