zoukankan      html  css  js  c++  java
  • 数据库三范式是什么?

     

    第一范式(1NF):字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)

           数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。

      第二范式(2NF):

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。

    要求数据库表中的每个实例或行必须可以被惟一地区分。通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。

    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是非主属性非部分依赖于主关键字。

      

     第三范式的要求如下:

    满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

    所以第三范式具有如下特征:
             1,每一列只有一个值
             2,每一行都能区分。
             3,每一个表都不包含其他表已经包含的非主关键字信息。

    例如,帖子表中只能出现发帖人的id,而不能出现发帖人的id,还同时出现发帖人姓名,否则,只要出现同一发帖人id的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。

     

    a 表的合理化(符合3NF范式)

    b 添加适当的索引(普通索引,主键索引,唯一索引,全文索引)

    c 分表技术(水平分割,垂直分割)

    d 读写分离

    e 存储过程

    f 对mysql 配置优化(配置最大并发数,my.ini调整缓存大小)

    g mysql服务器硬件升级

    h  定时清除不需要的数据

  • 相关阅读:
    python做一个数独小游戏
    通过进程快照枚举进程的信息
    单向链表 malloc与free
    指针常量&指向常量的指针
    变量在不同区域的默认初始值
    数组指针和指针数组
    堆的首地址和堆的指针
    创建对象时,系统会自动调用构造函数和析构函数
    对象所占内存的大小与首地址
    范磊 C++ 第8章 指针
  • 原文地址:https://www.cnblogs.com/zengda/p/4376981.html
Copyright © 2011-2022 走看看