数据库学习笔记(Part.2)

关系模式:

ER模型的基本要素
entity 和 relation: 关系和实体
实体集在ER图当中使用矩形表示
关系集在ER图中使用菱形表示
椭圆代表属性
直线表示属性和实体的从属关系
下划线表示主码属性

ER模型当中联系集的类型:
一对一
一对多
多对多

建立ER图的两种方式:
1、根据需求分析阶段得到的数据流图和数据字典来建立模型
2、根据对现实世界的理解直接建立模型

什么是多元联系集和角色
多元联系集:一个联系相关的有多个实体集
角色:每一个连线代表一个不同的角色

多元联系集转化为二元联系集的转化规则:
数据库学习笔记(Part.2)

ER图设计的时候需要考虑的问题

1、使用实体还是实体集?
若设计的每个对象具有不同的属性特征则使用实体集是合理的,否则每增加一个对象都需要修改代码
若设计的每个对象具有相同的属性,则使用实体是合理的

2、属性应该放在什么位置?
放在实体集中:放在实体集当中会丧失与另一个实体集的联系,若一个属性与其余实体集没有联系那么就可以房子实体集中,比如:学生的性别和年龄
放在联系上:如果一个属性和其余实体集有联系,那么属性应该放在联系上,比如:学生成绩这个属性与学生课程和学生基本信息两个实体集都有关联,那么学生成绩这个属性就应该放在联系上。
多对一或者一对一联系的属性一般放在实体集中

3、使用属性还是用联系集?
不允许有属性之下还存在属性的情况
下图中对应的设计情况也可以作为使用属性还是联系集的一个区分
数据库学习笔记(Part.2)
4、如何处理多值属性和复合属性?
弱实体:新实体和原来的实体之间是1:N的联系,新实体依赖于原实体而存在,称为弱实体,下图中销售价格极为弱实体。弱实体用双线矩形表示,弱实体之间的联系用双线菱形表示。
数据库学习笔记(Part.2)
有键的实体称为强实体,无键的实体称为弱实体,弱实体的存在依赖于主实体,弱实体区分与各个属性的集合称为鉴别键或偏键,弱实体的主键由所依赖的强实体的主键加上弱实体得到鉴别键构成。鉴别键需要划上虚线。ER图如下图所示。
数据库学习笔记(Part.2)
5、选用实体集还是联系集?
数据库学习笔记(Part.2)
6、使用二元联系还是多元联系
尽管能够使用二元联系代替多元联系,但是若多个实体共同参与在一个关系中,多元联系更能清晰的表达这种联系。

扩展ER模型

扩展ER模型的特性:
特殊化、概括、属性、继承

**特殊化:**实体集中的某些子集具有区别于该实体集内其他实体的特性,可以根据这些差异特性对实体集进行分组,这一分组的过程称作特殊化。
特殊化用标记为ISA的三角形表示
数据库学习笔记(Part.2)
概括:
各个实体集之间具有共有的性质,合成一个较高层的实体集。概括是一个高层实体集与底层实体集之间的包含关系

属性继承:
高层实体集的属性被低层实体集的属性自动继承
底层实体集特有的性质仅适用于某个特定的底层实体集

聚集:
是一种抽象:它将联系集(及其相关实体集)看作是一个更高层的抽象实体集
实体集A与B以及他们的联系可以被看作另一个实体集C,使用聚集来消除冗余。

概念设计

什么是概念设计
将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构独立于数据库的逻辑结构

概念设计的步骤

  1. 局部ER模式的设计
  2. 全局ER模式的设计
  3. 全局ER模式的优化

概念设计的具体方法
采用自底向上的方法设计结构首先要根据需求分析结果,对现实的数据进行抽象,设计各个局部视图即分ER图

如何选择合适的局部应用:
高层的数据流图只能反映系统的概念,中层数据流图能较好地反映系统中各局部应用的子系统组成,因此往往以中层数据流图作为设计分ER图的依据。

设计局部ER图
每一个局部都对应一组数据流图,局部应用涉及的数据都收集在数据字典中。将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用当中的实体、实体的属性、标识实体的码,确定实体之间的联系和类型。

实体从何而来

  1. **对象抽象为实体:**现实世界中具有某些共同特性和行为的对象可以抽象为一个实体
  2. 对象组成成分抽象为实体的属性:

如何划分实体和属性
属性不能再具有需要描述的性质
属性不能与其他实体之间有联系,联系只能发生在实体与实体之间

为了简化ER图的处置,现实世界中的事务凡是能够作为属性对待的,尽量作为属性

ER图的集成方法:
视图集成一般采用逐步积累的方式

ER图的集成需要哪些步骤:
1、合并 2、修改与重构

各个ER图的冲突主要分为3类:
属性冲突、命名冲突、结构冲突

属性冲突:

  • 属性域冲突
  • 属性取值单位冲突

属性冲突经常用讨论协商等手段加以解决

命名冲突:

  • 同名异义
  • 同义异名

结构冲突:

  • 同一对象在不同应用中具有不同的抽象
  • 同一实体在不同局部视图中所包含的属性不完全相同,或者属性排列的次序不完全相同
  • 实体之间的联系在不同的局部视图中呈现不同的类型

集成中的问题

为什么要进行修改和重构?
分ER图经过合并之后生成初步ER图,初步ER图可能存在冗余数据和冗余实体之间的联系,容易破坏数据的完整性。

并不是所有冗余数据都必须加以消除,又是为了提高某些应用的效率,不得不以冗余信息作为代价

在设计数据库概念结构时,需要根据用户的整体需求来确定消除哪些冗余数据与联系

如何进行修改与重构

  • 分析方法
  • 规范化理论

修改与重构需要进行到何种程度

  • 整体概念结构内部应该具有一致性,即不能存在相互矛盾的表达
  • 整体概念结构能够准确的原来的每个视图结构,包括属性、实体和实体之间的联系
  • 整体概念结构能满足需要分析阶段所确定的所有需求