文章数据表,应该存放 uid 还是username
文章显示页: 需要显示 username作者, 作者的link中需要 uid;
如果只存储其中一个,每篇文章都需要查询一次member表,获取另一个信息;
如果两种信息都存储,则浪费空间; 我看了很多CMS案例,都没有这样存储;

综合来讲,应该如何抉择;
我认为两个都存储比较合理,但是看了几个cms,都只存储其中一个;
这就让我迷茫了.



回复讨论(解决方案)

存放 uid

建议放uid,然后显示再根据uid获取username

建议放uid,然后显示再根据uid获取username




俩个都存不是更好吗? 牺牲空间,减少开销. 不是更合理吗?!
减少一次查询.

不就是一次关联查询吗?


建议放uid,然后显示再根据uid获取username




俩个都存不是更好吗? 牺牲空间,减少开销. 不是更合理吗?!
减少一次查询.



如果username可以改,那你修改的时候就要改多个表了。

放uid不就行了,关联查询就可查到username。
两个都存太浪费了,有点冗余,没必要。

uid加个索引,查询一次不是很耗开销的,比你多存一个字段好多了,尽量也别用连表查询,用两个sql分开插叙



建议放uid,然后显示再根据uid获取username




俩个都存不是更好吗? 牺牲空间,减少开销. 不是更合理吗?!
减少一次查询.



如果username可以改,那你修改的时候就要改多个表了。



username 改的比较少,性能消耗短暂;
但不存username:
如: 文章列表页,需要显示username; 一页30篇文章,相当于查询30次username;
即使用关联查询也是非常消耗性能的.

即使用关联查询也是非常消耗性能的 ???
这只是你想当然的想法

关系型数据库 就是这样设计的,关联 对于关系型数据库并没有而外开销(不用反而是浪费)
请你认真补习一下 数据库范式

我感觉只要你的username定义的是不重复性的,还是存储username比较好,他减少了一次查询数据库的操作,在一定的程度上提高程序的效率

如果username是允许修改的昵称,那么只存uid吧
如果是固定不会变的登陆用户名,那么id和name都存吧

根据关系型范式应该不存储username的。
而且可以用非关系型的,例如memcache,用uid=>username来读取。

有时出了显示username,还需要显示积分,等级那些,还是需要再查表的,所以只保存uid 就足够了,方便扩展。

09-19 05:17