让我们假设一个应用程序在模型/表示层中具有所有必要的业务规则,并且它们工作正常.我的问题是,是否应在sql Server等存储库中使用冗余业务规则(即两个日期的跨度不能与任何其他现有跨度重叠).
在sql Server中添加强制执行此规则的约束是否必要/有益?一方面,它可以防止任何人(包括DBA)在绕过应用程序时无意中破坏业务规则.此外,我们已经通过主键和外键在存储库中拥有某些形式的业务规则.另一方面,重复的规则需要额外的时间来开发和维护.
这个问题涵盖了许多不同的技术,所以我故意保持标签的通用性.
解决方法
如果您关心自己的数据,则会将所需规则放在首选位置.数据受到应用之外的许多地方的影响.仅在业务层中放置规则是短暂的,并导致严重的数据完整性问题atat可能是非常可怕的尝试修复.有关数据的规则属于数据库.