我应该在数据库中放置默认值吗?

时间:2012-09-10 00:47:01

标签: database-design

假设大多数用户不会设置他们的头像,最好在创建新用户时在用户的表头像列中存储default.jpg之类的值,或者在控制器/视图中检查是否存在值,如果它为null则显示默认一个?

3 个答案:

答案 0 :(得分:3)

我会把它留空,并通过代码执行检查。

  1. 它让我可以选择在以后更改,default.jpg更改为default.png,而无需触及数据库。或者做其他有趣的事情,like how SO generates 'default' avatars

  2. 感觉对我来说更干净(用户没有选择头像。因此,空白字段。如果用户没有输入她的年龄,你会做一个吗?不。)

  3. 顺便说一句,你真的应该在实现另一个头像之前查看gravatar.com。我喜欢它,我需要将我的头像一次上传到一个网站,所有其他网站(如SO)自动使用它。

答案 1 :(得分:0)

我会使用“创建新用户”方法将default.jpg放入数据库中。这样可以使用户表中的内容保持一致,这样您的代码就不必在字段为空时进行检查或处理特殊情况。它还为您提供代码中的一个位置,您必须跟踪它。

当您创建用户时,您希望进行验证和检查,并在必要时阻止/修复。更进一步,你可以让它变得越来越难以管理。

答案 2 :(得分:0)

在数据库中放置NULL可以节省存储空间,而不是使用许多相同(因此冗余的)default.jpg BLOB。

当然,您可能正在将图像存储在文件系统中,在这种情况下,存储节省会更加适度(因为只重复文件路径,而不是文件本身)。或者您可以设计一种方法让BLOB在用户之间共享。但所有这些策略都使查询变得复杂,并可能影响性能/完整性......