对于数据库的三大范式的疑惑

本文探讨了数据库设计中第三范式的概念,并通过学生表的例子解释了如何避免数据冗余和依赖关系。讨论了在现代存储环境下,是否仍需严格遵循第三范式,以及其对查询性能的影响。

对应于第三范式的定义是翻译成程序猿更易理解的话:一个表中的所有的非主键字段都不传递依赖于主键字段。

举个栗子:

  学生表的设计:student(sno, sname, dno, dname, dlocation)(学号,学生姓名,系名,系地址),其中 sno->dno->dname->dlocation,所以就不符合第三范式。官方的说明是:但这关系肯定有大量的冗余,有关学生所在的几个属性DNO,DNAME,LOCATION将重复存储,插入,删除和修改时也将产生类似以上例的情况。所以就拆成两个表,student(sno, sname, dno) department(dno, dname, dlocation)

  但是我觉得现在存储设备这么便宜的环境下,数据冗余应该不是考虑的。那要查询的时候就得连表了,这样是不是又会导致新的损耗呢?这是我不能理解的。为什么就不能将这两个表中的字段合合在一张表里面那么查询的时候就根据一个主键就将所有的信息全部查出来了。

   如果俩表合为一表。在插入更新时,就会导致冗余的字段插入,这也是对网络资源的一种损耗。也是不得不考虑的。但是如果把这种表就是专门作为查询用的,那不使用第一范式,而是使用第二范式,那是不是在实际的业务领域能够快速得到响应呢,这也是我的疑惑。

  ps:工作刚满一年,上班时无聊想到的,第一篇博文,希望没有贻笑大方,希望得到各位指点。谢谢

 

转载于:https://www.cnblogs.com/KevinStark/p/4264924.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值