数据库的设计
一:什么是数据库设计?
数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程.
二:为什么要实施数据库设计?
1:良好的数据库设计可以有效的解决数据冗余的问题
2:效率高
3:便于进一步扩展
4:使得应用程序开发变得容易
三:设计数据库的步骤
第一步 需求分析: 分析客户的业务和数据处理需求(收集信息,标识实体,标识每个实体需要存储的详细信息,标识实体间的关系)
第二步 概要设计: 绘制E-R图,用于与客户或团队成员的交流
第三步 详细设计: 将E-R图转换成多张表,进行逻辑设计,应用数据库设计的三大范式进行审核,选择具体的数据库然后建库建表建约束,创建完成开始编写代码,开发前端应用程序.
四:绘制E-R图
(1) 什么是实体?
实体是指现实世界中具有区分其他事物的特征或属性并与其他实体有联系的实体(实体一般是名词)
严格来说,实体是指表中一行特定的数据,也常常把表称为一个实体
(2)什么是属性?
属性可以理解为实体的特征,属性对应表中的列
(3)什么是联系?
联系是两个或多个实体之间的关联关系(一般是动词)
(4)什么是映射基数?
映射基数是表示通过联系与该实体关联的其他实体的个数,具体有 一对一 , 一对多, 多对一, 多对多.
(5)什么是关系实体图?
E-R图以图形的方式将数据库的整个逻辑结构表示出来. 矩形表示实体集;椭圆表示属性;菱形表示联系集;
直线用来连接属性和实体集,也用来联系实体集和联系集.
例如,酒店管理系统中E-R图:
五:绘制数据库模型图
例如:酒店管理系统数据库模型图
六:数据规范化
规范设计
第一范式:
第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小单元(也称为最小的原子单元),则满足第一范式
第二范式:
如果一个关系满足第一范式,并且除主键以外的其他列,都依赖于该主建,则满足第二范式,第二范式要求一张表只描述一件事情
第三范式:
如果一个关系满足第二范式,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式
注:第二范式是其他列都依赖于主键列但是没有说明是直接依赖还是间接依赖,也就是直接依赖和间接依赖均可,但第三范式明确指出只能是直接依赖,如果出现间接依赖的情况,要单独创建一张表出来
七:规范化和性能的关系
为了满足某种商业目标,数据库性能比规范数据库更重要
具体策略和方法:
(1):通过在给定的表中添加额外字段,以大量减少需要从中搜索信息所需要的时间
(2):通过在给定的表中插入计算列(比如成绩总分),以方便查询
在数据库规范时,要综合考虑数据库性能.