模式优化与分解
模式优化是将关系分解为更小的关系的过程,以达到所需的范式,同时要求分解是无损的,并且理想情况下能保留原始依赖。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
分解用一组模式替换关系模式R,这些模式的属性共同覆盖R,使得原始关系可以通过连接各部分来恢复(无损连接),并且在可能的情况下,每个原始函数依赖都可以在各部分上强制执行(依赖保留)。
Scope
本主题涵盖了关系模式分解的算法和标准:无损连接属性及其测试方法,依赖保留及其与更高范式之间的权衡,以及从一组函数依赖生成3NF(保留依赖且无损)或BCNF(无损)设计的标准合成和分解算法。它不包括范式本身的定义以及驱动分解的依赖的定义。
Core questions
- 什么使分解无损,以及如何测试该属性?
- 分解保留依赖意味着什么?
- 为什么BCNF分解可能无法保留依赖,而3NF合成却可以?
- 标准BCNF分解和3NF合成算法如何工作?
- 在实践中如何选择BCNF和3NF?
Key concepts
- 模式分解
- 无损连接属性
- 依赖保留
- 虚假元组
- BCNF分解算法
- 3NF合成算法
- 最小覆盖
- BCNF和3NF之间的权衡
Key theories
- 无损连接分解
- 如果二元分解的两个部分的共同属性构成其中至少一个的主键,则该分解是无损的;无损性保证连接这些部分可以精确地重建原始关系,而不会产生虚假元组。
- 依赖保留
- 如果各个部分上可强制执行的依赖的并集蕴含所有原始依赖,则分解保留依赖,这样可以在不重新计算连接的情况下检查一致性。
- BCNF分解与3NF合成
- BCNF分解算法保证无损性,但可能牺牲依赖保留,而从最小覆盖进行的3NF合成算法则保证无损连接和依赖保留,代价是可能停留在3NF。
Clinical relevance
分解算法是规范化理论如何成为可操作设计过程的关键:应用这些算法可以生成避免冗余但仍能有效重建和验证的模式,这直接影响生产数据库的正确性和可维护性。
History
无损连接和依赖保留分解的理论在20世纪70年代发展起来,当时研究人员正式确定了何时拆分关系是安全的。生成保留依赖的3NF设计的合成算法,以及BCNF可能与依赖保留冲突的认识,成为数据库教材的标准内容,并仍然是模式设计的核心。
Key figures
- Edgar F. Codd
- Jeffrey D. Ullman
- Philip Bernstein
Related topics
Seminal works
- silberschatz2019
- ramakrishnan2003
- garciamolina2008
Frequently asked questions
- 什么是虚假元组,为什么它很重要?
- 虚假元组是在连接选择不当的分解部分时出现的行,但它不对应于原始关系的任何真实元组。无损连接分解正是不会产生虚假元组的分解,这就是为什么无损性是一个不可协商的要求。
- 为什么我可能选择3NF而不是BCNF?
- 分解为BCNF总是保留无损连接属性,但可能会破坏依赖保留,这意味着某些约束只能通过连接表来检查。3NF合成算法保证无损性和依赖保留,因此当不存在保留依赖的BCNF设计时,设计者会接受3NF。