数据表设计及优化

方法/步骤1:

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

方法/步骤2:

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

方法/步骤3:

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

简述:参考

第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。
第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.

优化:参考

  • 设计数据表时应当遵守三范式,但是不必完全遵守,可以适度打破
  • 每张表的字段不应该过多
  • 尽可能的为每个字段定义为 NOT NULL
  • 根据数据表的特性选择合适的表引擎,表常写的话应选择innodb,mysql5.6默认是innodb
  • 根据表存放的数据选择字符集,一般是uft8,但是存储emoji表情应该选择utf8mb4
  • 表字段选择相应的字段类型,但是要考虑到扩展性
  • 尽量少使用text类型
  • 查询数据时要少使用*号查询,只查所需的相应字段。ps:减少数据传输的大小
  • 查询数据的时候根据所需最好加上LIMIT,限制查询条数。ps:减少数据传输的大小
  • 有索引尽量使用有索引的字段查询
  • 尽量少使用mysql内置函数,减少在mysql中的运算
  • 尽量在查询时将条件中区分度大的放在前面
  • 为常用的where、order by 、 having 、 join 、distinct中的字段加上索引
  • 在联表查询时为关联字段加上索引
  • or 两边字段都应该要有索引
  • 少使用like,like会使索引失效。 ps:如果常用like查询的话可以将全文搜索引擎替换为sphinx/xunsearch
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值