我在一家金融类型的公司工作,这家公司的某些规则由各州执行,这些规则及其计算方法几乎每天都会发生变化,如果不是每周都会发生变化的话。在这种情况下,将处理计算的逻辑部分移动到数据库更有意义; 在数据库中可以测试和应用变更,而不必重新编译和重新分发应用程序,这不可能在不干扰业务的情况下每天进行。存储过程经过测试、批准、应用,而最终用户对此一无所知。
随着向基于 Web 的应用程序的转移,将逻辑转移到数据库的依赖性减少了,但仍然存在。即使是网络应用程序(取决于语言)也必须编译并发布到网站上,这可能会导致停机。
我想说,如果“业务逻辑”意味着应用程序流、用户控制、定时操作和一般的“做业务的东西”,那么它应该在应用程序层。但是,如果这意味着确保无论你如何挖掘数据,它总是有意义的,是一个明智的,非自我冲突的整体,那么执行这些规则的检查将进入数据库,绝对没有问题。总有许多方法可以将数据推入数据库,并在数据库存在时对其进行操作。并非所有这些方法都内置了“业务逻辑”。你会发现一个 SQL 会话到数据库通过一个 DOS 窗口的支持呼叫在凌晨3点是非常开放的,例如它允许什么!如果数据库中没有逻辑来确保所有数据更改都有意义,那么可以肯定的是,随着时间的推移,数据将变得非常、非常糟糕。由于一个系统的价值取决于它所持有的数据,因此它的投资回报率要低得多。