DATABASE SYSTEM CONCEPTS
第8章关系数据库设计
提纲
给出一个关系模式,是不是好?
给出一个表,怎么找出其中的函数依赖?
给出一个关系模式,如何判断属于nNF ?
1NF、2NF、3NF、BCNF的异同点?
分解后,无损与保持依赖如何判断?
分解算法
多值依赖确定方法是什么?
4NF分解算法
范式之间如何证明包含关系?
好的关系设计的特点
四种异常现象
引例:设计一个学生管理信息系统,模式设计两种方案:
方案一
学生=(学号,姓名,性别,年龄,系别,系主任名,系办公电话,课程号,课程名,先行课号,成绩)
码是学号,课程号
好的关系设计的特点
方案二
学生=(学号,姓名,性别,年龄,系别),码:学号
系=(系别,系主任名,系办公电话),码:系别
课程=(课程号,课程名,先行课号,学分) 码:课程号
选课=(学号,课程号,成绩),码:学号,课程号
好的关系设计的特点
1. 冗余度
方案一:假若每个学生选40门课程,其姓名、性别、年龄、系别、系主任、系办公电话、课名,先行课号要在库中出现40次,数据冗余度大。
方案二:
以上的数据只在库中出现一次,冗余度小。
好的关系设计的特点
2. 插入异常
若向库中插入一门新课程,而该课程还没有学生选。
方案一:
由于模式的码是学号,课程号,实体完整性要求主属性不能为空,现在学号为空,无法插入库内。
好的关系设计的特点
方案二:
直接插入课程关系中。
同理,方案一,建立一个新系,还没有学生,也会插入异常。方案二,直接插入系表中。
3. 删除异常
如果选修某门课程的学生都毕业,其对应记录将从库中删掉。
好的关系设计的特点
方案一:
对应的课程信息也全部删掉。称为删除异常。
方案二:
只删选课表中的记录,课程表中的信息不受影响。
同理,方案一,一个系的学生全部删除,也会删除异常。方案二,直接删除学生表中的记录,系表不受影响。
好的关系设计的特点
4. 更新异常
若数据库课程名改为数据库原理。
方案一:
所有选修该课程的的记录都要改,漏改一个,就会出现更新异常。
方案二:
只需在课程关系中修改一次。
同理,系主任名等属性值修改也如此
好的关系设计的特点
引例
考虑为管理职工的工资信息而设计一个关系模式
数据库6版讲稿第八章---关系数据库设计 来自淘豆网www.taodocs.com转载请标明出处.