7.1数据库和信息系统
数据库是信息系统的核心和基础
7.2数据库设计的特点
- 数据库设计应该与应用系统的设计相结合
- 结构设计(数据设计)
- 行为设计(处理设计)
7.2.1数据库设计的基本步骤
- 需求分析阶段(了解分析用户需求,最困难,最耗时)
- 概念结构设计阶段(E-R图)
- 逻辑结构设计阶段(关系模型、建立视图、形成外模式)
- 数据库物理设计阶段(B+树、Hash表、形成内模式)
- 数据库实施阶段(写SQL语句)
- 数据库运行和维护阶段(正式运行)
7.2.2需求分析
需求分析的产出:数据流图、数据字典
数据字典:各类数据描述的集合
数据字典的内容:
- 数据项:数据项是不可再分的数据单位
- 数据结构:数据结构反应了数据之间的组合关系
- 数据流:数据流是数据结构在系统内传输的路径
- 数据存储:数据存储是数据结构停留或者保存的地方,是数据流的来源和去向之一
- 处理过程:处理过程的具体处理逻辑一般用判定表或判定树来描述
7.3概念结构设计
-
概念结构设计是整个数据库设计的关键
-
数据抽象:对现实世界的一种抽象
- 分类(Classification):
is member of
从个体到集合,例如:张三是一名学生 - 聚集(Aggregation):
is part of
从属性到属性集,例如:教务处是学院的一部分 - 概括(Generalization):
is subset of
从集合到集合,例如:大学生是学生的一种
- 分类(Classification):
-
设计分E-R图的理念:
- 属性不可再分
- 属性不能与其他实体具有联系,联系只发生在实体之间
-
合并分E-R图时遇到的冲突
- 属性冲突:属性域冲突、属性取值单位冲突(kg与g)
- 命名冲突:同名异义、异名同义
- 结构冲突:同一对象不同抽象、同一实体的属性数量和属性次序不同、实体间的联系不同
-
合成E-R图的步骤
- 合并分E-R图:消除冲突(包括上述三种冲突)
- 修改与重构:消除冗余(通过规范化理论)
7.4逻辑结构设计
转换原则
E-R图中的抽象 | 能否转换成表 | 能否与其他表合并 |
---|---|---|
实体型 | 必须 | 不能 |
m:n联系 | 必须 | 不能 |
1:n联系 | 能 | 可以与多端合并 |
1:1联系 | 能 | 可以与任意一端合并 |
包含三个及以上实体的联系 | 必须 | 不能 |
同一实体集之间的联系,即自联系,按照上述情况(联系的种类)去转换
数据模型的优化
对关系模式的分解或合并
- 水平分解:把元组分成若干子集,80/20原则(一个大关系中,经常被使用的数据约占关系的20%)
- 优点:减少查询的数据量
- 垂直分解:把属性分解为若干子集,经常一起使用的属性分解为一个子关系模式
- 优点:提高某些事务的效率
- 缺点:某些事务不得不执行连接操作,降低效率
7.5数据库的物理设计
DBMS常用的存取方法:索引方法、聚簇方法、HASH方法
稀疏索引与稠密索引
稀疏索引:多个记录建一个索引,使用时类似于分块搜索
稠密索引:每个记录建一个索引
聚簇索引(能决定物理存储的索引)
建立聚簇索引后,基表中的数据也需要按照制定的聚簇属性值进行升序(降序)的存放
聚簇索引的索引项顺序与表中元组的物理顺序一致
一个表只能建立一个聚簇索引
7.6数据库的实施
- 定义数据库结构
- 数据装载(组织数据入库是数据库实施阶段最主要的工作)
- 试运行
数据库的维护工作包含:数据库备份、数据库重组织(类似OS的磁盘碎片整理)