【概述】
在 数据库概念模型 中,简单介绍了概念模型,这里对概念模型的设计与 E-R 图进行具体介绍
概念结构设计,是将需求分析得到的用户需求抽象为概念模型的过程,这是整个数据库设计的关键,常用的方法有:自顶向下、自底向上、逐步扩张、混合策略,具体内容
抽象是指对实际的人、物、事和概念中抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,常用的抽象方法有:分类、聚集、概括
关于设计概念结构的方法和抽象,在软件工程中有详细的介绍,具体不再展开,这里仅介绍 E-R 图
【E-R 图】
E-R 图提供了表示实体、属性、联系的方法:
- 用矩形表示实体,矩形框内写明实体名
- 用椭圆形表示属性,用无向边将其与相应的实体连接
- 用菱形表示联系,菱形框内写明联系名,并用无向边分别与有关实体型连接,同时在无向边上表注联系的类型(1:1、1:m、n:m)
如下图,是一个销售管理系统的 E-R 图
【E-R 图的设计】
设计步骤
E-R 图的设计步骤分为三步为:
- 选择局部应用
- 逐一设计分 E-R 图
- 分 E-R 图集成为总 E-R 图
选择局部应用
在多层的数据流图中选择一个适当层次的数据流图,作为设计分 E-R 图的出发点,通常以中层数据流图作为设计分 E-R 图的依据
逐一设计分 E-R 图
该步是将各局部应用涉及的数据分别从数据字典中抽取出来,参照数据流图,标定各局部应用中的实体、实体的属性、标识实体的码,同时确定实体之间的联系(1:1、1:m、n:m)
在设计分 E-R 图时,关键是抽象实体与属性,即现实世界中一组具有某些共同特性和行为的对象就可以抽象为一个实体,对象类型的组成成分可以抽象为实体的属性
设计过程遵循两个原则:
- 属性不能再具有需要描述的性质,即属性必须是不可分的数据项,不能再由另一些属性组成
- 属性不能与其他实体具有联系,联系只发生在实体之间
分 E-R 图集成为总 E-R 图
概述
各局部 E-R 图建立好后,还需要对它们进行合并,集成为一个整体的数据概念结构,即总 E-R 图
集成总 E-R 图主要有两步:
- 合并:解决各分 E-R 图间的冲突,将各分 E-R 图合并起来生成初步 E-R 图
- 修改与重构:将初步 E-R 图消除不必要的冗余,生成基本 E-R 图
冲突
合并分 E-R 图的主要工作就是合理消除各 E-R 图的冲突,即各分 E-R 图间必定存在不一致的地方
冲突分为三类:属性冲突、命名冲突、结构冲突
1.属性冲突
属性冲突主要包含以下两类冲突:
- 属性域冲突:属性值的类型、取值范围、取值集合不同
- 属性取值单位冲突:属性的单位不同
属性冲突理论上十分好解决,只需要各部门讨论协商即可
2.命名冲突
命名冲突主要包含以下两类冲突:
- 同名异义:不同意义的对象在不同的局部应用中有相同的名字
- 异名同义:同一意义的对象在不同的局部应用中有不同的名字
命名冲突可能发生在实体、联系一级上,也可能发生在属性一级上,其中属性的命名冲突最为常见,处理命名冲突通常也像处理属性冲突一样,通过讨论、协商等行政手段即可解决
3.结构冲突
结构冲突主要包含以下三类冲突:
- 同一对象在不同应用中具有不同的抽象
- 同一实体在不同分E-R图中所包含的属性个数和属性排列次序不完全相同
- 实体之间的联系在不同局部视图中呈现不同的类型
冗余
在合并完各分 E-R 图后,形成的是初步 E-R 图,其中可能存在一些冗余数据和实体间冗余联系,冗余数据是指可由基本数据导出的数据,冗余联系是指可由其他联系导出的联系
冗余数据和冗余联系容易破坏数据库的完整性,给数据库的维护增加困难,应当进行消除,消除冗余后的初步 E-R 图称为基本 E-R 图
消除冗余的主要方法是分析法,即采用数据字典与数据流图作为依据,根据数据字典中关于数据项间逻辑关系的说明来消除冗余
如下图,$Q_3=Q_1*Q_2$,$Q_4=\sum Q_5$,此时 $Q_3$ 和 $Q_4$ 冗余,可以将其消去,同时由于 $Q_3$ 消去,产品与材料间 $m:n$ 联系也应消去
但不是所有的冗余数据与冗余联系都必须消除,有时不得不以冗余数据代价来提高效率,因此在设计概念结构时,哪些信息要保留、要消除必须根据用户的整体需求来确定
如果人为保留了一些冗余数据,应将数据字典中数据关联的说明作为完整性约束条件