年终大学习之MySQL数据库优化学习笔记(二)

    学习有时候真的是很痛苦的事情,尤其是在假期学习的时候,但是还是得咬牙坚持,既然选择了拼搏,就要有别人都在玩而你还坐在电脑面前学习的苦逼感觉,不管你的努力会不会有你想要的结果,其中的过程也是一笔很珍贵的财富。

    好了,说主题,今天学习的是表的设计。

    首先,表的设计需要满足三范式(NF)。

       范式,就是表设计时需要遵守的规范,现在要求的范式已经达到了六范式,但是在普通的开发时,即在网站的开发和一般的软件开发只用遵守到第三范式就满足数据库的需要了,太过于死记范式的规范会过于僵硬的。

       表的范式,首先得满足一范式,才能满足二范式,进一步满足三范式,以此类推。


       一范式:即表的列具有原子性,不可再分解,即列的信息,不能分解,只要数据库是关系型数据库(MySQL/oracle/SqlServer)就满足第一范式;

       这就引出来了一个概念,数据库的分类,好吧,在之前我都以为数据库就是数据库,原来数据库也是要分类的额。。。

       数据库的分类:

           关系型数据库:MySQL/oracle/SqlServer;

           非关系型数据库:特点:面向对象或者集合;

           Nosql数据库:MongoDB (特点是面向文档) 这个数据库速度是很快的,有必要了解一下哦;

    

     二范式:表中的记录是唯一的,就满足第二范式,通常我们设计一个主键来实现的。

     我们设计表的时候,就一定要设置主键,对主键的要求就是,与表的业务逻辑无关,而且满足自增长,这样进行读写操作的时候也会方便的很多。


    三范式:即表中的数据不要有冗余,就是说,表的信息,如果能推导出来,就不应该单独的设计一个字段来存放。

    二范式,以我的理解就是避免了一列数据的冗余,而三范式,就是避免了莫一字段或多个列的某些字段过于重复而设计的,这就在设计的时候需要我们来构造外键,来进行表于表的连接,可以避免数据的重复冗余。


   有时候,满足三范式反而会拖慢网站的速度,为什么呢?因为在网页加载的时候,我们如果用第三范式的话,就可能去查询多个表,这样不可避免的会增加网站的加载时间长度,这样反倒不能达到我们的目标。

   这时候,我们就得使用反三范式:没有冗余的数据库未必就是最好的数据库,又是为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时的考虑。降低范式就是增加字段,允许冗余。















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值