让我们假设一个应用程序在模型/表示层中拥有所有必要的业务规则,并且它们很好地工作。我的问题是,是否应该在像Server这样的存储库中使用冗余的业务规则(即两个日期的跨度不能重叠任何其他现有的范围)。
在SQL Server中添加强制执行此规则的约束是否必要/有益?一方面,它防止任何人(包括DBA)在绕过应用程序时无意中违反业务规则。此外,我们已经通过主键和外键在存储库中有了一些业务规则。另一方面,重复的规则需要额外的时间来开发和维护。
这个问题涉及许多不同的技术,因此我有意地将标记保持为通用的。
发布于 2009-12-11 19:35:47
如果您关心您的数据,您将优先将所需的规则放在那里而不是其他任何地方。除了鼓掌之外,许多地方的数据都受到影响。将规则只放在业务层是短小的,并导致严重的数据完整性问题,atat试图修复可能是可怕的。有关数据的规则,属于数据库。
发布于 2009-12-11 19:32:26
您通常会发现在多个地方手工维护业务规则是非常困难的。
我在一些项目中很好地利用了代码生成来从需求模型中生成一些类型的规则。例如,我可能有这样的要求:“名字不能超过50个字符”。我以结构化的方式在UML中建模这个需求,然后生成UI代码,将输入限制限制在50个字符,业务逻辑执行相同的限制(永远不要信任UI!),并生成DDL/ORM映射文件来指定DB中的列宽度。
同样的想法可以扩展到建模更复杂的规则,并在应用程序的每一层生成适当的执行代码。
发布于 2009-12-11 19:36:37
业务规则还是数据完整性规则?
我的经验(主要是大型企业,我们不是在谈论软件公司或业余爱好商店)是,您的数据库将超过应用程序。并最终让其他应用程序与之对话。如果数据库没有(任何种类的)规则,就会有人破坏数据库。
https://stackoverflow.com/questions/1890312
复制相似问题