• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于数据表反三范式的一点疑问?

php 搞代码 3年前 (2022-01-25) 11次浏览 已收录 0个评论
文章目录[隐藏]

一个简单的问题:

文章分类表:

article_type(id, name, pid, num)

这个num是该分类下的文章数量,我之前一直就是这样的,在新增文章或者删除文章时都会更新对应分类的num字段。

但是现在我觉的这好像没有必要,因为每个文章分类下面的文章数量可以通过文章表很容易的count()算出来,所以就觉得这个num是多余的了,并且编辑文章操作时还要更新article_typenum感觉有点烦。

我想取消这个字段,但是又很纠结,因为,这样以后相对的select语句会增多,以前直接从num取就行了,现在每次都要count()一下,有多少个分类就要count()几下,感觉是不是相对于以前而言有性能问题,不太合理呢?

感觉就这么个简单的问题就已经涉及程序的耦合,表的范式设计等考量。

纠结,希望大神指点,谢谢!

回复内容:

一个+本文来源gao@daima#com搞(%代@#码网

搞代gaodaima码

简单的问题:

文章分类表:

article_type(id, name, pid, num)

这个num是该分类下的文章数量,我之前一直就是这样的,在新增文章或者删除文章时都会更新对应分类的num字段。

但是现在我觉的这好像没有必要,因为每个文章分类下面的文章数量可以通过文章表很容易的count()算出来,所以就觉得这个num是多余的了,并且编辑文章操作时还要更新article_typenum感觉有点烦。

我想取消这个字段,但是又很纠结,因为,这样以后相对的select语句会增多,以前直接从num取就行了,现在每次都要count()一下,有多少个分类就要count()几下,感觉是不是相对于以前而言有性能问题,不太合理呢?

感觉就这么个简单的问题就已经涉及程序的耦合,表的范式设计等考量。

纠结,希望大神指点,谢谢!

第一,设计是遵守范式的,这代表你在设计表的初衷是尽可能少的冗余.
第二,适当的反范式,特定的场合下严格的范式反而导致严重的性能影响,这意味着你需要在"优雅的设计"和"实用主义"之间做权衡,这一点需要根据你业务的不同来看,永远不要追求完美.

现在来看看你的场景,你的article_type增加了num的冗余,这种场景下,能带给你好处的是,当文章的w比较多,而你对每一类的num的实时性要求并不是那么高,但你又需要频繁的在多处显示,甚至你可能是每天或者每个小时更新一下,这时候num的冗余是合理的,你可能会减少需要select count(*)的过程.但当你只有只有很少的地方需要这个num,那么count完全能满足你的要求,而且不会带给你看得见的性能损失,这种情况下,应该要遵守范式.

考虑放弃使用num能带给你大多的麻烦,需要重构的代码多么?会不会影响到核心的逻辑?是否可以把num做到cache中去呢?


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于数据表反三范式的一点疑问?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址