远观数据库设计

范式

数据库设计三大范式

范式的优缺点:
优点:范式可以避免数据冗余,减少数据库的空间,减轻维护数据完整性的麻烦。
缺点:按照范式的规范设计出来的表,等级越高的范式设计出来的表越多。当我们去查询一些数据,必然要去多表中去查询数据,这样查询的时间要比在一张表中查询中所用的时间要高很多。也就是说我们所用的范式越高,对数据操作的性能越低。

  • 1NF:确保每列保持原子性,即列不能够再分成其他几列。简而言之,第一范式就是无重复的列。
  • 2NF:确保表中的每列都和主键相关,首先要满足它是1NF,另外还需要包含两部分内容:一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
  • 3NF:确保每列都和主键列直接相关,而不是间接相关。在1NF基础上,任何非主属性不依赖于其它非主属性[在2NF基础上消除传递依赖]。第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。

数据库的反范式设计

不满足范式的模型,就是反范式模型。
反范式跟范式所要求的正好相反,在反范式的设计模式,我们可以允许适当的数据的冗余,用这个冗余去取操作数据时间的缩短。本质上就是用空间来换取时间,把数据冗余在多个表中,当查询时可以减少或者是避免表之间的关联;
这里写图片描述
RDBMS(关系数据库管理系统)模型设计过程中,常常使用范式约束我们的模型,但在NOSQL模型中则大量采用反范式。

参考:关系数据库的范式和反范式设计

思考

为什么?

我之前并没有理论的学习过数据库的基础知识,对范式的了解也只是基于碎片化学习而来。最近重新关注这方面内容主要是因为一个项目,用 Navicat 看我最初的表表结构完全是一团乱。

这是我才反应过来数据库设计不是自己想象中的那么简单。
然后按照我理解的范式重新设计了表。这里写图片描述但是到这儿我就想了解更多关于范式的知识,找到了一本书【数据库技术与应用】冯凤娟著,打算深入了解下。

最终还是数学

数据库的部分依赖,完全依赖,传递依赖以及三种范式 这篇文章中我了解到【函数依赖】这个词,最终发现我要找的答案其实是数学。
然后某宝上找到了【数据库技术与应用】这本书。我打算系统的学习下相关基础知识。

数学随想

学科的觉醒?
封建社会觉醒的是文学(文科)!
第一次工业革命觉醒的是物理!
第二次工业革命觉醒的是电气(化学?)!
第三次工业革命觉醒的是信息(数学)!
……

满满的套路?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值