数据库设计那些事课程学习

数据库设计那些事课程学习

学习目标
1、了解数据库设计的重要性
2、如何设计出简洁高效的数据库结构
3、如何对数据库结构进行优化调整
  • 数据库设计是什么?

    根据需要为业务系统构造出的最优的(有效存储,高效访问)数据存储模型,eg MySQL

  • 为什么要设计?

    让系统稳定,为以后的开发做铺垫

  • 设计步骤?

    需求分析(什么数据,数据属性)->逻辑设计(ER图逻辑建模)->物理设计->维护优化(对新需求建表,索引优化,大表拆分)

    • 需求分析:了解核心数据和不常用数据,要搞清实体和实体之间的关系,属性,可以唯一标识实体的属性(存储呀,增长量呀等等)

      举例:电子商务网站。用户模块(属性:用户名,密码…;唯一标识属性:用户名,电话;存储特点:随系统上线时间增加,需要永久存储),商品模块(属性:商品编码,价格;唯一标识属性:商品名称和供应商组合属性;存储特点:对于下线商品可以归档存储),订单模块,购物车模块…
      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFuVnvE6-1626754757388)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617202609747.png)]

    • 逻辑设计:需求转化为模型。

      操作异常:插入异常(实体B随着A存在而存在);更新异常(更新A的单独属性需要多行更新);删除异常(删除A导致B的信息丢失)

      数据冗余:相同数据多个地方存在,或某个列可以由其他列计算得到

      数据库范式:

      • 第一范式(1NF):单一属性,不可再分,表示二维表

      • 第二范式(2NF):不能存在部分函数的依赖关系,只有单关键字肯定符合(只有一个“可乐”)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7WERLlzO-1626754567938)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617203717713.png)]

      • 第三范式(3NF):不能有传递依赖(商品名称“可乐”决定了分类”酒水饮料“,也决定了分类描述”碳酸饮料“)

      • BC范式(BCNF)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0pPP3rEK-1626754567942)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617204349633.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IuyYmzuq-1626754567943)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617204452126.png)]

    • 物理设计:选择合适的数据管理系统,定义数据库,字段的命名规范,根据DBMS系统选择合适的字段类型,反范式化设计。

      • 常见DBMS系统:商业(适合企业级):Oracle,SQLServer;开源(适合互联网项目):MySQL,PgSQL

      • MySQL常用存储引擎【注:引擎相当于数据库强大的文件系统,除了基本的存取功能,还有事务,锁定,备份和恢复,优化等功能】

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X5taV3hq-1626754567944)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617210035593.png)]

      • 字段类型选择原则:优先选择数字类型(优先占用空间小的数据类型),其次日期或二进制类型,最后字符类型。因为数据查找字符处理比数字慢,数据处理以页为单位,列的长度越小,利于性能提升。

        小数:decimal(精确),float(开销小);日期:int(字长小),datetime(使用方便)

      • 避免外键,避免触发器,严禁预留字段【注:主键,数据的一列】

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSmLj7RL-1626754567945)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617212245170.png)]

      • 反范式化:为了性能,空间换时间,适当违背3NF,减小表的关联数量

      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gMMlELId-1626754567946)(C:\Users\86131\AppData\Roaming\Typora\typora-user-images\image-20210617212429801.png)]

    • 设计维护:数据字典,索引,表结构,适当水平/垂直拆分

      • 索引保持合适的数量,维护索引碎片,不要使用强制索引关键字

      • 数据库适合批量操作,禁止Select *这样的查询,控制使用用户自定义函数,不要使用数据库中的全文索引

      • 垂直拆分:列很多,拆分提高I/O效率,警察一起查询的列放在一起,text,blob等大字段拆分出到附加表

        水平拆分:通过hash key



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值