明天就要软考了,我发现了数据库三范式之第一范式好像过时了

10 小时 46 分钟前
 dushixiang

第一范式( 1NF )要求数据库表中的每个列都是不可再分的原子值,即每个列都不能包含多个值或值的列表。

现在使用 pg 的时候经常用 json 格式了,是不是违反了第一范式?

3490 次点击
所在节点    数据库
47 条回复
xxyzf
9 小时 16 分钟前
是不是应该有个约束条件:在多大程度上是原子的,这就取决于业务需求了。
shyrock2026
9 小时 16 分钟前
范式是思维模型,依据模型你就能知道你的设计如何取舍:应用便利、性能、扩展性等等。
没人说按照范式执行一定更好,都是权衡和取舍。
chendy
9 小时 1 分钟前
三范式属于用了不会错,但是不一定好
反范式一定是是有什么好处,但是可能会犯错,特别是为了偷懒反范式
只能说具体情况具体分析
dandel1on
8 小时 54 分钟前
纸上谈兵不代表兵法书籍是无用的
killva4624
8 小时 52 分钟前
那么,古尔丹,代价是什么呢
piecezzz
8 小时 50 分钟前
实践和理论不冲突啊
adoal
8 小时 47 分钟前
@huangsijun17 当长字符串存跟用原生 JSON 支持是两码事。后者可以直接对 JSON 内容做检索和解析。
fredweili
8 小时 17 分钟前
你在说啥,考试该怎么复习准备?
dacapoday
8 小时 6 分钟前
现代数据库 json 列提供了按 json path 更新值,甚至按 json path 索引,把 json 列当 join 表,其中的每个 json path 当作真正的列值就行了。
如果用字符串类型的列,强行存 json 序列化值,而不提供局部更新能力,才是违反范式。
526326991
8 小时 6 分钟前
原则 > 范式 = 风格
leoJiu
8 小时 2 分钟前
钱都交了,明天去裸考了,我是一道题都没刷
dushixiang
7 小时 51 分钟前
@dacapoday 有道理,但是 json 作为字段通常都是全部覆盖更新这个字段的吧(数据库层面),需要存储 json 字段的通常是一些配置项
airqj
7 小时 50 分钟前
@soleils 兄弟你是真 NB 。
我只是反驳人家说的数据库范式无用论,没有说数据库一定得遵循规范来设计吧?
dacapoday
7 小时 29 分钟前
@dushixiang 这是一种场景,而且该场景下,该列不参与索引和进入过滤条件,也就是非关系的 blob 附件,那自然也不受范式约束了。
635925926
7 小时 26 分钟前
@Bigstupidcat 补贴了解下
hongye
7 小时 25 分钟前
@Rickkkkkkk

这种看法片面了,也低估了范式与 REST 规范在复杂商业系统里的底层价值。
数据库三范式从来不是死板教条,而是帮开发者规避数据冗余、更新异常、删除错乱的基础设计准则,真正长期做商业系统的人都清楚,前期不守范式,后期多表联查、数据同步、业务迭代、对账统计都会频繁出隐性 BUG ,维护成本会成倍飙升。
RESTful 也同理,规范统一的接口设计,能降低跨团队协作、前后端对接、服务拆分重构的沟通损耗。
规范本身不是束缚,而是工业级开发的通用共识,只会觉得规范无用,大概率只做过小体量单体项目,没经历过业务膨胀、数据迭代、多人协作、系统拆分的真实场景,自然体会不到底层规范规避风险、降本增效的实际作用。
luoshuimumu
7 小时 22 分钟前
后天考,明儿还能突击一天
Rickkkkkkk
7 小时 21 分钟前
@hongye 但实际上,真正设计的时候并不会拿着这些东西来用。

恰恰是大规模的系统才不会去遵守这些协议,小的项目反而好实现

(你可以随便去看阿里腾讯这种大厂的任何一个组,设计的时候这些规范都不会出现的
FlashEcho
7 小时 14 分钟前
因为业务需求或者性能考虑不遵守某些范式很正常,可以看下 DDIA 相关章节: https://ddia.vonng.com/ch3/#sec_datamodels_normalization
BeiChuanAlex
7 小时 6 分钟前
你说他没用,还是有用,你说他有用,它却没啥用,实际就是鸡肋

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

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

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

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

© 2021 V2EX