一、总纲:三者关系
数据库设计(六阶段) ├─ ①需求分析 ├─ ②概念结构设计 ─┐ ├─ ③逻辑结构设计 ─┼─ ★ 数据建模(三层) ├─ ④物理结构设计 ─┘ ├─ ⑤数据库实施 └─ ⑥运行维护 ③阶段【采用】关系模型 → 产出一组【关系模式】概念 | 是什么 | 层级 |
|---|---|---|
数据库设计 | 需求到可运行系统的全过程 | 最大 |
数据建模 | 设计中的②③④阶段(概念/逻辑/物理三层) | 中间 |
关系模型 | 逻辑阶段采用的一套理论 | 理论/工具 |
关系模式 | 关系模型的产物(单表的"型") | 最小 |
二、数据库设计六阶段
阶段 | 任务 | 产出 | 与DBMS |
|---|---|---|---|
①需求分析 | 用户要什么 | 数据流图、数据字典 | — |
②概念结构 | 数据长什么样 | E-R 图 | 无关 ★ |
③逻辑结构 | 转成数据模型 | 关系模式+规范化 | 与模型类型有关 |
④物理结构 | 怎么存怎么取 | 索引、存储方案 | 有关 ★ |
⑤实施 | 建库跑起来 | DDL建库/装数据/试运行 | 有关 |
⑥运维 | 长期养护 | 备份恢复、重组重构、调优 | 有关 |
口诀:需求→概念→逻辑→物理→实施→运维;概念与DBMS【无关】,物理与DBMS【有关】
数据建模三层 = 概念(E-R) + 逻辑(关系模式) + 物理(索引),不含需求分析
三、核心转换规则
联系 | 规则 |
|---|---|
1:1 | 并入任一端(或独立成表) |
1:N | 并入N 端(多端加外键) |
M:N | 必须独立成表,主键=两端主键组合 |
口诀:1:1随意放 / 1:N放N端 / M:N独立成表
范式
1NF 分量原子 → 2NF 消部分依赖 → 3NF 消传递依赖(工程常用) → BCNF⚠️不是越高越好,必要时反规范化(有意加冗余提性能)
局部E-R集成的三类冲突
属性冲突(类型/单位) ·命名冲突(同名异义/异名同义) ·结构冲突(实体↔属性)
四、关系模型
三要素(严谨表述)
关系模型 = 关系数据结构 + 预定义的关系操作集合 + 关系完整性约束 (二维表) (关系代数) (三类)要素 | 内容 |
|---|---|
①数据结构 | 关系(二维表) —— 唯一逻辑结构 |
②数据操作 | 预定义的关系代数运算 |
③完整性约束 | 实体 / 参照 / 用户定义 |
三类完整性约束
类型 | 规则 | 是否预定义 |
|---|---|---|
实体完整性 | 主码非空、不重复 | ✅ 模型要求 |
参照完整性 | 外码或为空,或等于被参照表主码 | ✅ 模型要求 |
用户定义完整性 | 按业务语义定(如年龄0~150) | ❌用户自定义 |
五、★ 关系模式 vs 关系模型
关系模型 | 关系模式 | |
|---|---|---|
性质 | 整套理论/数据模型 | 单个表的"型" |
范围 | 全局(整个库) | 局部(一张表) |
组成 | 结构+操作+约束 | 关系名+属性集合 |
表示 | — |
|
通俗 | "用表存数据这套办法" | "这张表有哪些列" |
型 vs 值(关键尺子)
型(结构) | 值(数据) | |
|---|---|---|
单表 | 关系模式 | 关系(实例) |
全库 | 关系数据库模式 | 关系数据库 |
类比 | 类定义 | 对象实例 |
关系模式(型):学生(学号, 姓名, 年龄) ← 表头,静态
关系(值) :2024001 | 张三 | 20 ← 元组,动态
一句话:关系模式是关系模型"数据结构"要素中的"型"——它是关系模型的一个零件,不是并列概念。
六、一句话流程串联
需求 → 概念(E-R,与DBMS无关) → 逻辑(关系模式+范式) → 物理(索引,与DBMS有关) → 实施(建库装数据) → 运维(备份重构调优) ↑ 第③步采用【关系模型】,产出【关系模式】