SQL基础总结(一):关系模型

本文深入探讨了SQL规范化过程,包括第一范式、第二范式、第三范式、BC范式、第四范式和第五范式的定义和实现。同时,文章还阐述了非规范化的概念及其在提高查询速度方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本系列blog源自前年写的SQL学习笔记,汇总一下发上来。

---------------------------------------------------------------

 

规范化

父子表图示:由父表画出主键画出箭头指向子表外键。

满足第一范式的表:列包含原子值,没有重复的组。

 

当满足下列条件时第一范式的表自动满足第二范式的表:

1.主键是一个列(也就是说不是复合主键)。

2.表中所有列是主键的一部分。

 

满足第二范式的表:

1.  满足第一范式。

2.  非部分函数依赖(完全函数依赖)。

部分函数依赖是指表中一些组合键(不是全部组合键)的值可以确定一个非键列的值。

 

第二范式表是完全函数依赖,意味着如果组合键中任何一列值改变,将导致非键列的值需要更新。即全部组合键决定一个非键列。

 

满足第三范式的表:

1.  满足第二范式。

2.  没有传递依赖。

传递依赖:一个非键列的值决定另一个非键列的值,则表包含传递依赖。

 

BC范式:是更严格的第三范式版本。BC范式处理那些有多个候选键、组合候选键或重叠候选键的表。如果每个完全函数依赖的列都是候选键,则满足BC范式。

 

满足第四范式的表:

1.  BCNF

2.  没有多值依赖。

多值依赖:一个表至少3列,一列中多个行的值与其它列中一行的值匹配,则发生多值依赖。

 

满足第五范式的表:

1.  满足4NF

2.  并且没有联结依赖。联结依赖是多值依赖的泛化。

5NF的目标是使表不能进一步分解为多个更小的表。

 

在实际数据库中,会看到1NF2NF3NF,偶尔有4NF4NF甚至3NF的表也几乎总是5NF的。

 

非规范化

为了加快查询速度可能需要转而将数据库非规范化。较少的表会减少计算机联结和磁盘I/O操作的开销。这种常见的方法是为了性能而牺牲数据完整性。

非规范化数据的一个普通用途是用作从其它表复制过来数据的永久日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值