我讨厌再次提出“数据库与代码中的业务逻辑”这个经典问题,但我需要一些具体的理由来说服一个老的开发团队,他们认为代码中的业务逻辑更好,因为它更多可维护,高于一切。我曾经在数据库中有很多业务逻辑,因为我相信这是单点访问。如果我是唯一一个改变它的人,维护很容易。根据我的经验,当项目变得越来越大和复杂时,问题就出现了。数据库存储过程的源代码控制并不像新IDE那样先进,编辑也没有。代码中的业务逻辑可以比数据库更好地扩展,这是我在最近的经验中发现的。数据库层中的业务逻辑
所以,就在计算器搜索,我发现从它的尊贵会员完全相反的理念:
https://stackoverflow.com/search?q=business+logic+in+database
我知道没有绝对的任何情况,但对于给定的asp.net的解决方案,这将使用sql服务器或oracle,为一个不是特别高的流量站点,为什么我会把逻辑放在数据库中?
感谢您的回答 - 虽然我的意思是业务逻辑,但我更多地指的是非常具体的业务逻辑,例如“该员工是否允许为该部门增加费用”......参考完整性和触发器可以帮助我保护孤立的数据和保存外键,但它不会帮助我做像我提到的检查。哪里应该这样? –
@Cade我完全同意你的看法,只不过如果你隐藏太多或者做了太多的视图,Sprocs很容易变得几乎不可管理。我已经看到重构视图之上的视图和用于管理一切的存储过程的情况。好的设计可能会阻止很多这种情况,这就是为什么三层和n层架构被发明出来的原因。尝试并避免很多这些问题。 –
@ M.R。关于员工和部门的情况很可能是数据库外部的情况。另一方面,如果可能有多个应用程序可能正在执行插入操作(例如来自SSIS包的订单,Web前端和Windows服务),则很可能您希望数据库执行该操作,或者通过某种应用程序服务器或Web服务强制所有用户。 –