为什么需要设计数据库?
良好的数据库设计
节省数据的存储空间
能够保证数据的完整性
方便进行数据库应用系统的开发

糟糕的数据库设计
数据冗余、存储空间浪费
内存空间浪费
数据更新和插入的异常

结论:当数据库比较复杂时我们需要设计数据库


软件项目开发周期中数据库设计
需求分析阶段:分析客户的业务和数据处理需求
概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
详细设计阶段:应用三大范式审核数据库结构
代码编写阶段:物理实现数据库,编码实现应用
软件测试阶段:……
安装部署:……


设计数据库的步骤

收集信息
与该系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务
(在确定客户要做什么之后,收集一切相关的信息,尽量不遗漏任何信息)
标识实体 (Entity)
标识数据库要管理的关键对象或实体,实体一般是名词
(实体一般是名词、每个实体只描述一件事情、不能重复出现含义相同的实体)
标识每个实体的属性(Attribute)
(标识每个实体需要存储的详细信息)
标识实体之间的关系(Relationship)


E-R图

长方形为实体,一般是名词
椭圆形是属性,一般是名词
菱形是关系,一般是动词


绘制E-R图
映射基数
一对一 校长对学校
一对多 老师对学生
多对一 学生对老师
多对多


关系模式
用二维表的形式表示实体和实体间联系的数据模型即关系模式

E-R图转换为关系模式的步骤
1. 把每个实体都转化为关系模式R(U)形式
2. 建立实体间联系的转换


转化E-R图为数据库模型图
将各实体转换为对应的表,将各属性转换为各表对应的列
标识每个表的主键列
在表之间建立主外键,体现


绘制E-R图工具
Visio

为什么需要数据规范化?
不合规范的表设计
信息重复
更新异常
插入异常
无法正确表示信息
删除异常
丢失有效信息


为了保证数据库的规范化便使用三大范式规范数据库表的设计
第一范式
第一范式的目标是确保每列的原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

第二范式
第二范式要求每个表只描述一件事情

第三范式
如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)

第一范式的目标是确保每列都是不可再分的最小数据单元
第二范式每要求一个表只描述一件事情
第三范式要求表中各列必须和主键直接相关,不能间接相关


表中包含大量冗余数据,可能会导致数据异常
更新异常
添加异常
删除异常
使用三大范式解决


规范化和性能的关系
为满足某种商业目标,数据库性能比规范化数据库更重要
通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
通过在给定的表中插入计算列(如成绩总分),以方便查询
在数据规范化同时,要综合考虑数据库的性能


规范晋级数据库设计
向各个表中插入数据,查看表中的每个属性列是否存在重复、插入异常、更新异常和删除异常
对照三大范式解决表中的异常问题
对于不满足三大范式的表要进行表拆分

 

posted on 2021-05-31 09:45  吅^O^  阅读(109)  评论(0编辑  收藏  举报