Database design 我应该在数据库中输入默认值吗?

Database design 我应该在数据库中输入默认值吗?,database-design,Database Design,假设大多数用户不会设置他们的头像,那么在创建新用户时,在用户的表头像列中存储一个像default.jpg这样的值,或者在controller/view中检查是否存在值,如果为null,则显示默认值?我会选择“创建新用户”方法将default.jpg放入数据库中。这可以保持用户表中的内容一致,这样当字段为空时,代码就不必进行检查或处理特殊情况。它还为您的代码提供了一个跟踪它的位置 当您创建用户时,您需要进行验证和检查,并在必要时防止/修复问题。你让这条线越往下流,它就越难管理 我会将其留空,然后通

假设大多数用户不会设置他们的头像,那么在创建新用户时,在用户的表头像列中存储一个像default.jpg这样的值,或者在controller/view中检查是否存在值,如果为null,则显示默认值?

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


当您创建用户时,您需要进行验证和检查,并在必要时防止/修复问题。你让这条线越往下流,它就越难管理

我会将其留空,然后通过代码执行检查

  • 它让我可以选择在以后的某个日期从
    default.jpg
    更改为
    default.png
    ,而无需触摸数据库。或者做其他有趣的事情

  • 我觉得它更干净(用户没有选择化身。因此,字段为空。如果用户没有输入她的年龄,你会补足一个吗?不会。)


  • 顺便说一句,你真的应该在实现另一个化身之前检查一下。我喜欢我只需将我的头像上传一次到一个网站,所有其他网站(比如)都会自动使用它。

    在数据库中输入NULL可以节省存储空间,而不是有许多相同的(因此是多余的)default.jpg blob


    当然,您可能将图像存储在文件系统中,在这种情况下,存储节省将非常有限(因为只会重复文件路径,而不会重复文件本身)。或者,您可以设计一种在用户之间共享blob的方法。但所有这些策略都会使查询复杂化,并可能影响性能/完整性…

    我会将其留空,然后通过代码执行检查。它让我感觉更干净,并且让我可以选择在以后不必接触数据库的情况下从
    default.jpg
    更改为
    default.png
    。@ArjunShankar:+1正是我要说的,你应该将此作为答案发布。@casablanca-对。现在完成。对于这个问题,实际上只有两个可能的答案,这就是为什么我不愿意写下一个。@ArjunShankar:这样的问题通常没有“正确”的答案,所以没有必要犹豫。只有当你的答案可能误导或完全不正确时,你才应该小心谨慎。谢谢你的回答。考虑到利弊,我认为这个解决方案对我来说会更好。生成随机默认化身的想法非常好。我有最后一个问题:我应该在我的模型中设置默认的化身并将其传递给控制器,还是应该在控制器本身中进行设置?哪个更像mvc?我想说,制作一个“默认”的化身属于业务逻辑。所以把它放在模型中对我来说是有意义的。