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