MySQL 01 关系型数据库设计
文章目录
一、学习目标
- 了解设计数据库的步骤
- 掌握使用Visio绘制数据库E-R图的方法
- 掌握使用PowerDesigner绘制数据库模型图的方法
- 理解数据库设计的三大范式
- 掌握使用三大范式规范化数据库设计的方法
二、为什么需要设计数据库
良好的数据库设计
- 降低应用程序的开发难度
- 具备高效的查询效率
- 具备良好的扩展性
糟糕的数据库设计
- 出现数据操作异常、修改复杂、数据冗余等问题
- 影响程序的性能,甚至会导致程序崩溃
数据库设计是对数据库中实体以及这些实体之间的关系进行规划和结构化的过程
软件项目开发周期中数据库设计
- 需求分析阶段:分析客户的业务和数据处理需求
- 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
- 详细设计阶段:应用三大范式审核数据库结构
- 代码实现阶段:物理实现数据库,编码实现应用
- 软件测试阶段:……
- 上线部署:……
三、设计数据库的步骤
3.1.设计数据库的步骤
收集信息
通过对业务人员的访谈等方法,充分了解用户需求,理解数据库需要存储的业务信息(数据)及需要提供的操作
/*医院管理系统的基本功能*/ #1.大夫为就诊的病人开具项目检查单 #2.病人按检查项目单检查身体 /*系统中需要保存的数据*/ #1.病人信息 #2.科室信息 #3.检查项目信息 #4.记录每个科室可以开具的检查项目 #5.主治大夫给病人开具的检查处方中 #5.1.病人的信息 #5.2.检查项目信息 #5.3.科室信息 #5.4.时间信息 #5.5.检查结果等
标识实体 (Entity)
标识数据库要管理的关键对象或实体,实体一般是名词
/*医院管理系统中的实体*/ #1.病人:到医院看病的病人的信息 #2.科室:医院中设置的科室,如内科、外科等 #3.检查项目:医院可以做的检查项目,如血常规、尿常规等
标识每个实体的属性(Attribute)
标识实体之间的关系(Relationship)
/*医院管理系统中实体之间关系*/ #处方是由科室开具给指定病人的,属于联系 #同时,这个联系还拥有自己的属性
3.2.设计注意事项
- 数据库设计中,不能重复出现含义相同的实体
3.4.数据库设计小结
- 在软件项目开发周期的哪个阶段做数据库设计?
- 简述设计数据库的步骤
- 举例说明医院管理系统中存在的实体
四、数据库设计E-R图
4.1.为什么需要E-R图
在设计师的眼中E-R图就相当于施工图
在程序员眼中E-R图就相当于数据库设计图
4.2.绘制E-R图
E-R图:Entity Relationship Diagram 也称为实体-关系图
通过一些具有特定含义的图形符号提供了实体类型、属性和联系的方法
4.3.使用Visio绘制E-R图
Microsoft Office Visio工具简介:
- Office Visio 是Office软件系列中的负责绘制流程图和示意图的软件,是一款便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流的软件。使用 Office Visio 图表,可以促进对系统和流程的了解。
- Microsoft Office Visio帮助您创建具有专业外观的图表,以便理解、记录和分析信息、数据、系统和过程。
- 大多数图形软件程序依赖于结构技能。然而,在您使用 Visio 时,以可视方式传递重要信息就像打开模板、将形状拖放到绘图中以及对即将完成的工作应用主题一样轻松。
下载链接:
Microsoft Visio 2013 简体中文版:https://www.onlinedown.net/soft/577835.htm
推荐一个在线工具processon:https://www.processon.com/
安装完毕后,启动打开即可
开始绘制4.4.医院管理系统的数据库
4.5.E-R图映射基数
- 不管是一对多还是多对一,都是要先有一个基准参照物,所以一对多还是多对一,都是以参照物来表示的,通常的方式会采用从左向右的角度来判定映射关系
E-R图表示映射关系时,也可以通过添加箭头区分一对多和多对一的,箭头指向映射关系为一的实体
在业务人员与开发人员的沟通中,E-R图能够极大的提高彼此之间的沟通效率
五、数据库设计模型转换
5.1.关系型数据库设计分类
- 概念数据模型设计
- 逻辑数据模型设计
- 物理数据模型设计
5.2.各模型之间的元素对应关系
概念数据模型 逻辑数据模型 物理数据模型 实体(Entity) 实体(Entity) 表(Table) 属性(Attribute) 属性(Attribute) 列(Column) 标识符(Identifier) 标识符(Primary Identifier/ Foreign Identifier) 键(Primary key/ Foreign key) 关系(Relationship) 关系(Relationship) 参照完整性约束(Reference) 5.3.数据模型转换方案
- 当使用关系型数据库时,物理数据模型即为关系模型
5.4.基本转换原理
- 将E-R图中每一个实体转换成一个表,实体的属性转换为表的列,实体的标识符转换为表的主键
- 将实体关系转化为表之间的引用完整性约束
- 根据关系的不同类型,通过外键引用主键的方式有所不同
5.5.数据模型转换
如何实现数据模型转换?
- 使用Visio、PowerDesigner软件
5.6.将实体关系转化为表之间的引用完整性约束
- 一对多关系的两个实体
- 一般会各自转换为一张表,且后者对应的表引用前者对应的表
- 一个表中的主键对应另一个表中可重复的字段
- 主键的值是不能重复的,关联的字段是可以重复的
- 存在一个值对应一个值(一对一)或者一个值对应多个值(一对多)
- 一对一关系的两个实体
- 一般是一个主键对应一个不可重复的字段
- 多对多关系的两个实体
- 除了将多对多关系中的两个实体各自转换为表外,一般还会创建第3个表,称为连接表
- 将多对多关系划分为两个一对多关系,将这两个表主键都插入到第3个表中
六、PowerDesigner软件
6.1PowerDesigner简介
- Sybase公司开发的一款强大的数据库设计软件
- 开发人员经常使用的数据库建模工具
- 能够使用设计好的数据库模型直接生成SQL建表语句,极大的提升数据库的开发效率,使用PowerDesigner可以快速创建表,支持表与表之间建立关系,界面简洁,功能强大。同时支持将sql脚本导出,多种导出类型任意挑选,简单实用
- PowerDesigner16.5下载地址:https://www.onlinedown.net/soft/577763.htm
6.2.使用PowerDesigner绘制数据库模型图
实现步骤
打开Powerdesigner软件
创建模型(new Model)
绘制数据库模型图效果
(1)创建表实体
(2)添加属性
(3)添加实体之间的映射关系生成SQL代码
创建数据库模型图后,数据库脚本的方式
生成单个表的数据库脚本
批量生成数据库中的所有数据表的脚本
七、数据规范化
7.1为什么需要数据规范化
不合规范的表设计
存在的问题
- 信息重复
- 插入异常
- 数据不一致
- 删除异常
- 丢失有效信息
- 修改异常
如何消除并避免这些问题的出现?
- 使用三大范式规范数据库表的设计
八、数据库设计范式
- 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则
- 实际开发中最为常见的关系型数据库设计范式
- 第一范式
- 第二范式
- 第三范式
8.1.第一范式 (1st NF)
第一范式的目标是确保每列保持原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
8.2.第二范式 (2nd NF)
第二范式的目标是确保表中的每列都和主键相关
要求每个表只描述一件事情
8.3第三范式 (3nd NF)
第三范式的目标是确保每列都和主键列直接相关,而不是间接相关
如果一个关系满足第二范式,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)