数据库7-数据库设计
数据库设计
数据库设计:根据用户需求研制数据库结构的过程
- 数据库结构设计:针对给定的应用环境,进行数据库的模式和子模式设计,包括概念设计,逻辑设计和物理设计,属于静态模型设计
- 数据库行为设计:确定数据库用户的行为和动作,属于动态模型设计
设计方法:直观设计,New orleans方法,基于实体-关系的方法,3NF设计方法,面向对象的方法(ODL),辅助软件CASE…
设计过程
- 需求分析:明确系统需要完成的任务
- 概念设计:将现实世界抽象地理解和表达
- 逻辑设计:概念模型转换具体的数据模型
- 物理设计:逻辑模型转化为确定的物理存储结构
- 实现阶段:进行数据库的构建工作,包括数据库的应 用程序开发和调试,数据的录入
- 运行和维护阶段:数据进行备份和维护,以保证数据库系统的效率
概念设计
概念模型:生成能准确反映用户组织和实用信息需求的抽象信息结构
- 真实充分地反映现实世界
- 易于理解更改和转换
- 描述概念模型最常用的工具:实体-关系模型;
- 易于转换成关系、网状、层次等各种数据模型
概念数据模型
- 面向用户、面向客观世界的模型
- 用来描述现实世界的概念化结构,与具体DBMS无关
- 概念数据模型必须转换成逻辑数据模型才能在DBMS中实现
E-R图
ER图是一种面向问题的概念模型,只关心现实世界的事物,特征和联系,用简单的图形方式描述显示世界的数据
- 实体:用 矩形框 表示
- 联系:一个或多个实体之间的关联关系,用菱形表示 ,用无向边连接
- 属性:用椭圆表示,现实世界的事物尽量看作属性,属性不能有需要描述的性质,不能与其他实体具有联系;
数量关系表示
- 一对一联系:对于实体A中的每一个实体,实体B中至多有一个实体与之联系,反之亦然;
- 完全一对一:$[1]\to [1]$,严格的对应关系;
- 不完全一对一:$[0,1]\to [0,1]$
- 一对多联系:对于实体A中的每一个实体,实体B中有多个实体与之联系,对于实体B中的每一个实体,实体A中至多有一个实体与之联系;
- 多对多联系:对于实体A中的每一个实体,实体B中有多个实体与之联系,反之亦然
属性分类
简单属性/复合属性
单值属性/多值属性:多值属性用双椭圆表示,一般需要转化成弱实体,用双线矩形表示,其联系用双菱形框表示
派生属性:通过具有相互依赖的属性推导出来的属性称为派生属性,用虚线椭圆形与实体相连
空值属性
设计方法
- 自顶向下:采用总分方式将大的概念模式逐步分解为更详细的较小划分模式
- 逐步扩张:逐步扩张 采用了层状扩展的方式,先定义出用户需求中核心的概念结构,然后在此基础上向 外扩展,逐步将非核心的需求融入到模式中,最终完成系统的概念结构设计
- 自底向上:首先构建起局部概念模式,然后再向上组合成全局模式
数据抽象:对需求分析阶段收集到的数据进行分类、组织,确定实体,实体的属性和联系数量关系- 分类:定义某一类概念作为现实世界的彝族对象的类型,抽象了对象值和型之间的语义
- 聚集:定义了某一类型的组成成分,抽象了对象内部类型和成分的语义
- 概括/继承:定义类型之间的某一子集联系,抽象了类型之间的语义
ER图绘制步骤
选择局部应用
逐一设计分ER图
集成分图,进行合并和修改;
- :实体在不同层抽象成不同的类型,不同的ER图联系数量关系不同
逻辑设计
- 逻辑设计依赖于实现的DBMS基础
- 逻辑设计的任务是为了概念结构设计阶段生成的全局ER图转换成特定DBMS支持的数据模型
ER模式向关系模型的转换
- 实体联系和属性转换成关系的集合表示
- 实体-关系模式,实体属性-关系属性,关系的键-实体的键
- 联系相连的实体的键转换成关系模式的最佳实践:
- 1:1的联系:与任意一端的关系模式合并
- 1:n的联系:既可以独立,也可以和n端合并
- m:n的联系:转换成一个关系模式,需要识别外码
- 在ER图中,用下划线表示主码,波浪线表示外码
模式优化
用关系理论规范化理论对关系数据模型进行优化
- 确定范式的使用
- 实现规范化
- 反范式设计
物理设计
- 存储结构的设计:数据存放的位置,确定系统的配置
- 存取方法的设计:
- 聚簇:节省存储空间,提高查询速度
- 索引:提高检索速度,避免重复值的记录,保证数据完整性
- 基于HASH:计算Hash值获得存取地址