Skip to main content

概述

考点

  1. 了解数据库设计的方法;
  2. 掌握数据库设计的步骤;
  3. 掌握E-R图的画法;
  4. 掌握模式的规范化;
  5. 掌握E-R模型转化为关系模式的方法。

一、了解数据库设计的方法

数据库设计是将现实世界需求转化为数据库模型的过程,核心方法包括:

  • 新奥尔良法:将设计划分为需求分析→概念结构设计→逻辑结构设计→物理结构设计→实施与维护六个阶段,是贯穿任务一至六的结构化设计方法。
  • E-R方法:以实体-联系(E-R)模型为核心,通过抽象现实世界的实体、属性与联系构建概念模型(任务二核心内容)。
  • 3NF规范化方法:以关系规范化理论为指导,通过模式分解将关系优化至第三范式(3NF),消除数据冗余与操作异常(任务六核心内容)。
  • 迭代优化思路:各阶段并非线性流程,需根据需求反馈持续调整,如逻辑设计阶段需结合规范化优化,物理设计阶段需根据性能反馈调整方案。

二、掌握数据库设计的步骤

数据库设计遵循标准化流程,对应任务一至五的完整工作流:

阶段对应任务核心工作关键产出
需求分析任务一收集并分析用户的业务、数据、功能、性能需求,梳理数据流向与约束数据流图(DFD)、数据字典
概念结构设计任务二将需求抽象为独立于DBMS的E-R模型,设计局部→全局→优化后的E-R图全局E-R图、概念数据模型
逻辑结构设计任务三将E-R模型转换为关系模式,优化关系结构(规范化),设计用户子模式关系模式、视图(子模式)
物理结构设计任务四为关系模式选择存取方法(索引、聚簇),设计存储结构与系统配置存储方案、索引/聚簇设计
数据库实施任务五建立数据库结构、编制调试应用程序、组织数据入库、系统试运行可运行的数据库系统、应用程序
运行与维护任务五监控性能、备份恢复、安全控制、重组与重构数据库优化后的系统、维护记录

三、掌握E-R图的画法

E-R图通过实体、属性、联系三大要素抽象现实世界,设计步骤如下:

(1)核心要素表示

  • 实体:现实中独立存在的事物(如“学生”“课程”),用矩形表示,主键(码)用下划线标注。
  • 属性:实体的特征(如“学号”“课程名”),用椭圆表示,与实体用线连接。
  • 联系:实体间的关联(如“选修”“授课”),用菱形表示,与实体用线连接,并标注联系类型(1:1、1:n、m:n)。

(2)设计流程

  1. 局部E-R图:针对每个用户视图,识别实体、属性及联系(如任务二中的学生、课程、选修联系)。
  2. 全局E-R图:合并局部E-R图,消除命名/属性/结构冲突,形成统一模型。
  3. 优化E-R图:删除冗余联系与属性,简化模型结构。

(3)联系类型标注

  • 1:1联系(如“学生-学生证”)、1:n联系(如“班级-学生”)、m:n联系(如“学生-课程”),需在联系旁明确标注。

四、掌握模式的规范化

规范化的核心是消除数据冗余大、更新异常、插入异常、删除异常,通过模式分解提升范式级别:

(1)核心范式定义

范式核心约束解决问题任务六示例
1NF所有属性为不可再分的原子项保证数据原子性“学生课程成绩”表的属性均为原子项,满足1NF
2NF满足1NF,且非主属性完全依赖于码消除部分依赖将“学生课程成绩”分解为“学生_班级”“课程”“成绩”,消除非主属性对(学号,课程号)的部分依赖
3NF满足2NF,且非主属性不传递依赖于码消除传递依赖将“学生_班级”分解为“学生”“班级”,消除“学号→班级名→班主任”的传递依赖

(2)规范化步骤

  1. 检查1NF:拆分复合属性至原子性。
  2. 分解至2NF:消除非主属性对码的部分依赖。
  3. 分解至3NF:消除非主属性对码的传递依赖。

(3)设计原则

一般数据库设计满足3NF即可,在消除冗余与性能之间取得平衡;更高范式(如BCNF)仅在特殊场景下需要。


五、掌握E-R模型转化为关系模式的方法

将E-R图转换为关系模式是逻辑设计的核心,规则如下(任务三核心内容):

(1)实体的转换

一个实体型转换为一个关系模式,实体的属性即为关系的属性,实体的码即为关系的码。 示例:“学生”实体 → 学生(学号, 姓名, 性别, 年龄)

(2)联系的转换

联系类型转换规则任务三示例
1:1联系可转换为独立关系,或与任意一端合并“学生-学生证”可合并至“学生”关系
1:n联系可转换为独立关系,或与n端(多方)合并(推荐)“班级-学生”合并至“学生”关系,增加“班级号”属性
m:n联系必须转换为独立关系,包含双方码(联合主键)+ 联系属性“学生-课程”的“选修”联系 → 选修(学号, 课程号, 成绩)
多元联系转换为独立关系,包含所有参与实体的码+联系属性如“学生-教师-课程”的“授课”联系,包含三方码

(3)合并规则

具有相同码的关系模式可合并,减少冗余(如任务三中“学生”与“班级”的合并优化)。