花千骨穿越现代:数据库三范式

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 19:49:20

    其实数据库就是以某种文件结构存储的一系列信息表,这种文件结构使得能够访问这些表、选择表中的列、对表进行排序以及根据各种标准来选择行。数据库通常有多个索引与这些表中的许多列相关联,所以我们能够更快的访问这些表。跟通信一样,构造数据库也必须遵循一定的规则(通信要遵循一定的通信协议才能实现)。在关系数据库中,这种规则就是范式。范式是符合某一级别的关系模式的集合。关系数据库中必须满足不同的范式,目前关系数据库有六种范式:第一范式(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),才能去实现其他各种范式。