数据库三范式理解

        在谈数据库范式之前,我们要明白一些关于数据库的基本概念,具体有一下几个:

        元组(Tuple):是关系数据库中的基本概念,关系是一张表,表中的每行即数据库中的一条记录,就是一个元组,每列就是一个属性。

        超键(Super Key):能够唯一决定一个元组的属性集合。可以是一个属性也可以是多个属性,都叫做超键。

        候选键(Candidate Key):不含有多余属性的超键,称为候选键。

        主键(Primary Key):标识元组的一个候选键。

     PS:1 无论是超键、候选键、主键,他们都是唯一确定一个元组

             2  超键包含候选键、候选键包含主键

         数据库范式出现的背景

         数据冗余:指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象;

         函数依赖:如果一个属性决定于另一个属性,那么可以说另一个属性依赖于这个属性,比如《机房收费系统》中学生表,学生号可以决定学生姓名,即知道了一个学生的学生号,就可以知道他的姓名。

         函数依赖又可以分为平凡依赖和非平凡依赖。

         按性质分可分为部分依赖和完全依赖。

         完全依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

         部分依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

         传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

         数据库范式是为了消除数据冗余、减少数据操作异常出现的。

         第一范式:原子性,字段不可再分;是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

         第二范式:在第一范式基础上,要求数据表的中的每个实例或行必须可以被唯一的区分。为实现区分通常需要为表加上一个列,一储存各个实例的唯一标示,即没有重复的记录。

         第三范式:第而范式基础上,消除间接依赖(某些字段不完全依赖主键的,可以将其移除)

          数据库的设计要尽量遵循范式设计,这样才能减少冗余数据,减少出错的异常。

posted @ 2012-03-04 16:32  李龙生的博客  阅读(153)  评论(0编辑  收藏  举报