数据库应用系统设计概述.ppt
2.4规范化设计**SNOSNAGEDEPTMNCNOSCORES1赵亦17计算机刘伟C190S1赵亦17计算机刘伟C285S2钱尔18信息王平C557S2钱尔18信息王平C680S2钱尔18信息王平C7?70S2钱尔18信息王平C470S3孙珊20信息王平C10S3孙珊20信息王平C270S3孙珊20信息王平C485S4李思21自动化刘伟C1932.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?分析以上关系中的数据,可以看出:(SNO,CNO)属性的组合能唯一标识一个元组,所以(SNO,CNO)是该关系模式的主键。但在进行数据库的操作时,会出现以下几方面的问题。2.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?01可能出现的问题:02数据冗余。每个系名和系主任的名字存储的次数等于该系的学生人数乘以每个学生选修的课程门数,同时学生的姓名、年龄也都要重复存储多次,数据的冗余度很大,浪费了存储空间。032.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?可能出现的问题:2.插入异常。如果某个新系没有招生,尚无学生时,则系名和系主任的信息无法插入到数据库中。因为在这个关系模式中,(SNO,CNO)是主关系键。根据关系的实体完整性约束,主关系键的值不能为空,而这时没有学生,SNO和CNO均无值,因此不能进行插入操作。另外,当某个学生尚未选课,即CNO未知,实体完整性约束还规定,主关系键的值不能部分为空,同样不能进行插入操作。2.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?可能出现的问题:删除异常。12345另外,如果某个学生不再选修C1课程,本应该只删去C1,但C1是主关系键的一部分,为保证实体完整性,必须将整个元组一起删掉,这样,有关该学生的其它信息也随之丢失。某系学生全部毕业而没有招生时,删除全部学生的记录则系名、系主任也随之删除,而这个系依然存在,在数据库中却无法找到该系的信息。2.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?1可能出现的问题:2更新异常。3如果学生改名,则该学生的所有记录都要逐一修改SN;4又如某系更换系主任,则属于该系的学生记录都要修改MN的内容,稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性,破坏了数据的完整性。5。62.4规范化设计**数据库的逻辑设计为什么要遵循一定的规范化理论?由于存在以上问题,SCD是一个不好的关系模式。产生上述问题的原因,直观地说,是因为关系中“包罗万象”,内容太杂了。那么,怎样才能得到一个好的关系模式呢?把关系模式SCD分解为下面三个结构简单的关系模式,如图所示。学生S(SNO,SN,AGE,DEPT)选课SC(SNO,CNO,SCORE)系D(DEPT,MN)2.4规范化设计**SNOSNAGEDEPT?SNOCNOSCORES1赵亦17计算机?S1C190S2钱尔18信息?S1C285S3孙珊20信息?S2C557S4李思21自动化?S2C680?????S2C7?78D????S2C570DEPTMN???S3C10计算机刘伟???S3C270信息王平???S3C485自动化刘伟???S4C193分解后的关系模式一个好的关系模式应该具备以下四个条件:2.4规范化设计**输入标题尽可能少的数据冗余。输入标题输入标题输入标题没有更新异常。2没有插入异常。没有删除异常。1432.4规范化设计**如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是关系的规