关系数据库设计规范化

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

基础知识

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

基础知识

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

函数依赖:设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)。这些范式旨在引导设计师逐步消除数据中的冗余和更新异常,从而确保数据的原子性、独立性和稳定性。


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


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

相关实践学习
使用DAS实现数据库SQL优化
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。
相关文章
|
SQL 存储 JSON
第1期 全栈开发关系数据库与非关系数据库的区别
我们常常遇到的数据库有关系数据库和非关系数据库,MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库。它们各有各的优点。所以我们所熟知的那些SQL语句就不适用于MongoDB了,因为SQL语句是关系型数据库的标准语言。今天小编就带着大家一起学习下关系数据库和非关系数据库,
175 0
|
SQL 数据库 数据库管理
关系数据库标准语言
关系数据库标准语言
93 0
|
SQL 存储 分布式计算
传世的关系模型,巧夺天工的分布式数据库设计
最早Google发明了GFS分布式文件系统,之后对应的开源项目就是鼎鼎大名的Hadoop HDFS。 GFS/HDFS的特点表现在顺序的、成块的、无索引的向文件块中写入数据,并在集群环境中按块(block)均匀分布存储,使用时再根据MapReduce、Spark的并行任务,按块批次的读取分析。这样就把写入和并行读取的性能发挥到了极致,具备了任何建立索引的数据库都无法比拟的读写速度。
传世的关系模型,巧夺天工的分布式数据库设计
|
存储 SQL Oracle
关系型数据库规范| 学习笔记
快速学习关系型数据库规范
|
10月前
|
存储 关系型数据库 数据库
关系型数据库表结构设计规范化(Normalization)
【5月更文挑战第13天】关系型数据库表结构设计规范化(Normalization)
389 5
|
数据库
数据库原理—数据模型(三)
数据库原理—数据模型(三)
数据库原理—数据模型(三)
|
10月前
|
关系型数据库 MySQL 程序员
MYSQL数据库设计规范与原则
MYSQL数据库设计规范与原则
406 0
|
10月前
|
关系型数据库 数据库
关系型数据库设计-6种范式
关系型数据库设计-6种范式
|
10月前
|
存储 数据库
软件体系结构 - 关系数据库(1)规范化
【4月更文挑战第24天】软件体系结构 - 关系数据库(1)规范化
114 0