关系数据库设计规范化

简介: 关系数据库设计规范化

基础知识

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以減少系统中信息存储的冗余度,但又可方便地获取信息。

基础知识

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以減少系统中信息存储的冗余度,但又可方便地获取信息。

函数依赖:设R(U)是属性集U上的关系模式,X和Y是U的子集。若R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的值不等,则称X函数决定Y或Y函数依赖于X,记作X->Y。

image.png

image.png

求候选码:用图解法确定候选码

  1. 将关系的函数依赖关系,用“有向图”的方式表示。
  2. 找出入度为0的属性,并以该属性集合为起点,尝试遍历有向图,若能正常遍历图中所有结点,则该属性集即为关系模式的候选键。
  3. 若入度为0的属性集不能遍历图中所有结点,则需要尝试性的将一些中间结点(既有入度,也有出度的结点)并入入度为0的属性集中,直至该集合能遍历所有结点,集合为候选键。

示例1:给定关系R(A1,A2,A3,A4)上的函数依赖集F={A1->A2,A2->A3,A3->A2,A2->A4},R的候选关键字为A1。

示例2:关系R(A,B,C)满足下列函数依赖:F{B->C,B->A,A->BC},关系R的候选键为A和B。

规范化

示例:First(Sno,Sname,Status,City,Pno,Qty),F={Sno->Sname,Sno->Status,Status->City,(Sno,Pno)->Qty}

1NF(第一范式)

image.png

BCNF(Boyce Codd Normal Form,巴克斯范式)

image.png

模式分解

image.png

对一个给定的模式进行分解,使得分解后的模式是否与原来的模式等价有三种情况:


分解具有无损连接性。

分解要保持函数依赖。

分解既要无损连接性,又要保持函数依赖。

示例:关系模式Std(Sno,Sdept,Mname),其属性组上的函数依赖集是F={Sno->Sdept,Sdept->Mname}

a) R11(Sno,Mname)和R12(Sdept,Mname)

b) R21(Sno,Sdept)和R22(Sno,Mname)

c) R31(Sno,Sdept)和R32(Sdept,Mname)

d) R41(Sno)、R42(Sdept)和R43(Mname)

image.png

image.png

总结

关系数据库设计的规范化是构建高效、可靠数据库系统的基础。它要求设计师深入理解并应用第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyd-Codd范式(BCNF)以及第四范式(4NF)。这些范式旨在引导设计师逐步消除数据中的冗余和更新异常,从而确保数据的原子性、独立性和稳定性。


在规范化的过程中,模式或表的分解是一个核心环节。设计师需要通过模式分解来保持函数依赖和无损连接,这意味着在分解过程中既要确保数据不丢失,又要维持数据间的内在联系。这种精细的操作不仅有助于提高数据的访问效率,还能保证数据在不同表之间的一致性和完整性。


除了遵循规范化原则,数据库设计还需考虑性能优化和可扩展性。设计师应通过合理的索引策略、查询优化和适当的硬件配置来提升数据库的性能。同时,设计应具备灵活性,以便在未来能够适应业务需求的变化和技术的更新。

相关文章
|
1月前
|
存储 BI 数据库
|
2月前
|
SQL NoSQL MongoDB
低代码使用问题之“规范化”和“反规范化”在设计数据库时应该如何权衡
低代码使用问题之“规范化”和“反规范化”在设计数据库时应该如何权衡
|
1月前
|
存储 数据库
数据库规范化的类型及其重要性
【8月更文挑战第1天】
40 0
|
2月前
|
存储 Java 数据管理
数据库三范式设计与规范化过程详解
数据库三范式设计与规范化过程详解
|
4月前
|
存储 关系型数据库 数据库
关系型数据库表结构设计规范化(Normalization)
【5月更文挑战第13天】关系型数据库表结构设计规范化(Normalization)
128 5
|
4月前
|
存储 关系型数据库 MySQL
【MySQL】数据库规范化的三大法则 — 一探范式设计原则
【MySQL】数据库规范化的三大法则 — 一探范式设计原则
|
4月前
|
存储 SQL 缓存
软件体系结构 - 关系数据库(2)反规范化
【4月更文挑战第25天】软件体系结构 - 关系数据库(2)反规范化
69 1
|
4月前
|
存储 数据库
软件体系结构 - 关系数据库(1)规范化
【4月更文挑战第24天】软件体系结构 - 关系数据库(1)规范化
56 0
|
4月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
MySQL技能完整学习列表4、数据库设计——2、数据库规范化(Normalization)——3、实体-关系模型(ER Modeling)
95 0
|
存储 SQL 数据管理
【数据库原理 • 四】数据库设计和规范化理论
数据库技术是计算机科学技术中发展最快,应用最广的技术之一,它是专门研究如何科学的组织和存储数据,如何高效地获取和处理数据的技术。它已成为各行各业存储数据、管理信息、共享资源和决策支持的最先进,最常用的技术。 当前互联网+与大数据,一切都建立在数据库之上,以数据说话,首先需要聚集数据、分析数据和管理数据,数据库技术已成为各种计算机系统的核心技术。数据库相关知识也已成为每个人必须掌握的知识。
521 0