MySQL-三范式

117 阅读2分钟

范式概念:

  • 第一范式:
    • 所有数据列为原子性的,列内数据不可分别维护.如:姓名+性别维护到一个字段内,如果要修改名字或性别那么该字段内整体就不是原子性,无法维护。
  • 第二范式:
    • 首先是需要满足第一范式,其次要满足知道属性主键值就能与之关联其他全部字段,而非某些字段如果只是部分依赖主键:那么就会出现数据冗余,增删改都会受到影响
  • 第三范式:
    • 第三范式是在第二范式的基础上,确保数据表中的每一个非主键字段都和主键字段直接相关,也就是说,要求数据表中的所有非主键字段不能依赖于其他非主键字段。
  • 总结:
    • 数据表设计 要遵循三个范式
      • 第一范式(1NF),确保每列保持原子性数据库的每一列都是不可分割的原子数据项,不可再分的最小数据单元,而不能是集合、数组、记录等非原子数据项。
      • 第二范式(2NF),确保每列都和主键完全依赖尤其在复合主键的情况向下,非主键部分不应该依赖于部分主键。
      • 第三范式(3NF),确保每列都和主键直接相关,而不是间接相关
    • 范式优点与缺点:
      • 优点:范式化,重复冗余数据少,更新快,修改少,查询时更少的distinct
      • 缺点:因为一个表不存在冗余重复数据,查询可能造成很多关联,效率变低,可能使一些索引策略无效,范式化将列存在不同表中,这些列若在同一个表中可以是一个索引。