【题目描述】
阅读下列说明,回答问题1和问题2,将解答填入对应栏内。
【说明】
某学校为实现无纸化、网络化的教材管理,拟开发一套教材管理系统。该系统主要负责统计全校的教学用书的需求信息,以便教材的统一购买。
【需求分析结果】
(1)教学计划
各学院的教学计划是教材需求的来源。各学院的教学管理人员为本学院的各个专业方向制定教学计划。教学计划主要是描述每个专业方向不同学期所开设的课程信息。教学计划的示例如表4-1所示。
(2)课程信息 课程信息包括课程编号、课程名、教材编号,由课程编号唯一标识。表4-1中,《数据库技术》课程因其使用的教材不同而分别编号。 (3)专业方向、班级 学校根据学院和专业方向将学生划分班级。一个学院可有多个专业方向,不同学院可以有相同名字的专业方向。一个专业方向可有多个班级,班级包含入学年份和人数。 (4)教材信息 教材信息记录教材的基本信息,包括教材编号、教材名称、ISBN号、出版社名称、作者、版本号。同一种教材版本不同编号也不同,一种教材可以有多个作者。 (5)教材需求 根据各学院的教学计划和对应的班级人数,统计全校各系各专业各班级的教材需求情况。教材需求量是根据现有的教学计划和班级人数计算得到的。【逻辑结结构设计】 根据需求阶段收集的信息,设计的关系模式如图4-1所示。
关系模式的主要属性、含义及约束如表4-2所示。
表4-2 主要属性、含义及约束
根据图4-1关系模式,给出班级、教材的函数依赖(不完整)如卜。
(1)班级关系函数依赖FD1
班级号→ { 入学年份,人数,院系名称,专业名称}
(2)教材关系函数依赖FD2
教材编号→ { 教材名称,ISBN,出版社,版本号} (不完整)
根据图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,作者)
本题当中“教材”关系模式不应是是BCNF范式吧,因为ISBN多值决定作者,教材编号多值决定作者,存在多值依赖,应该是第一范式吧