第四章关系数据库设计理论
关系数据库模式
整个数据库
某关系的结构
某关系的实例
关系模式的设计问题
关系模式设计不规范会带来一系列的问题
数据冗余
更新异常
插入异常
删除异常
示例关系模式 R(Tname, Addr, C#, Cname)
一个教师只有一个地址(户口所在地)
一个教师可教多门课程
一门课程只有一个任课教师
因此R的主码是(C#)
R的一个实例
Tname
Addr
C#
Cname
T1
A1
C1
N1
T1
A1
C2
N2
T1
A1
C3
N3
T2
A2
C4
N4
T2
A2
C5
N5
T3
A3
C6
N6
1、问题(1):数据冗余
教师T1教了三门课程,他的地址被重复存储了2次
Tname
Addr
C#
Cname
T1
A1
C1
N1
T1
A1
C2
N2
T1
A1
C3
N3
T2
A2
C4
N4
T2
A2
C5
N5
T3
A3
C6
N6
2、问题(2):更新异常
如果T1的地址变了,则需要改变3个元组的地址;若有一个未更改,就会出现数据不一致。但DBMS无法获知这种不一致
Tname
Addr
C#
Cname
T1
A1
C1
N1
T1
A1
C2
N2
T1
A1
C3
N3
T2
A2
C4
N4
T2
A2
C5
N5
T3
A3
C6
N6
3、问题(3):插入异常
如果要增加一名教师,但他还未带课,则C#和Cname为空,但由于C#是主码,为空违反了实体完整性,所以这名教师将无法插入到数据库中
Tname
Addr
C#
Cname
T1
A1
C1
N1
T1
A1
C2
N2
T1
A1
C3
N3
T2
A2
C4
N4
T2
A2
C5
N5
T3
A3
C6
N6
4、问题(4):删除异常
如果教师T3现在不带课了,则需将T3的元组删去,但同时也把他的姓名和地址信息删掉了
Tname
Addr
C#
Cname
T1
A1
C1
N1
T1
A1
C2
N2
T1
A1
C3
N3
T2
A2
C4
N4
T2
A2
C5
N5
T3
A3
C6
N6
问题:麻烦! 麻烦!! 好麻烦!!!
唉,剪不断,理还乱
5、如何解决?
方法:模式分解
方法1:R分解为
R1(Tname, Addr)
R2(C#,Cname)
方法2
R1(Tname, Addr, C# )
R2( C#, Cname)
方法3
R1( Tname, Addr)
R2( Tname ,C#, Cname)
到底什么样的模式才最佳?怎么分解才能达到要求?标准是什么?如何实现?——本章内容
授课信息丢失了
R1中问题依然存在
基本解决问题,但又带来联接查询代价
解决之道:分解! 分解!! 再分解!!!
哇,原来生活可以如此简单
《数据库系统原理》PPT电子课件教案-第四章 关系数据库设计理论 来自淘豆网m.daumloan.com转载请标明出处.