第1页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共23页规范化:满足第一范式是表的最低要求,不满足第一范式要求的数据库(表)就不能称之为关系数据库。在此基础上满足更高要求的称为第二范式,简记为2NF,其余依此类推,还有第三范式(3NF)、BC范式(BCNF)、第四范式(4NF)、第五范式(5NF)。BCNF可以看作是修正了的第三范式。把表从低范式,通过投影运算转换成若干高一级范式的过程,叫做表的规范化。一般地说,表满足的范式级别越高,设计的表越是规范,表的质量越高,数据的冗余度越小,共享性越高,所占的存储空间越少,并将数据的不一致性减少到最低程度,这也是对表进行规范化的目第2页共23页第1页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共23页的。但是,高范式的数据库查询起来比较复杂。所以,不应一味追求高范式,一般满足第三范式或BC范式就可以了二、表的规范化1、第一范式(1NF)如前所述,第一范式要求表的每一个字段都是不可再分的最小单位。例1:学生(学号,姓名,学院,地址,选修课程成绩(课程号,课程名,成绩))表数据如下:学号姓名学院地址选修课程成绩(课程号,课程名,成绩)9901张丽管理管201C001,高等数学,9099张管管C002,英语,80第3页共23页第2页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共23页01丽理2019901张丽管理管201C003,计算机,669902李锋电子电101C004,法律,78表一不满足第一范式的表显然,这样的表是不满足第一范式的。因为[选修课程成绩]字段还可分为3个字段即(课程号,课程名,成绩)。第4页共23页第3页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第4页共23页如果不把它进行规范化,即转换成满足第一范式的表,将会产生很多问题,如:删除异常,即本来只想删除成绩的,不得不把课程号和课程名也删除了!转换的方法就是把可以拆分的字段进行拆分,即把[选修课程成绩]分解成3个字段:[课程号],[课程名],[成绩]。变成下面满足第一范式的表:学号姓名学院地址课程号课程名成绩99张丽管理管2C001高等数学90第5页共23页第4页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第5页共23页01019901张丽管理管201C002英语809901张丽管理管201C003计算机6699李电电1C0法律78第6页共23页第5页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第6页共23页02锋子0104表二满足第一范式的表2、第二范式(2NF)一个关系应满足1NF是最起码的条件。但是,仅满足1NF的关系还可能存在一些问题。例2:表二中存在以下的问题:问题1:数据冗余度大。张丽选几门课程,都必须输入所有几个她的相关信息,同时,如果有几千个人选修高等数学课,就得输入几千个“高等数学”。如果要修改“高等数学”这个课程名称,对于几千个课程名中,只要漏改一个,将造成数据的不一致性。第7页共23页第6页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第7页共23页问题2:删除异常。我们知道,这个表中的关键字为学号和课程号,它们不能为空值,而当李锋退学时,不可能只删除李锋的学号和姓名,只能删除了李锋的整条记录,这时相应的课程号为C004的法律也被删除,如果这个表中只有李锋一人选法律课,该记录删除后,下次将无法查询法律课的课程号。问题3:插入记录异常。与删除异常相似,如果李锋刚入学,还没有选修任何一门课程,无法知道他选修的课程号,而课程号为关键字,不能为空,因此,李锋这个记录也不能输入。造成出现这些问题的原因是因为这个表不满足第二范式。第8页共23页第7页共23页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第8页共23页如何判断一个表是否满足第二范式呢,判断方法是:(1)、找出表的关键字。(2)、如果只有一个关键字,若每一个非关键字都依赖于这个关键字,则表满足第二范式,否则不是。什么是依赖(关系)呢?例:某表中有两个字段:学号、姓名,对于每一个学号,只有一个姓名与之对应,则称姓名依赖...