设计数据库时,满足第三范式真的有意义吗?

战天诛 发布于 2016/10/08 18:17
阅读 1K+
收藏 0

比如说操作记录表中,需要保存操作人ID,而页面需要显示操作人名称

第三范式要求只能存操作人ID,所以名称需要关联查询

一个没什么,如果多了以后,严重拖慢了效率

如果把名称直接存在操作记录表里,就不会有这种问题。

这时候应该如何取舍?大家平常都是怎么设计的

加载中
2
宏哥
宏哥

有意义

减低数据管理难度,提高数据质量


1
颓废的幻想者
颓废的幻想者
如果是 小应用 你随便怎么搞都行 我们就讲高并发的情况 数据库读写很大 就比如用户更新一下昵称 是不是包涵这个字段表都要update 如果这些表被频繁访问情况下 你还在update 会出现死锁 再者 存在同一张表会造成表变大,操作不灵活 操作消耗成本高,易出其他错
0
乌龟壳
乌龟壳

严重拖慢效率

是怎么来的?个人臆测还是。。。。

0
张亦俊
张亦俊
退范式的过程就是通过冗余数据来提高查询性能,但冗余数据要么牺牲数据一致性,要么增加CUD的成本,看你自己怎么选了。
0
曾经的十字镐
曾经的十字镐
三大范式只是起到一个参考的作用,具体如何设计得结合当前的情况。
0
AutoPlus
AutoPlus
这些东西,在设计上需要取舍。有以时间换空间,有以空间换时间;有时间局部性,有空间局部性。
0
szwx855
szwx855
要看当前的需求,以及现有的表结构,才能设计出合理的方案。也不是一定要按第三范式规范。有的可能数据量不是很大。那么就可以一张表全放name,id。昵称。但一张表访问数据量太大。查询也很高。你如果更新一张表一条数据,都有可能造成别的系统对其进行的访问。最好就是分开。楼上说的也是对的,大数据量的情况。你只能空间换时间。
0
wj2699
wj2699
你只知有范式,却不知道有反范式。
0
_笔记本_
_笔记本_
如果人员名称改了,你还要update操作日志表去吗?
0
魔力猫
魔力猫

要看你的应用是OLAP还是OLTP。

OLAP一般冗余比较多,以查询分析为主,这种一般都是采用反范式设计,以提高查询效率。更新一般是定时大批量数据插入。

OLTP则是尽可能消除冗余,以提高变更的效率。因为这种应用无时无刻不在频繁变化。

也就是说,数据变化越频繁,那么对于去除冗余的要求越高,数据变化越低,读取更多的,则对于冗余要求没那么高,一般会增加冗余来提高查询效率。

返回顶部
顶部