第7章 数据库设计
1 数据库设计概述
数据库设计的 6 个阶段:
- 需求分析
- 概念结构设计
- 逻辑结构设计
- 物理结构设计
- 数据库实施
- 数据库运行和维护
3 概念结构设计
3.1 ER 图
三个核心概念:实体(矩形),属性(椭圆),联系(菱形)

3.2 EER 图
3.2.1 ISA 联系
父类-子类联系称为 ISA 联系,表示 “is a” 语义,用 △ 表示
① 分类属性
- 分类属性是父实体型中的一个属性
- 分类属性的属性名被标注在 △ 符号的旁边
② 不相交约束
- 父类中的一个实体最多属于一个子类实体集
- △ 中的一个叉号 “X” 表示
③ 可重叠约束
- 允许父类中的一个实体能同时属于多个子类中的实体集
- △ 中没有叉号

④ 完全特化
- 父类中的每一个实体,必须是某一个子类中的实体(父类本身不能单独存在)
- 父类到子类的双线连接来表示
⑤ 部分特化
- 允许父类中的某些实体不属于任何一个子类
- 部分特化用父类到子类的单线连接来表示

3.2.2 part_of 联系(弱实体)
弱实体型的存在依赖于其它实体型的存在
表示:双框矩形实体 有向箭头 双框菱形联系
3.2.3 基数约束
在联系中,用一个数对 min…max 来表示
- min=1 的约束叫做‘强制参与’约束,即被施加基数约束的实体型中的每个实体都要参与联系
- min=0 的约束叫做‘非强制参与’约束,即被施加基数约束的实体型中的实体可以出现在联系中,也可以不出现在联系中
- max=1 的约束叫做‘单值参与’约束,即被施加基数约束的实体型中的每个实体在联系中至多出现一次
- max = * 的约束叫做‘多值参与’约束,即被施加基数约束的实体型中的每个实体在联系中可以出现多次

3.2.4 属性划分
在一个实体集中,可能存在多个标识符,只能从中选择一个作为主标识符并用下划线在 ER 图中将其标识出来
属性分为组合属性(一个属性中包含多个属性)、多值属性(与实体间用双横线表示)
3.2.5 属性基数
| 属性基数 | 含义 |
|---|---|
(0, ?) |
x为0,意味着该属性‘可以取空值’,或者说,允许一个实体在该属性上可以没有确定的值 |
(1, ?) |
x为1,意味着每一个实体在该属性上都必须有值,‘不能取空值’ |
(?, 1) |
y为1,意味着每一个实体在该属性上最多只能有一个值,即该属性为单值属性 |
(?, *) |
y为*(表示‘多’),意味着允许一个实体在该属性上的取值是一个集合,即该属性为多值属性 |
4 逻辑结构设计
将 EE-R 模型转换成等价的关系数据库模式
基本方法:每个‘实体集’被转换成一个关系,每个‘联系’通常也被转换成一个关系
❑ 1. 每个实体集都被单独转换成一个独立的关系
- 组合属性:横向展开成多个属性
- 多值属性:每个多值属性,都被分解出去,和原实体集的主标识符属性联合起来单独组成一个新的关系
❑ 2. 多值属性向关系的转换

❑ 3.联系的转换
- min=1:‘全参与’,min=0:‘非全参与’


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