实际工作中数据库表设计会遵循范式吗?

2021-06-26 16:35:04 +08:00
 NeroKamin

大家在实际工作中的表设计,会遵循《数据库系统概念》中提到的各种范式吗?比如第二范式、BC 范式等? 我先说说我自己的情况,我自己在工作中基本没有特别地遵守其中的各种范式去设计表。我自己认为原因有两点: 1.大学时关于这块确实学习地不是特别深入,久而久之也就忘的差不多了,这块内容也是最近重新捡起《数据库系统概念》学习时才回忆起的,所以工作中完全没有考虑过相关概念(说白了就是人菜)。 2.感觉如果按照各种范式设计表结构的话会对业务的开发实现增加许多困难。 不知道各位大佬在实际中是怎么样的,想结合理论知识与实际经验学习一下。

5116 次点击
所在节点    程序员
42 条回复
akira
2021-06-26 17:29:16 +08:00
不会。 但是都是有原因的,你需要清楚 为什么。

大体上就两个方面的因素,研发成本 性能瓶颈
shyangs
2021-06-26 17:58:28 +08:00
需求變更, 性能, 成本 都可能破壞範式。

多工作幾年你一定會遇到。
xuanbg
2021-06-26 18:10:56 +08:00
大多数情况下遵循范式,特殊情况会冗余数据。当然冗余必须有正当的理由。
oneisall8955
2021-06-26 18:19:15 +08:00
不太可能完全遵循范式,冗余啊什么的
xuanbg
2021-06-26 18:19:27 +08:00
范式 1 、2 、3 都是自然范式,也就是天然的、天经地义的,根据关系逻辑能够轻易推导得到的,不用学都会的。如果这 3 条范式都需要特别去学习才能理解 /运用的话。。。怕是逻辑思维能力有点捉急啊。趁年轻,赶紧转行。
huntcool001
2021-06-26 18:28:23 +08:00
不会, 第一范式都会违反. 一个数据库字段里面放上二三十个不需要索引查的那种扩展字段.
destinism
2021-06-26 18:43:25 +08:00
@xuanbg 你说话是真难听,别人正常问个问题,扯什么智商,转行?
wqhui
2021-06-26 19:15:34 +08:00
数据库表设计的规则是单纯从数据库层面考虑的,但实际应用中数据库只是我们整个系统的一部分,数据库范式有时并不能为系统带来好处,不要过度追求
Jooooooooo
2021-06-26 19:31:35 +08:00
当然不会

就说提出这个概念的人应该是没有接触过大规模业务场景的

提出的东西很多时候脱离实际场景, 参考就好
fkdog
2021-06-26 19:59:11 +08:00
想想这些泛式什么的理论提出来时候的时代背景和互联网业务的规模就知道这些范式根本不适合用在目前的互联网开发方式上。
des
2021-06-26 20:11:21 +08:00
建议看看范式产生的时代背景,那时候的主要诉求和现在有大不同
不用盲目遵循,首先还是要看你是否需要
uselessVisitor
2021-06-26 20:35:12 +08:00
@xuanbg #5 天然?空间换时间的情况不是很多吗?
shyrock
2021-06-26 21:38:43 +08:00
1.适用 RDB 的场景是要求数据强一致,且对并发要求没有高到双十一抢购这种级别。
2.既然使用了 RDB,就应该熟悉关系设计范式,并且主动运用到设计中,这能有效减少数据冗余和数据不一致问题。
3.实际应用中,会遇到为了提高性能等需求而增加冗余的情况,但是这跟优先满足范式的原则不冲突。
wyx119911
2021-06-26 21:49:17 +08:00
并不会,冗余字段多的很
charlie21
2021-06-26 22:37:27 +08:00
大方向是遵守的

读《 SQL 反模式》
https://zhuanlan.zhihu.com/p/37534634

数据库第一二三范式到底在说什么
https://zhuanlan.zhihu.com/p/20028672
Saurichthys
2021-06-26 22:43:32 +08:00
@xuanbg 素质修养有待提高
raaaaaar
2021-06-26 23:00:27 +08:00
ER 图转换关系模型什么的我觉得挺好用,范式这个就要看情况了,没有主动去弄过,大概数据量太少吧
l00t
2021-06-27 00:14:28 +08:00
@huntcool001 第一范式怎么违反??
xcstream
2021-06-27 00:16:40 +08:00
当然主要看性能
NeroKamin
2021-06-27 00:55:55 +08:00
@l00t 第一范式违反的话,我看到过一个银行数据库的,一个字段里面存了各种证件号码(身份证、护照等等),但是有另一个字段做类型区分,不知道算不算

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/785947

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX