美文网首页
第一、二、三范式

第一、二、三范式

作者: 王王王王王景 | 来源:发表于2019-07-15 16:21 被阅读0次

    1、第一范式

    所谓第一范式,就是数据表的列不可再分。
    看下面数据表,对于选课列明显是可以再分的,所以它是违反第一范式的。

    2、第二范式

    第二范式是指,首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。
    看下面的学生选课表:

    学生选课表
    表中主键为 (学号,课程),我们可以表示为 (学号,课程) -> (成绩,课程学分), 表示所有非主键列 (成绩,课程学分)都依赖于主键 (学号,课程)。 但是,表中还存在另外一个依赖:(课程)->(课程学分)。这样非主键列 ‘课程学分‘ 依赖于部分主键列 ’课程‘, 所以上表是不满足第二范式的。
    我们把它拆成如下2张表:
    学生选课表
    课程信息表
    那么上面2个表,学生选课表主键为(学号,课程),课程信息表主键为(课程),表中所有非主键列都完全依赖主键。不仅符合第二范式,还符合第三范式。
    再看这样一个学生信息表:
    学生信息表
    上表中,主键为:(学号),所有字段 (姓名,性别,班级,班主任)都依赖与主键(学号),不存在对主键的部分依赖。所以是满足第二范式。

    3、第三范式

    第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。

    对于上面的学生信息表,虽然满足第二范式,所有字段都依赖主键(学号),但是,表中存在一个传力依赖,(学号)->(班级)->(班主任)。也就是说,(班主任)这个非主键列依赖与另外一个非主键列 (班级)。所以不符号第三范式。把这个表拆分成如下2个表;


    学生信息表
    班级信息表

    这样,对主键的传递依赖就消失了。上面的2个表都符合第3范式。

    相关文章

      网友评论

          本文标题:第一、二、三范式

          本文链接:https://www.haomeiwen.com/subject/wsgnkctx.html