字段类型占用空间比较
有效存储,高效访问
数据库设计 第三章——物理设计 存储引擎
数据库设计 第二章逻辑设计 BC 范式
存在部分函数依赖关系
第二范式:所有单关键字都符合第二范式
需求分析:
阿达
不符合第二范式示例
是打发的说法
阿萨大师1
第一范式举例
assdasda
lorem
数据库设计步骤
需求分析
逻辑设计
物理设计
维护优化
为什么要进行数据库设计
数据冗余
操作异常
ER图例说明
名词解释
数据库如何维护索引
如何选择合适的列建立索引
1. 出现在WHERE从句,GROUP BY从句,ORDER BY从句中的列
2. 可选性高的列要放到索引的前面
3. 索引中不要包括太长的数据库类型
注意事项
1. 索引并不是越多越好,过多的索引不但会降低写效率,而且会降低读的效率
2. 定期维护索引碎片
3. 在SQL 语句中不要使用强制索引关键字
数据库设计步骤:
需求分析(数据库需求的作用点:数据是什么、数据有哪些属性、数据和属性各自的特点有哪些)
逻辑设计 (使用ER图对数据库进行逻辑建模)
物理设计 (根据数据库自身的特点把逻辑设计转换为物理设计)
维护优化 (新的需求进行建表、索引优化、大表拆分)
什么是数据库设计?
数据库就是根据业务系统的具体需要,结合我们所选用的数据库管理系统(DBMS),为这个,业务构造出最优的数据存储模型。并建立好数据库中的表结构及表与表之间的关联关系的过程。使之能有效的对应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问。 (有效的存储,高效的访问)
常见的数据库管理系统:
MySQL 、Qracle、SQLServer、PgSql 还有一种流行的NoSQL系统:Mongo、Memcache、Redis
为什么要进行数据库设计?
数据库系统是应用系统存储数据的关键组成部分,是系统稳定运行的基础,决定着系统是否可以高效地运行。
优良的设计:减少数据冗余,避免数据维护异常,节约空间,高效访问。
糟糕的设计:存在大量的数据冗余,存在数据插入、更新、删除异常,浪费大量存储空间,访问数据低效。
在做需求分析时,实体是抽象的笼统的概念,比如例子中的订单和商品是多对多,一个订单对应多个商品,一个商品可在多个订单中,这里的商品不是确定的某个商品(没有实例化),就是个笼统概念。
到了后面er图建模阶段,一个订单还是对应多个商品,但是一个确定的商品,只能属于一个订单(意思是我的这个订单里的某一个商品,不可能同时出现在其他的订单里),因此多对多变成了一对多关系。
有效存储,高效访问
第二范式:所有单关键字段的表都符合第二范式
第一范式(1nf)
定义:数据库表中的所有字段都是单一属性
要求数据库中的表都是二维表
设计范式概要:
常见数据库范式:第一范式、第二范式、第三范式、bc范式
数据操作异常和数据冗余
操作异常:插入异常、更新异常、删除异常
关系:一个关系对应通常所说的一张表
元组:表中的一行即为一个元组
属性:表中的一列即为一个属性;每一个属性都有一个名称
候选码:表中的某个属性组,它可以唯一确定一个元组
主码:一个关系有多个候选码,选定其中一个为主码
域:属性的取值范围
分量:元组中的一个属性值
矩形:表示实体集
菱形:表示联系集
椭圆:表示实体的属性
线段:将属性连接到实体集,或将实体集连接到联系集