慕课网视频课程地址https://www.imooc.com/learn/117数据库
数据库的设计,就是根据业务系统的具体需求,结合咱们所选用的DBMS,为这个业务系统构造出最有的数据存储模型。并创建好数据库中的表结构及表与表之间的关联关系的过程。使之能有效的对应系统中的数据进行存储,并能够高效的对已经存储的数据进行访问。编程
需求分析----->逻辑设计----->物理设计----->维护优化并发
数据库需求分析的做用点:数据库设计
使用ER图对数据库进行逻辑建模编程语言
数据管理系统的选择,根据数据库自身的特色把逻辑设计转换为物理设计函数
后期维护高并发
为何要进行需求分析?工具
为了设计最优化的数据库,便于后期的扩展和维护,数据愈来愈多,愈来愈大会浪费空间,愈来愈杂乱,是很难处理和维护的优化
要搞清楚的一些问题spa
实例分析
逻辑设计要作什么?ER图就是数据库模型关系的展现图
名词解释
注:有的属性下面有下划线,就表示主键
什么是数据库设计范式?
也就是提供了一种准则,帮助咱们创建简介高效且结构清晰的数据库设计,避免数据库插入,跟新,删除,修改中的异常,而且为最大限度的避免数据库的冗余。
常见的数据库范式包括:第一范式、第二范式、第三范式及BC范式
固然还有第四及第五范式,不过这里咱们会把重点放到前三个范式上,
这也是目前咱们大多数数据库设计索要遵循的范式
数据库异常以及数据冗余
二维表就是由行和列组成的表,图中的第二种表通常是没法建立出来的也是不符合第一范式的,因此,通常状况下,咱们建立的表都是符合第一范式的
供应商电话和组合关键字存在着部分函数依赖,因此上边的表时不符合第二范式
存在的问题:
如何解决
因此这是不符合第三范式要求的
修改以下
这样,就不会有传递性的依赖关系了
拆分以下
物理设计要作什么?
如何选择数据库系统
考虑功能上的因素
操做系统上的因素
编程语言
应用场景
为了方便,打眼一看就知道是什么,而不用去查询文档字典手册。浪费时间和精力
错误的
正确的
只是存储,不多用来查询,就使用int类型吧,由于不用转换了(好比生日不多使用,订单的时间类型常用,就可使用datetime)
粒度能够根据须要来选择,好比可能只须要年,只须要年月
使用触发器后,若是业务变动会变的复杂和麻烦,影响业务逻辑
咱们的数据库在使用中读写比例大概在3:1。读是远远高于写的。虽然在写的时候增长了冗余,可是在读的时候咱们大大的提升了效率
一、要记录清楚数据库的每个列是什么意思
二、索引可能会应为数据量的增大和业务的改变而变得不适用
三、致使查询缓慢等问题
使用自定义函数致使列中的索引失效
不要使用全文索引,可使用搜素引擎工具