MySQL数据库优化技术之数据库表的设计

本文详细介绍了数据库设计中的三范式原则,包括第一范式的原子性、第二范式的唯一性及第三范式的非冗余性,并通过具体实例对比了符合与不符合三范式的表结构设计。

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

三范式介绍
表的范式:只有符合的第一范式,才能满足第二范式,进一步才能满足第三范式。

1、 第一范式
表的列具有原子性,不可再分解。只要是关系型数据库都自动满足第一范式。
数据库的分类:
关系型数据库:MySQL/ORACLE/Sql Server/DB2等
非关系型数据库:特点是面向对象或者集合
nosql数据库:MongoDB(特点是面向文档)

2、 第二范式
表中的记录是唯一的,就满足第二范式。通常我们设计一个主键来实现。
主键一般不含业务逻辑,一般是自增的;

3、 第三范式
表中不要有冗余数据,即如果表中的信息能够被推导出来就不应该单独的设计一个字段来存放;对字段冗余性的约束,要求字段没有冗余。
如下表所示,符合三范式要求:

student表

idnameage  class_id
1  zhangsan  271
2  lisi  282

 



class表

id  name
11班
22班

 

 

 

如下表所示,不符合三范式要求:

student表

idnameage  class_id  class_name
1  zhangsan  2711班
2  lisi  2822班

 

 

 

class表

id  name
11班
22班

 

 

 

反三范式案例

一个相册下有多个图片,每个图片有各自的浏览次数,相册有总的浏览次数。

相册浏览表

id  name  views  
1aa100
2bb40

 

 

 

图片表:

id  name  img  views  owner  
1pic1  pic1.jpg  551
2pic2pic2.jpg451
3pic3pic3.jpg  402

 

 

 

如果相册浏览表没有适当的冗余,效率有影响。

冗余比较可以得出一个结论:1对N时,冗余应当发生在1的一端

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值