分享

数据库三范式

 openwudi 2011-02-02

     其实数据库就是以某种文件结构存储的一系列信息表,这种文件结构使得能够访问这些表、选择表中的列、对表进行排序以及根据各种标准来选择行。数据库通常有 多个索引与这些表中的许多列相关联,所以我们能够更快的访问这些表。跟通信一样,构造数据库也必须遵循一定的规则(通信要遵循一定的通信协议才能实现)。 在关系数据库中,这种规则就是范式。范式是符合某一级别的关系模式的集合。关系数据库中必须满足不同的范式,目前关系数据库有六种范式:第一范式 (1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)、第六范式(6NF)。而第一范式(1NF)是关系数据库 必须满足,是关系数据库的最低要求。在第一范式的基础上进一步满足更多要求的范式称为第二范式(2NF),其余的范式依次类推。一般情况下,数据库只需要 满足第三范式(3NF)就可以了。

下面就简单的讲一下第一范式(1NF)、第二范式(2NF)、第三范式(3NF):

 

一、第一范式(1NF)

     所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体(跟java类中的对象相似)中的属性不能有多个值 或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体。在第一范式(1NF)中表的每一行只包含一个实例的信息。第一范式(1NF)也 可以说是关系数据库的原子性(每个属性值都是不可再分的最小数据单元)。简单的说,第一范式(1NF)就是无重复的列。

     在任何一个关系数据库中,第一范式(1NF)是对关系模型的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

 

二、第二范式(2NF)

     第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须要先满足第一范式(1NF)。第二范式(2NF)要求数据库 表中的每一个实例或者行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,一存储各个实例的唯一标识(也就是我们说的主键)。

     第二范式(2NF)要求实体的属性完全依赖于主关键字(主键)。所谓完全依赖是指不能存在仅依赖主关键字一部分属性,如果存在,那么这个属性和主关键字的 这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。简而言之,第二范式(2NF)就是非主属性非部分依赖于主关键字。

 

三、第三范式(3NF)

      同样的道理满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含在其他表中已包含的非主关键字信息。第三范式(3NF)也叫消除间接依赖(某些不完全依赖主关键字的信息,可以将其移除)。

 

    总之,关系数据库设计的时候要遵循数据库设计范式。第一范式(1NF)是最根本的要求,只有在满足第一范式(1NF),才能去实现其他各种范式。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多