nickname是什么意思

更新时间:2022-12-27 01:04:24 阅读: 评论:0


2022年12月27日发(作者:艾丽斯 芒罗)

什么是冗余字段?如何优化表结构?

在设计时,某⼀字段属于⼀个表,但它⼜同时出现在另⼀个或多个表,且完全等同于它在其本来所属表的意义表⽰,那么这个字段就

是⼀个冗余字段。

――以上是我⾃⼰给出的定义

冗余字段的存在到底是好还是坏呢?这是⼀个不好说的问题。可能在有⼈看来,这是⼀个很蹩脚的数据库设计。因为在数据库设计领

域,有⼀个被⼤家奉为圭臬的数据库设计范式,这个范式理论上要求数据库设计逻辑清晰、关系明确,⽐如,”⽤户昵称”字

段”nickname”本来属于表”ur”,那么,表⽰”⽤户昵称”的字段就唯⼀的只应该属于”ur”表的”nickname”字段,这样,当

⽤户要修改昵称的时候,程序就只需要修改me这个字段就⾏了,瞧,很⽅便。不过问题也随之⽽来,我在其他数据表(如订单

orders表)⾥只存储了⽤户的ID,我要通过这个ID值得到⽤户昵称该怎么办呢?⼀个普遍的解决⽅法是通过联接(join),在查询时,通过id这

个唯⼀条件联接两个表,从⽽取到⽤户的昵称。

这样确实是没问题,我也⼀直觉得这样是最好的⽅案,扩展⽅便,当要更新⽤户信息时,程序中要修改的地⽅很少,但是随着数据库

⾥数据不断增加,百万,千万,同时,⽤户表的数据肯定也在不断的增加的,它可能是⼗万,百万。这个时候,你会发现两个表通过联接来

取数据就显得相当费⼒了,可能你只需要取⼀个nickname这个⽤户昵称属性,你就不得不去联⼀下那个已经⼏⼗万的⽤户表进⾏检索,其

速度可想⽽知了。

这个时候,你可以尝试把nickname这个字段加到orders这个订单表中,这样做的好事是,当你要通过订单表呈现⼀个订单列表时,

涉及⽤户的部分可能就不需要再进⾏联接查询了。当然,有利就有弊,这样做的弊端就是,当你尝试更新⽤户信息时,你必须记得⽤户信息

表⾥当前被更新的字段中,有哪些是冗余字段,分别属于哪些表,找到他们,然后加⼊到你的更新程序段中来。这个是程序中的开销,开销

在开发⼈员的时间上了。⾄于这样做是否值得,就得看具体情况⽽定了。

所以,⽬前要创建⼀个设计,我们有两种选择:

1.尽量遵循范式理论的规约,尽可能少的冗余字段,让数据库设计看起来精致、优雅、让⼈⼼醉。

2.合理的加⼊冗余字段这个润滑剂,减少join,让数据库执⾏性能更⾼更快。

选择哪⼀种呢?如果你是⼀个美学狂⼈,并且财⼤⽓粗,⾮要使⽤第⼀种⽅案,也没关系,这种⽅案的短板并⾮不可救药的。⽐如,

你可以增加服务器,从数据库集群⼊⼿,进⾏读写分离,读的时候可以将压⼒分散到不同的数据库服务器上,这样也可以获得很好的性能,

只是多付出了硬件成本和维护成本。或者,你可以在数据库前端架设Memcached之类的缓存服务,减少读写数据库的次数,也可以达到同

样的效果。问题在于你确定你需要缓存之类的东西。

当然,如果你跟我⼀样,只有⼀台每⽉⼏⼗元买来的vps,甚⾄可能是⼀个虚拟主机,建议还是暂时压制你的美学欲望,跟我⼀起选择

第⼆种⽅案吧,除⾮你愿意你的整个数据库都⼀直只有零零星星的⼏条数据。

本文发布于:2022-12-27 01:04:24,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/37187.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:lawn
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图