单机数据库的表格设计模式(范式设计)

本文探讨了数据库设计中的范式理论,包括第一、第二和第三范式,强调了它们在节省空间但可能牺牲查询效率方面的作用。同时,提到了反范式设计,即允许冗余字段以提高查询速度但可能增加空间占用。文章还指出,单机数据库模式存在性能瓶颈,如磁盘I/O速度限制和单点故障问题,暗示了向分布式数据库演进的必要性。

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

单机数据库的表格设计模式

1、范式设计
早期数据库使用都是单机.如果用户量不大,访问并发不特别高,但是硬盘成本比较高,一般都会使用三范式设计模式来设计表格—节省空间,牺牲时间(查询需要大量的关联) 。
三范式
❤第一范式:表格设计不能出现可以拆分的字段
id location phone name
1 北京 69887656,13309987653 王翠花
2 上海 88765328,11330099887 刘首付

不满足第一范式,phone可以拆分成2个字段 座机/手机.在关系型数据库中自动满足第一范式
id location mobile phone name
❤第二范式:所有非主键字段,必须依赖全部的主键字段.
依赖:字段存在的意义,取决于某一个其他字段.
学生成绩记录表格
select * from score where stu_id and class_id
在这里插入图片描述
每一行都表示某个学生的某一课的成绩相关信息, stu_id class_id复合主键使用

stu_score 依赖全部的主键字段 stu_id class_id同时存在 得分才有意义
stu_name 依赖部分主键 stu_id
class_name 依赖部分主键 class_id
严格按照范式设计第二范式,需要将这个表格拆分,最终从多个表格查询成绩信息,势必要进行关联查询
studeent
stu_id stu_name
class
class_id class_name
score
stu_id class_id stu_score

select * from student s inner join score r on r.stu_id=s.stu_id inner join …
❤第三范式:非主键字段,必须依赖主键字段,不能依赖非主键字段

学生信息(大学)
stu_id apa_id apa_name stu_name
1 aaa 物理学院 王翠花

学院名称 apa_name并不依赖主键字段,而是依赖一个非主键字段apa_id
为了满足第三范式,需要拆分
stu_id apa_id stu_name

apa_id apa_name

总结:
非主键字段依赖主键字段.
如果是复合主键,必须全部依赖.
目的:牺牲时间,节省空间(范式拆分之后,绝对不会出现冗余字段)
在这里插入图片描述
user_id product_id:第二范式违反.
num:依赖全部主键字段
product_price
prodct_name
product_image
在这里插入图片描述
id:主键 每一个id都表示一个购物车的数据
user_id:依赖主键
product_id:依赖主键
num:依赖主键
荣誉字段
※ 反范式
违反三范式设计,会出现冗余字段,牺牲空间,节省时间.

2、单机数据库的瓶颈
设计单机数据库模式如何巧妙也无法避开单机性能的瓶颈
磁盘读写数据:io的速度瓶颈 现代机械磁盘 读写速度 200MB/S
在并发如此之高的今日,这些效率还不够,需要引入分布式,容量
单机故障问题无法解决:数据库的数据是最终的数据来源.尽可能保证高可用.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值