6 个回答

各有利弊,酌情选择

正如 @brzhang 所说,逻辑用代码实现,可最大程度复用,比如你一个订单信息查询功能,以service的形式暴露给其他系统(如CRM),要比以存储过程的形式提供给其他系统来的好,后者还要附带数据库帐户密码,同时多系统操作也会带来数据安全问题;

用代码来实现还有一个好处就是提高代码可读性,可维护性,可扩展性,这个可以自己yy.

如果逻辑相对稳定,复用性不强,可以直接用sql,比如报表查询,在系统中属于很独立的一块,很多人都喜欢结合存储过程和开源的报表工具快速做出复杂报表。

逻辑放在SQL中短期确实感觉很快、很爽。


不过随着项目发展,项目就会变的怪怪的,什么事都要用SQL搞,你的开发和维护也变成了增加SQL、修改SQL、优化SQL。增加一个条件?我动态拼一个SQL条件不就搞定了?慢慢的,百行长的SQL就出现了,那些让人看不懂的东西也出现了。那么,Web开发就是拼SQL吗?或者说Web开发就只会用到SQL吗?万一需要Redis,万一你的SQL失灵了呢?

我之前也遇到这个问题,我认为如果用ORM框架的话能避免这个问题。

我一般在model层写一些简单的CURD操作。逻辑我还是放在了controller层,这样子model层可以最大成都的复用。
sql中去实现那些和业务相关的逻辑的话,你的这段sql几乎不存在可复用性。
话有说回来,
逻辑写在sql中,并不是没有好处,可能你将逻辑写在sql中之需要查一次DB搞定,若不在sql中,可能需要controller中调几个model中的方法才能做到,明显造成了一个问题,需要查多次db,取舍还需看具体业务了。

外键,唯一 等约束也是可以用用的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进