ER 速成

数据库设计的六个阶段

  1. 需求分析阶段: 自顶向下的了解与分析用户的应用需求 (结合数据字典等工具)
  2. 概念结构设计阶段: 形成概念模型 (如E-R 模型)
  3. 逻辑结构设计阶段: 将概念结构转换为数据模型 (如关系模式)
  4. 物理结构设计阶段: 确定存储结构和存取方法 (如索引, 聚簇)
  5. 数据库实施阶段: 数据载入, 应用调试, 试运行
  6. 数据库运行与维护阶段

概念结构设计阶段合成 ER 模型的可能冲突

在把小的 ER 图合并成为一个大的 ER 图的时候以下冲突可能会发生

  1. 属性冲突: 属性域冲突(属性的类型, 取值范围, 取值集合冲突), 取值单位冲突
    • 属性的域在几个 ER 图不同, 对同一个属性来说, 在有的图取值范围是(1~10), 有的图是 (1~100)
    • 属性的单位不同, 对同一个属性来说, 在有的图中取值单位是 cm, 有的图是 m
  2. 命名冲突: 同名异义, 异名同义
    • 同一个名字, 但在不同图中的含义不同
    • 不同的名字, 但在不同图中的含义相同
  3. 结构冲突: 抽象不同, 属性个数次序不同, 联系的类型不同
    • 比如在一张图中, 小明 (老王, 学生编号, 年龄) , 老王是作为班主任这个属性存在的, 但是在另一张图中, 老王却是一个实体

画出 ER 图 - 概念结构设计阶段

(a) 确定实体

  • 画好实体 (b) 添加关系
  • 关系名: 直接抄题干
  • 确定数量关系: 1:n / m:n / n:1, 是实体的部分参与还是全部参与, 是三者关系吗 (c) 添加实体的属性
  • 画属性

将 ER 图转为关系模式 - 逻辑结构设计阶段

(a) 确定关系名

  • 要写实体名, m:n 关系名, 三元关系名 (b) 确定每个关系的属性
  • 实体名的属性: 自己的属性 + 对面数量为 1 的二元关系的实体主键 (不考虑三元关系的情况)
  • 关系名的属性: 自己的属性 + 相连实体的主键

确定关系名的主键: 所有相连实体的主键 + 自己额外判断一下够不够确定一个关系, 如果不够就人为的多选几个属性作为主键