我一直在我的应用程序层(模型)和数据库层(引发错误的存储过程)中执行业务规则。
出于以下几个原因,我一直在这两个地方重复我的验证:
- 如果在检查应用程序代码和检查数据库之间的条件发生变化,则数据库中的业务规则检查将节省时间。数据库还允许我以比在我的应用程序代码中更简单的方式锁定各种记录,所以在这里这样做似乎很自然。
- 如果我们必须直接对数据库进行一些批量数据插入/更新,如果我通过执行业务规则验证的存储过程/函数路由所有这些操作,即使我缺少如果我通过应用程序进行单输入,我会得到保护。
- 虽然仅在数据库中执行这些操作会对实际数据产生相同的影响,但在首先努力验证它是否符合约束和业务规则之前将数据扔到数据库中似乎是不合适的。
什么是正确的平衡?