数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  • 第一范式
  • 第二范式
  • 第三范式
  • BC范式(Boyce-Codd范式)
  • 第四范式
  1. 关系数据库设计

关系范式

Previous函数依赖理论Next半结构化数据

Last updated 4 months ago

范式(Normal Form,NF)是指规范化的关系模式。由规范化程度不同,就产生不同的范式。根据满足条件的不同,经常称某一关系模式R为“第几范式”。

关系规范化理论是研究如何将一个不十分合理的关系模型转化为一个最佳的数据关系模型的理论,它是围绕范式而建立的。

各种范式之间存在联系:

1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF某一关系模式R为第n范式,可简记为R∈nNF 1 N F \supset 2 N F \supset 3 N F \supset B C N F \supset 4 N F \supset 5 N F\\ 某一关系模式R为第n范式,可简记为R\in nNF1NF⊃2NF⊃3NF⊃BCNF⊃4NF⊃5NF某一关系模式R为第n范式,可简记为R∈nNF

一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。关系规范化的理论已经讨论到第四和第五范式,但是一般数据库设计满足第三范式就可以了。

第一范式

第二范式

第三范式

BC范式(Boyce-Codd范式)

  • 第一范式:每个表应该有唯一标识每一行的主键(原子性)

  • 第二范式:在复合主键的情况下,非主键部分不应该依赖于部分主键(消除部分依赖)

  • 第三范式:非主键之间不应该有依赖关系(消除传递依赖)

第四范式

消除表中的多值依赖。以解除信息冗余,达到“一事一表”,也就是一对一的关系。

多值依赖定义:一个关系,至少存在三个属性(A,B,C),才能存在这种关系。对于每一个A值,有一组确定的B值和C值,并且这组B的值独立于这组C的值。

这个表除了主键,就没有其他字段了,所以满足BC范式(内部也不存在传递依赖和部分依赖),但是却存在多值依赖导致的异常。

加入下学期想采用一本新的英版高数教材,但是还没确定哪个老师来教。那么就没法在这个表中维护Course高数和Book英版高数教材之间的关系。

解决方法:把这个多值依赖的表拆解成2个表,分别建立关系。

规范化和性能的关系:

为满足某种商业目标,数据库性能比规范化数据库更重要:

  • 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间

  • 通过在给定的表中插入计算列(如成绩总分),以方便查询

进行规范化的同时,还需要综合考虑数据库的性能。