慕课网-数据库设计那些事

慕课网视频课程地址https://www.imooc.com/learn/117数据库

第一章-需求分析

数据库设计的概念

数据库的设计,就是根据业务系统的具体需求,结合咱们所选用的DBMS,为这个业务系统构造出最有的数据存储模型。并创建好数据库中的表结构及表与表之间的关联关系的过程。使之能有效的对应系统中的数据进行存储,并能够高效的对已经存储的数据进行访问。编程

数据库设计的步骤

需求分析----->逻辑设计----->物理设计----->维护优化并发

数据库需求分析的做用点:数据库设计

  1. 数据是什么
  2. 数据有哪些属性
  3. 数据和属性各自的特色有哪些

使用ER图对数据库进行逻辑建模编程语言

数据管理系统的选择,根据数据库自身的特色把逻辑设计转换为物理设计函数

后期维护高并发

  1. 新的需求进行建表,建新表以前也要作好前三步,防止后期出现的问题
  2. 索引优化
  3. 大表拆分

需求分析

为何要进行需求分析?工具

为了设计最优化的数据库,便于后期的扩展和维护,数据愈来愈多,愈来愈大会浪费空间,愈来愈杂乱,是很难处理和维护的优化

  1. 了解系统中索要存储的数据
  2. 了解数据的存储特色,好比有的数据有时效性,有的没有,有时效性的能够采起按期清理
  3. 了解数据的生命周期,

要搞清楚的一些问题spa

  1. 实体及实体之间的关系(1对1,1对多,多对多)
  2. 实体所包含的属性有什么?属性有不少,哪些属性是能够标识出这个实体的
  3. 那些属性或属性的组合能够惟一标识一个实体
  4. 存储上有什么特性,增加量是什么样?

实例分析

 

第二章-逻辑设计

 

逻辑设计要作什么?ER图就是数据库模型关系的展现图

  1. 将需求转化为数据库的逻辑模型
  2. 经过ER图的形式对逻辑模型进行展现
  3. 同所选用的具体的DBMS无关

名词解释

 

注:有的属性下面有下划线,就表示主键

 

设计范式概要

什么是数据库设计范式?

也就是提供了一种准则,帮助咱们创建简介高效且结构清晰的数据库设计,避免数据库插入,跟新,删除,修改中的异常,而且为最大限度的避免数据库的冗余。

常见的数据库范式包括:第一范式、第二范式、第三范式及BC范式

固然还有第四及第五范式,不过这里咱们会把重点放到前三个范式上,

这也是目前咱们大多数数据库设计索要遵循的范式

 

数据库异常以及数据冗余

第一范式

二维表就是由行和列组成的表,图中的第二种表通常是没法建立出来的也是不符合第一范式的,因此,通常状况下,咱们建立的表都是符合第一范式的

第二范式

供应商电话和组合关键字存在着部分函数依赖,因此上边的表时不符合第二范式

存在的问题:

  1. 插入异常---若是饮料一厂不提供任何信息,咱们是找不到饮料一厂的其余信息的,
  2. 删除异常---若是把可乐删除掉,同时,电话和饮料一厂也消失了
  3. 更新异常---若是有多种商品,那么,跟新一个信息,同时要跟新不少条数据
  4. 数据冗余---和上面同样,数据冗余了

如何解决

第三范式

因此这是不符合第三范式要求的

修改以下

这样,就不会有传递性的依赖关系了

BC范式

拆分以下

第三章-物理设计

物理设计要作什么?

  1. 选择合适的数据库管理系统(应用特色和成本)
  2. 定义数据库、表以及字段的命名规范(不一样数据库对命名的规范是有差别的)
  3. 根据所选的DBMS系统选择合适的字段类型
  4. 反范式化设计(为了效率的提高而作的,多是数据冗余)

如何选择数据库系统

考虑功能上的因素

操做系统上的因素

编程语言

应用场景

MySQL经常使用的存储引擎

  • MyISAM :5.5以前的版本,不支持事务,可是存储的效率相对来讲比较高,高并发的可能会致使锁堵塞,因此,读写操做频繁不要使用
  • MRG_MYISAM:基于MyISAM将多个结构相同的MyISAM表合并成一个表,
  • Innodb:5.5以后,主要的存储引擎。
  • Archive:须要的容量相对小,
  • Ndb cluster:MySQL集群下使用

表及字段的命令规则

为了方便,打眼一看就知道是什么,而不用去查询文档字典手册。浪费时间和精力

错误的

正确的

数据库字段类型选择原则

具体字段类型的选取

只是存储,不多用来查询,就使用int类型吧,由于不用转换了(好比生日不多使用,订单的时间类型常用,就可使用datetime)

粒度能够根据须要来选择,好比可能只须要年,只须要年月

 

 

使用触发器后,若是业务变动会变的复杂和麻烦,影响业务逻辑

 

 反范式化设计

 

咱们的数据库在使用中读写比例大概在3:1。读是远远高于写的。虽然在写的时候增长了冗余,可是在读的时候咱们大大的提升了效率

第四章-维护优化

一、要记录清楚数据库的每个列是什么意思

二、索引可能会应为数据量的增大和业务的改变而变得不适用

三、致使查询缓慢等问题

如何维护数据字典

 

如何维护索引

 

表结构的维护

使用自定义函数致使列中的索引失效

数据库中适合的操做

不要使用全文索引,可使用搜素引擎工具

数据库表的垂直拆分和水平拆分

相关文章
相关标签/搜索