美文网首页
1NF 2NF 3NF BCNF

1NF 2NF 3NF BCNF

作者: SpringWolfM | 来源:发表于2018-04-21 22:57 被阅读0次
总结
  • 1NF:

    atomic 要符合原子性
  • 2NF:(数据库通过2NF消除主键的部分依赖)
    E is non-prime attribute. BC is a proper subset of a key.=>violation on 2NF.
    E is non-prime attribute. BC is a proper subset of a key.=>R 是 2NF.
    Proper subset=真子集
    中文版:首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 
    For a table to be in the Second Normal Form, it must satisfy two conditions:
    The table should be in the First Normal Form.
    There should be no Partial Dependency.
    如果违反了这个Partial Dependency的要求,需要拆开(行话:normalization)才能保证2NF
  • 3NF: (没有non-prime attritube determines non-prime attribute)


    image.png
    image.png

    For a table to be in the third normal form,

  1. It should be in the Second Normal form.
  2. And it should not have Transitive Dependency.
    Advantage of removing Transitive Dependency
    The advantage of removing transitive dependency is,
    Amount of data duplication is reduced.
    Data integrity achieved.
    第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。

首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。 考虑一个订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。

其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。
通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。

第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

source:
https://www.studytonight.com/dbms/second-normal-form.php
https://www.studytonight.com/dbms/database-normalization.php
https://blog.csdn.net/dream_angel_z/article/details/45175621

  • BCNF的定义是:
    如果对于关系模式R中存在的任意一个非平凡函数依赖X->A,都满足X是R的一个超键,那么关系模式R就属于BCNF。
    对上述定义,可以理解为:平凡函数依赖关系是指,如果属性集合X包含了属性集合A,那么就一定有X->A;超键是指能够唯一确定表中各行的属性集合,因此一个超键的最小化就是一个候选键;BCNF是说,如果一个属性集合X能“不平凡”地推导出另一个属性集合A,而且X还不能唯一区分表的各行,那么这个表中一定包含了一些冗余信息。

BCNF与第三范式的不同之处在于:第三范式中不允许非主属性被另一个非主属性决定,但第三范式允许主属性被非主属性决定;而在BCNF中,任何属性(包括非主属性和主属性)都不能被非主属性所决定。


image.png

相关文章

  • SQL范式设计

    六种范式 从低到高分别是: 1NF(第一范式), 2NF(第二范式), 3NF(第三范式), BCNF(巴斯-科德...

  • 数据库范式

    关系数据库六种范式: 第一范式(1NF)、 第二范式(2NF)、 第三范式(3NF)、 巴斯-科德范式(BCNF)...

  • 数据库范式原则,第一,第二

    目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、...

  • 数据库:范式总结

    数据库中的范式指的是满足某种设计规范,常见有1NF,2NF,3NF,BCNF,4NF。下面是自己的一些简单理解,同...

  • 白话数据库范式

    前言 静下心来写一篇介绍1NF、2NF、3NF与BCNF范式的文章。 整体关系 他们的约束如上图,也就是说: 满足...

  • 1NF 2NF 3NF BCNF

    1NF:atomic 要符合原子性 2NF:(数据库通过2NF消除主键的部分依赖)E is non-prime a...

  • 数据库 三范式最简单最易记的解释

    1NF:字段不可分; 2NF:有主键,非主键字段依赖主键; 3NF:非主键字段不能相互依赖; 解释: 1NF:原子...

  • MySQL学习笔记-数据库三范式

    1NF:字段不可分;2NF:有主键,非主键字段依赖主键;3NF:非主键字段不能相互依赖; 解释:1NF:原子性 字...

  • 数据库范式(1NF 2NF 3NF BCNF)详解

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(ins...

  • 数据库三大范式

    第一范式(1NF):原子性 第二范式(2NF):完全关联主键 第三范式(3NF):直接关联主键 反第三范式:冗余字...

网友评论

      本文标题:1NF 2NF 3NF BCNF

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