读书频道 > 网站 > 网页设计 > SQL Server数据库管理与开发实用教程
1.1.4 关系数据库的规范化
15-11-05    下载编辑
收藏    我要投稿   
本书通过实例循序渐进地讲解了SQL Server 2014的理论知识和基本操作。主要内容包括:数据库的基本原理、SQL Server 2014概述、数据库和表的创建与管理、表中数据的查询、Transact_SQL、索引、视图、游标、事立即去当当网订购

设计数据库时,确保表中数据的一致性和相关性很重要。规范化是一个减少关系数据库中数据冗余的过程。冗余将导致以下问题:在插入、更新和删除数据时可能会导致数据的不一致;数据的重复存储更有可能造成数据不一致错误、浪费磁盘空间等。可以凭借经验和一些常规的理念来设计数据库(如前面所述),也可以使用系统方法(如规范化)来减少数据的冗余。因此,在设计数据库时,可以对数据库中的表进行规范化处理,以确保数据库更加规范。

规范化是通过使用某些规则,将复杂的表结构拆分成简单的表结构。规范化使得表的构成能够满足某些指定的规则并且代表某些范式。范式用于确保在数据库中不会引起各种异常和不一致。表结构始终是属于某种范式的。目前关系数据库主要有4种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式。第一、第二、第三范式最初是由E.F.Codd定义的。后来,Boyce和Codd引入了另一种范式——Boyce-Codd范式(BCNF)。一般情况下,数据库只需满足第三范式就可以了。

1.相关概念

规范化理论是基于函数依赖的基础理论的。首先了解函数依赖的概念。

给定一个关系R(表也可称为关系),如果R中的属性B的每个值完全与属性A的值相关联,则称属性B函数依赖于属性A。换句话说,如果对于属性A的每个值来说,只有一个B值与其相关联,则属性A函数决定属性B。

在表1-1的学生信息表中,学号能唯一标识学生信息表中的每一行,所以学号是主键。对于不同的学号,都有一个姓名和它对应,即姓名完全函数依赖于学号。


 

在表1-2的学生成绩表中,学号和课程号的组合为主键,这个主键能唯一标识学生的成绩,即成绩既依赖于学号,又依赖于课程号,则称成绩完全函数依赖于主键(学号、课程号)。对于每个学号,都有一个姓名与之对应,所以姓名只依赖于学号,而与课程号无关。因为学号只是主键的一部分,所以姓名部分函数依赖于主键(学号、课程号)。

在表1-1的学生信息表中,因为学生所在系依赖于主键(学号),而系主任又依赖于所在系,所以系主任传递函数依赖于主键(学号)。

2.范式

下面分别举例介绍第一范式、第二范式和第三范式。

(1)第一范式

当表的每个属性值都是不可再分的最小数据单元时,这个表就满足第一范式。第一范式是对关系模型的基本要求,不满足第一范式的数据库就不是关系数据库。表1-3的学生成绩表不是第一范式,因为课程号和成绩单元格可以再分割。当它转化为表1-2时满足第一范式。



  
(2)第二范式

当一个表是第一范式,并且非主属性完全依赖于主键(不存在部分依赖)时,这个表就满足第二范式。表1-2中的学生成绩表是第一范式,但其存在部分依赖,姓名只依赖于主键(学号、课程号)中的一部分(学号),而不是整个主键,所以不是第二范式。将表转换为第二范式的方法是:将部分依赖的属性和被部分依赖的主属性从原表中分离,形成一个新表。在学生成绩表中,将具有部分依赖的属性姓名、性别和学号组成一个新表(学生表),这样成绩表(学号,课程号,成绩)和学生表(学号,姓名,性别)都满足第二范式。

(3)第三范式

当一个表是第二范式,并且每个非主属性仅函数依赖于主键(不存在传递依赖)时,这个表就满足第三范式。表1-1的学生信息表是第二范式,但存在传递依赖,因为系主任不但依赖于学号,还依赖于所在系(即所在系依赖于学号,而系主任又依赖于所在系,所以系主任传递依赖于学号,而不是直接依赖主键),所以不是第三范式。将表转换为第三范式的方法是:将具有传递依赖的属性从原表中分离,形成一个新表。在学生信息表中,将学生所在系和系主任组成一个新表,这样学生表(学号、姓名、性别、所在系)和系表(系名称、系主任)都满足第三范式。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站