06 Database Design using the E-R Model
Overview#
- phases- initial phase: 需求调研
- second phase- 选择 data model
- 形成 conceptual schema
 
- final phase: moving to implementation- logical design
- physcial design
 
 
- alternatives- redundancy: 数据的重复,可能导致不一致
- incompleteness: 一部分设计很难建模出来
- 如何衡量好的设计有多好?
 
- approaches- ER model
- Normalization Theory (范式理论 in chap. 7)
 
The Entity-Relationship Model#
- 3 basic concepts- entity sets
- relationship sets
- attributes
 
Entity Sets#
- entity: 某个人、某家企业
- entity set: 具有相同类型的实体的集合
- 一个 entity 具有一些 attr,一个 entity set 具有相同的 attr 类型
- 一个 entity set 的属性的子集形成了 primary key,能够唯一识别 set 中的成员
- 表示- 上方有集合名称
- 下划线是主键
 

Relationship Sets#

- 一个关系是数个实体之间的联系
- 一个关系集合是一类关系的集合

- 关系集合也可以有属性,例如成为学生的时间

Roles#
The function that an entity plays in a relationship is called that entity's role. 角色是实体在关系中的作用

Degree of a Relationship Set#
- 大部分都是二元关系
- 少部分用三元关系表示比较清晰,但是也可以转化为二元关系- e.g. students work on research projects under the guidance of an instructor
 

Complex Attributes#
- attr types- simple and composite- 复合属性的子属性也可以是复合属性
 
- single-valued and multivalued
- derived(派生), 例如生日和年龄
 
- simple and composite
- Domain: 每个属性的 valid 值空间

- 使用缩进表示复合关系
- 使用大括号表示多值属性
- 使用小括号表示派生属性类似函数
Mapping Cardinalities#
- cardinalities constrs- one to one
- one to many
- many to one
- many to many
 
- total and partial participation- 用双线表示全部参与的实体类,例如学生全部有 advisor 关系
 


Expression for More Complex Constraints#

- 表示的是上下界
- *表示 no limit
on Ternary Relationship#
- 默认最多只能有一个箭头,避免多种解释
- 超过一个箭头,会导致多种解释,例如 B C 都有箭头,可以理解为- 每个 A 对应唯一的 B 和 C
- 每个 pair (A, B) 对应唯一的 C,每个 pair (A, C) 对应唯一的 B
 
Primary Key#
- Primary Key 用来在实体和关系中进行区分,考虑以下集合中的主键- entity sets
- relationship sets
- weak entity sets
 
Entity Sets#
- 首先,默认每个实体都是是不同的- No two entities in an entity sets are allowed to have exactly the same value for all attrs
 
- 复习- 主键是候选键之一
- 候选键是最小超键
- 超键能唯一确定元素
 
Relationship Sets#
- 要区分不同的 relationship,所以也需要 primary key
- 如果实体的属性字段重名,需要重新命名
- 首先,无论 relationship set 是否有自己的属性,其相关实体集合的主键的并集总是 relationship set 的一个超键
- 其次,mapping cardinality 不同,主键的选择也有不同- many to many: 实体主键并集
- many to one: many 那边的主键
- one to many: many 那边的主键
- one to one: 任意一边的主键
 
Weak Entity Sets#

- 例如 section 实体由 course_id, semester, year, sec_id唯一确定,如果再建立 sec_course 来连接 section 和 course,则信息是有冗余的
- A weak entity set is one whose existence is dependent on another entity, called its identifying entity(标志性实体)- 没有主键,弱实体集自身没有足够属性来形成主键,必须依赖强实体集
- 具有部分键 (partial key),部分键是能在同一个强实体范围内唯一标识弱实体的属性- e.g. 一个公寓单元的单元号是部分键,在不同建筑中可能重复,所以需要依赖建筑这个强实体集
 
 
- ER 图中,弱实体集使用双矩形表示,识别关系使用双菱形表示
Removing Reduntant Attrs#

- e.g. student 中有 dept_name,department 中也有 dept_name,student 中的 dept_name 是冗余的,需要移除
- 但是当转换成表格时,一些情况下,被移除的属性又会被重新加入,仅仅是在 ER 图阶段是冗余的

E-R Diagram to Relational Schemas#
- 强实体集合直接转换成 relation,并设置主键
- 弱实体结合会重新引入依赖的强实体集合的主键,例如 section: sec_id, ... -> section: course_id, sec_id, ...
- 复合属性会被 flatten,例如 name_first_name, name_last_name
- 忽略多值属性,可以单独再创建表来保存
- 忽略派生属性
Redundancy of Schemas#

- 多对多的关系需要转化成表
- 一对多、多对一,只需要在多的一遍增加对侧主键
- 一对一,任选一边增加对侧主键
Extended E-R Features#

- 箭头表示 is a 关系
- 重叠 (overlapping) 特化表示,同时可以具有两种身份,可以同时是学生和员工
- 不重叠 (disjoint) 特化表示,不可以同时具有两种身份,不可同时是导师和秘书
Specialization#
- 从上往下看是特化,可以继承或不继承
- 不继承,节省空间,但是查询时需要多表查询,效率低  
- 继承,redundant,消耗空间,但是查询更快,不用多表连接  
Generalization#
- 从下往上看是概化
- 概化一般都是 total participation
Completeness Constratint
- total: 高级实体全部需要参与低级实体集合的一个
- partial: 高级实体不一定需要属于低级实体集合
Aggregation#

- 将三元关系聚合成抽象实体(Abstract Entity)- e.g. 项目评估时,将 project, student, instructor 聚合为一个抽象实体
 
- 转化为 schema 时,会发现 eval_for 和 proj_guide 是冗余的
3-relationship to 2-relationship#

E-R Symbols#


Alternative Notations for Modeling Data#

UML#
- Unified Modeling Language
- 关系框被省略,直接画线连接,关系名写线上
Other Aspects of Database Design#
- functional requirements- interfaces
- authroization
 
- data flow, workflow- store the workflow data
- need a series of daa queries and updates
 
- schema evolution- consider the future demand
- minimize the modification