第7章 数据库设计

1 数据库设计概述

数据库设计的 6 个阶段:

  • 需求分析
  • 概念结构设计
  • 逻辑结构设计
  • 物理结构设计
  • 数据库实施
  • 数据库运行和维护

3 概念结构设计

3.1 ER 图

三个核心概念:实体(矩形),属性(椭圆),联系(菱形)

alt text

3.2 EER 图

3.2.1 ISA 联系

父类-子类联系称为 ISA 联系,表示 “is a” 语义,用 △ 表示

① 分类属性

  • 分类属性是父实体型中的一个属性
  • 分类属性的属性名被标注在 △ 符号的旁边

② 不相交约束

  • 父类中的一个实体最多属于一个子类实体集
  • △ 中的一个叉号 “X” 表示

③ 可重叠约束

  • 允许父类中的一个实体能同时属于多个子类中的实体集
  • △ 中没有叉号

alt text

④ 完全特化

  • 父类中的每一个实体,必须是某一个子类中的实体(父类本身不能单独存在)
  • 父类到子类的双线连接来表示

⑤ 部分特化

  • 允许父类中的某些实体不属于任何一个子类
  • 部分特化用父类到子类的单线连接来表示

alt text

3.2.2 part_of 联系(弱实体)

弱实体型的存在依赖于其它实体型的存在

表示:双框矩形实体 有向箭头 双框菱形联系

3.2.3 基数约束

在联系中,用一个数对 min…max 来表示

  • min=1 的约束叫做‘强制参与’约束,即被施加基数约束的实体型中的每个实体都要参与联系
  • min=0 的约束叫做‘非强制参与’约束,即被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中
  • max=1 的约束叫做‘单值参与’约束,即被施加基数约束的实体型中的每个实体在联系中至多出现一次
  • max = * 的约束叫做‘多值参与’约束,即被施加基数约束的实体型中的每个实体在联系中可以出现多次

alt text

3.2.4 属性划分

在一个实体集中,可能存在多个标识符,只能从中选择一个作为主标识符并用下划线在 ER 图中将其标识出来

属性分为组合属性(一个属性中包含多个属性)、多值属性(与实体间用双横线表示)

3.2.5 属性基数

属性基数 含义
(0, ?) x为0,意味着该属性‘可以取空值’,或者说,允许一个实体在该属性上可以没有确定的值
(1, ?) x为1,意味着每一个实体在该属性上都必须有值,‘不能取空值’
(?, 1) y为1,意味着每一个实体在该属性上最多只能有一个值,即该属性为单值属性
(?, *) y*(表示‘多’),意味着允许一个实体在该属性上的取值是一个集合,即该属性为多值属性

4 逻辑结构设计

将 EE-R 模型转换成等价的关系数据库模式

基本方法:每个‘实体集’被转换成一个关系,每个‘联系’通常也被转换成一个关系

❑ 1. 每个实体集都被单独转换成一个独立的关系

  • 组合属性:横向展开成多个属性
  • 多值属性:每个多值属性,都被分解出去,和原实体集的主标识符属性联合起来单独组成一个新的关系

❑ 2. 多值属性向关系的转换

alt text

❑ 3.联系的转换

  • min=1:‘全参与’,min=0:‘非全参与’

alt text alt text alt text

alt text alt text alt text alt text alt text alt text

  • 多元联系
    • 转换得到的关系模式,其码一般由所有参与联系的实体集的主标识符联合组成(但也有可能发生变化)
  • 单个实体集内部的联系
    • 一对一、一对多:合并成一个(一个主码,另一个主码当外键)
    • 多对多拆成一个实体本身和一个关系

❑ 4.ISA 联系的转换

  • 可重叠、部分特化:转为 1、2、3 个关系均可

❑ 5.规范化

  • 确保所有关系模式至少满足第三范式(3NF)

标题:第7章 数据库设计

作者:Zwing

创建于:2026-08-08 19:00:00

更新于:2026-08-08 12:06:24

链接:https://zanytriumph.github.io/posts/数据库设计.html

版权声明:本文章采用 CC BY-NC-SA 4.0 进行许可