ScholarGate
助手

数据库设计与范式化

数据库设计与范式化是构建关系模式的学科,旨在忠实地表示数据,同时消除冗余及其导致的更新、插入和删除异常。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

范式化是根据属性之间存在的函数依赖和多值依赖,分解关系以减少冗余和避免异常的过程,同时保留原始模式的信息内容。

Scope

该领域涵盖了关系模式优化的理论与实践:以函数依赖和多值依赖作为驱动设计的语义约束,范式(从1NF到BCNF,以及4NF)的层次结构,以及关系分解以消除冗余,同时保留无损连接,并在可能的情况下保留依赖。它不包括概念建模符号,如实体-关系图(在数据模型和查询语言中涵盖),以及物理设计选择,如索引。

Sub-topics

Core questions

  • 关系属性之间存在哪些函数依赖和多值依赖?
  • 冗余会导致哪些异常——更新、插入、删除?
  • 每个范式由什么条件定义,每个范式消除了哪些冗余?
  • 如何在不丢失信息的情况下分解关系?
  • 何时必须在依赖保留和更高范式之间进行权衡?

Key concepts

  • 函数依赖
  • Armstrong公理和闭包
  • 候选键和主属性
  • 更新、插入、删除异常
  • 第一范式、第二范式、第三范式
  • Boyce-Codd范式
  • 多值依赖和4NF
  • 无损连接分解
  • 依赖保留

Key theories

函数依赖和闭包
函数依赖X → Y断言X决定Y;Armstrong公理允许计算一组依赖的闭包,这是查找键和测试范式的基础。
范式
第一范式到第三范式以及Boyce-Codd范式对函数依赖施加了渐进更严格的条件以消除冗余;第四范式将其扩展到多值依赖。
无损连接和依赖保留分解
分解只有在无损(原始关系可以通过连接各部分重建)并且理想情况下是依赖保留(所有原始依赖都可以在各部分上强制执行)的情况下才是可取的,这些标准限制了模式的拆分方式。

Clinical relevance

范式化是构建可靠信息系统的核心技能:良好范式化的模式可以防止数据不一致并简化事务性应用程序的维护,而实践者也会为了读密集型分析和报告而有意地进行反范式化,这使得权衡成为实际数据库工程的核心。

History

Codd在20世纪70年代早期引入了第一范式、第二范式和第三范式,并与Boyce共同引入了更强的Boyce-Codd范式。Ronald Fagin后来基于多值依赖和连接依赖定义了第四范式和第五范式。这些成果共同将模式设计从一门艺术转变为一门以依赖约束为基础的理论。

Debates

实践中范式化的程度
严格的范式化消除了冗余和异常,但可能需要大量的连接,从而减慢读密集型工作负载;实践者们争论何时为性能进行受控的反范式化是合理的,以及何时它会引入范式化旨在防止的不一致性。

Key figures

  • Edgar F. Codd
  • Raymond F. Boyce
  • Ronald Fagin

Related topics

Seminal works

  • codd1972
  • silberschatz2019
  • garciamolina2008

Frequently asked questions

如果我很小心,为什么冗余还会导致问题?
在多行中冗余存储相同的事实会导致异常:更新可能只更改部分副本而不是全部(更新异常),您可能无法在没有不相关数据的情况下记录事实(插入异常),或者删除一行可能会丢失您想保留的信息(删除异常)。范式化消除了导致这些异常的冗余。
BCNF和第三范式有什么区别?
两者都解决了函数依赖引起的冗余,但BCNF更严格:它要求每个非平凡依赖的左侧都是超键。一个模式可能处于3NF但不是BCNF。BCNF总是提供无损分解,但可能不保留依赖,这就是有时保留3NF的原因。

Methods for this concept

Related concepts