zoukankan      html  css  js  c++  java
  • 数据库设计三大范式

    第一范式(1NF)

    所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,
    即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义
    一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)
    中表的每一行只包含一个实例的信息。 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)
    的数据库就不是关系数据库。

    理解注释:列不可分。

    如果需求知道那个省那个市并按其分类,那么显然第一个表格是不容易满足需求的,也不符合第一范式。

    第二范式(2NF)

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。
    第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一的区分。为实现区分通常需要为表加上一个列,
    以存储各个实例的惟一标识。要求实体的属性完全依赖于主关键字。

    每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。


    理解注释:不能部分依赖。即:一张表存在组合主键时,其他非主键字段不能部分依赖。

    一个人同时订几个房间,就会出来一个订单号多条数据,这样子联系人都是重复的,就会造成数据冗余。我们应该把他拆开来。

     

     第三范式(3NF)

    满足第三范式(3NF)必须先满足第二范式(2NF)。
    简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。
    在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。

    数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。

    理解注释:不能存在传递依赖。即:除主键外,其他字段必须依赖主键。

  • 相关阅读:
    【BZOJ】【1412】【ZJOI2009】狼和羊的故事
    【POJ】【2987】Firing
    【BZOJ】【1324】王者之剑
    【POJ】【2125】Destroying the Graph
    bzoj4870: [Shoi2017]组合数问题(DP+矩阵乘法优化)
    bzoj3810: [Coci2015]Stanovi(记忆化搜索)
    bzoj2120: 数颜色(BIT套主席树+set/分块)
    bzoj2144: 跳跳棋(二分/倍增)
    bzoj4552: [Tjoi2016&Heoi2016]排序(二分+线段树)
    bzoj4773: 负环(倍增floyd)
  • 原文地址:https://www.cnblogs.com/sc-1067178406/p/11191773.html
Copyright © 2011-2022 走看看