为什么要设计数据库
良好的数据库设计
降低应用程序的开发难度
具备高效的查询效率
具备良好的扩展性
糟糕的数据库设计
出现数据操作异常、修改复杂、数据宂余等问题
影响程序的性能、甚至会导致程序奔溃
数据库设计是对数据库中实体以及这些实体之间的关系进行规划和结构化的过程
设计数据库的步骤
收集信息
通过对业务人员的访谈等方法、充分了解用户需求,理解数据库需要存储的业务信息(数据)及需要提供的操作
标识实体
标识数据库要管理的关键对象或实体,实体一般是名词
标识每个实体的属性
标识实体之间的关系
绘制E-R图
也称为实体-关系图
通过一些具有特定含义的图形符号提供了实体类型、属性和联系的方法
方形 实体,一般是名词
圆形 属性,一般是名词
菱形 关系,一般是动词
数据库设计模型转换
关系型数据库设计分类
概念数据模型设计
逻辑数据模型
物理数据模型
各模型之间的元素对应关系
概念数据模型设计
实体(Entity)
属性(Attribute)
标识符(Identifier)
关系(Relationship)
逻辑数据模型
实体(Entity)
属性(Attribute)
标识符(Primary Identifier/Foreign Identifier)
关系(Relationship)
物理数据模型
表(Table)
列(Column)
键(Primary key/Foreign key)
参数完整性约束(Reference)
数据模型转换方案
概念数据模型->逻辑数据模型->物理数据模型
概念数据模型->物理数据模型
当使用关系型数据库时,物理数据模型即为关系模型
基本转换原理
1.将E-R图中每一个实体转换成一个表,实体的属性转换为表的列,实体的标识符转换为表的主键
2.将实体关系转化为表之间的引用完整性约束
根据关系的不同类型,通过外键引用主键的方式有所不同
数据库设计范式
实际开发中最为常见的关系型数据库设计范式
第一范式
第一范式的目标是确保每列保持原子性
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式
第二范式
第二范式的目标是确保表中的每列都和主键相关
要求每个表只能描述一件事情
第三范式
第三范式的目标是确保每列都和主键列直接相关,而不是间接相关
如果一个关系满足第二范式,并且除了主键意外的其他列都不传递依赖于主键列,则满足第三范式
规范化和性能的关系
为满足某种商业目标,数据库性能比规范化数据库更重要
通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间 通过在给定的表中插入计算列(如成绩总分),以方便查询
在数据规范化同时,要综合考虑数据库的性能