问答题 阅读下列说明,根据要求回答下列问题。
[说明]
某学校为实现无纸化、网络化的教材管理,拟开发一套教材管理系统。该系统主要负责统计全校的教学用书的需求信息,以便进行教材的统一购买。
[需求分析结果]
(1)教学计划。各学院的教学计划是教材需求的来源,各学院的教学管理人员为本学院的各个专业方向制订教学计划。教学计划主要描述每个专业方向不同学期所开设的课程信息,教学计划的示例如表1所示。
表1 “教学计划”示例
院系名称 专业名称 学期 课程编号 课程名 教材编号
计算机系 软件工程 4 C0101 软件开发 B001
计算机系 软件工程 4 C0103 数据库技术 B003
计算机系 网络通信 5 C0103 数据库技术 B003
电子工程系 网络通信 6 C020l 数据库技术 B005

(2)课程信息。课程信息包括课程编号、课程名和教材编号,由课程编号唯一标识。如表1所示,《数据库技术》课程因其使用的教材不同而分别编号。
(3)专业方向和班级。学校根据学院和专业方向将学生划分班级。一个学院可有多个专业方向,不同学院可以有相同名称的专业方向。一个专业方向可有多个班级,班级包含入学年份和人数。
(4)教材信息。教材信息记录教材的基本信息,包括教材编号、教材名称、ISBN号、出版社名称、作者和版本号。同一种教材版本不同,编号也不同,一种教材可以有多个作者。
(5)教材需求。根据各学院的教学计划和对应的班级人数,统计全校各系各专业各班级的教材需求情况。教材需求量是根据现有的教学计划和班级人数计算得到的。
[逻辑结构设计]
根据需求阶段收集的信息,设计的关系模式如图所示。
问答题 根据如图所示的关系模式,回答以下问题。
(1)分析“教材”关系,给出除FD2外其余的函数依赖和多值依赖。
(2)列出“教材”关系的所有候选键。
(3)分析“教材”关系的所属范式,并说明原因。
(4)对“教材”关系进行分解,使其达到4NF。分解后各关系模式分别命名为:教材1,教材2……
【正确答案】(1)ISBN→{教材名称,教材编号,出版社,版本号}
由于一本书可以有多个作者,因此作者存在多值依赖
教材编号→→作者
ISBN→→作者
(2)教材编号 和 ISBN
(3)BCNF
没有主属性对码的部分依赖和传递依赖;非主属性完全依赖于码;没有任何属性完全函数依赖于非候选码的任何一组属性
(4)教材1(教材编号,ISBN,教材名称,出版社,版本号)
教材2(教材编号,作者)或者教材2(ISBN,作者)
【答案解析】这是一道要求读者掌握数据库关系模式规范化理论的综合分析题,本题解答思路如下。
根据图、表2和题干相关描述信息,可得到如下各关系模式的主键和外键。
班级(班级号,入学年份,人数,院系名称,专业名称)
课程(课程编号,课程名,教材编号)
教材(教材编号,教材名称,ISBN,出版社,作者,版本号)
教学计划(院系名称,专业名称,学期,课程编号,课程名,教材编号)
(1)对于“教材”关系模式,教材的信息除了完全函数依赖于教材编号,也完全函数依赖于ISBN号。因此还需补充函数依赖:ISBN→{教材名称,教材编号,出版社,版本号}。
此外,根据题干中的关键信息“一种教材可以有多个作者”可知,对于“教材”关系模式中的作者属性,存在多值依赖。
教材编号→→作者
ISBN号→→作者
(2)如果属性组Y完全函数依赖于候选键,则根据FD2和(1)中补充的函数依赖可知,“教材”关系模式的候选键为:教材编号和ISBN。
(3)对于“教材”关系模式来说,没有主属性对码的部分依赖和传递函数依赖;非主属性完全依赖于码;没有任何属性完全函数依赖于非候选码的任何一组属性,满足BCNF范式的要求。因此“教材”关系模式属于BCNF范式。
(4)由于“教材”关系模式存在多值依赖,因此它不满足4NF的要求。可以针对“作者”属性进行分解,从“教材”关系模式中去掉作者属性得出关系模式“教材1”,并将作者属性及对应的教材主键放在新的关系模式“教材2”中。
教材1(教材编号,ISBN,教材名称,出版社,版本号)
教材2(教材编号,作者) 或者 教材2(ISBN,作者)
问答题 分析以上各关系模式,请回答以下问题。
(1)“教学计划”关系是否存在冗余?请简要说明。
(2)根据现有关系模式,能否获得学校每学期各种教材的需求总量?请简要说明。
(3)考虑到任选课只有部分学生选修,需要增加或修改哪些关系模式?请给出修改结果并简要说明。
【正确答案】(1)“教学计划”关系存在数据冗余。课程关系中已经记录了每个不同课程的课程名和教材编号,没有必要在教学计划中再次记录课程名和教材编号
(2)可以。根据教学计划中的学期,求出每学期各院系的不同专业即将开设的课程有哪些,从课程关系中找出课程需要购买的教材种类。同时根据院系和专业信息从班级关系中,求出课程所涉及的班级人数。将每种教材乘以对应班级的人数,就得到了不同种类教材的需要数量
(3)①修改课程关系,增加“选修必修”属性,用来说明该门课程是必修课还是任选课,即课程(课程编号,课程名,教材编号,选修必修)
②新增关系模式:选修情况(班级号,选修课称号,选修人数)或者选修情况(选修课程号,选修人数)
③统计教材需求信息时,需要对课程的“选修必修”属性值进行判断。如果是任选课,则从“选修情况”关系模式中获取选修人数,进而得出选修课教材的需求量;如果是必修课,则从班级关系模式中获得班级人数,进而得出必修课教材的需求量。最后加以分类统计
【答案解析】这是一道要求读者掌握数据库逻辑结构设计的综合应用题,本题的解答思路如下。
(1)教学计划主要是描述每个专业方向不同学期所开设的课程信息,它是教材需求的来源。在如图所示的关系模式中,“课程”关系模式已经记录了课程的课程名和教材编号等信息,在教学计划中只需记录每条教学计划与课程的对应关系即可。因此,图中“教学计划”关系模式存在数据冗余,即没有必要再在教学计划中记录课程名和教材编号。
(2)在“教学计划”关系模式中,存放着每学期不同专业班级所应开设的课程。根据教学计划确定每学期需开设的课程总数,进而确定所需的教材种类。再根据不同学期每门课程对应多少个班级,确定每种教材对应的班级总数,再分别乘以班级人数,得到不同学期每种教材的需求量。这一计算过程符合题干中的关键信息“教材需求量是根据现有的教学计划和班级人数计算得到的”,因此根据现有关系模式,可以求解得到学校每学期各种教材的需求总量。
(3)考虑到任选课只有部分学生选修,即所开设的课程分为必修课程和选修课程。必修是教学计划中对应班级的每个同学都必须学习的,选修课程是教学计划中对应班级的一部分同学任选的,因此为了满足这一需求,需要修改“课程”关系模式,增加“选修必修”属性,用来说明该门课程是必修课还是任选课。对“课程”关系模式具体修改如下。
课程(课程编号,课程名,教材编号,选修必修)
同时,为了了解某一选修课程的选修人数,以便统计教材需求量,还需要增加“选修情况”关系模式,即:
选修情况(班级号,选修课程号,选修人数) 或者 选修情况(选修课程号,选修人数)
在统计教材需求信息时,需要对课程的“选修必修”属性值进行判断。如果是任选课程,则根据教学计划对应的专业方向,找出对应的班级,再根据班级和选修课程号,从“选修情况”关系模式中获取具体的选修人数,进而得出选修课教材的需求量;如果是必修课程,则仍从专业方向对应的班级关系中获得班级人数,进而得出必修课教材的需求量,最后进行相关的分类统计。