zoukankan      html  css  js  c++  java
  • SQL基础:数据库规范化与三范式

    数据库规范化与范式

      冗余导致多种更新异常,也就是插入、更新和删除行的操作困难。

      规范化(normalization)是通过修改表以减少冗余和矛盾的一系列步骤。

      在每一步之后,数据库都达到一个特定的范式(normal form)

      关系模型定义了三种范式,以著名的序数命名。

      第一范式(1NF)

      第二范式(2NF)

      第三范式(3NF)

      每一种范式都比前一种更健壮。符合3NF的数据库也符合2NF和1NF。规范化水平越高,表的数量也越多。

      无损分解(lossless decomposition能确保表的分割不会引起信息丢失。

      依赖-保持分解(dependency-preserving decomposition能确保联系不丢失。

      当表被分割的时候,存在匹配的主键和外键列不应被认为是多余的数据。

      规范化不是系统化,它是一个涉及重复表的分割、重新联结和精炼的迭代过程。

    第一范式(1NF)

      满足第一范式的表:

      列仅包含原子值。

      没有重复的组。

      原子值(也称为标量值)是不能再细分的单一值。

      重复的组是两个或多个逻辑相关联的列的集合。

     

    第二范式(2NF)

      当满足下列条件时,第一范式的表自动满足第二范式:

      主键是一个列(也就是说,关键字不是组合的)。

      表中所有的列是主键的一部分(单一的或组合的)。

      满足第二范式的表:

      满足第一范式。

      非部分函数依赖。

      如果表中的一些组合键(但不是全部)值确定了一个非键列的值,则表包含部分函数依赖

      第二范式表是完全函数依赖,意味着如果组合键中任何一列值改变,将导致非键列的值需要被更新。

    第三范式(3NF)

      满足第三范式的表:

      满足第二范式。

      没有传递依赖。

      如果一个非键列的值确定了另一个另一个非键列的值,则表包含传递依赖

      在第三范式的表中,非键列相互独立并且只依赖于主键列。

  • 相关阅读:
    Linux分区
    Vim 基本配置
    Ubuntu几种常见乱码解决方法
    ADB
    ubuntu下安装配置ADB
    Tinyos学习笔记(三)
    Tinyos学习笔记(二)
    Codeforces Round #249 (Div. 2) A题
    poj 2007 Scrambled Polygon(极角排序)
    MemSQL Start[c]UP 2.0
  • 原文地址:https://www.cnblogs.com/mengdd/p/3037149.html
Copyright © 2011-2022 走看看