我需要你的智慧,我正在与另一个人辩论什么时候建议将业务规则的代码放入数据库约束或应用程序业务层的内部?
有一个粒子场,用于在工厂的机械设置的几个计算。今天,我们面临一个问题,因为文件维护人员没有指定一个在ERP的UI中没有被验证的所需的字段。该字段导致计算中的零误差除法,使PLC机器崩溃并停止生产,即重新启动PLC机器的时间。
因此,我填写了一个文件维护请求,以填充所有值为零的字段,并再次请求数据库管理员为该字段在数据库中创建约束,以便如果所需字段为0,则拒绝记录。
DBA拒绝了我的请求,并让我验证UI或业务逻辑层中的Partiu说谎者字段。我告诉他,即使我这样做了,微软Access或任何其他具有正确权限的工具都可以将零分配给Parciu说谎者字段,这将再次停止生产。他回答我:“那又怎样?你希望我将所有业务规则从业务逻辑层重新编程到数据库约束中吗?”
之后,我想知道“什么时候应该在业务应用层或数据库约束中放置业务规则”?
谢谢!塞巴斯蒂安
发布于 2014-12-18 21:45:25
我的2分钱,虽然我几乎没有经验的许多其他人在这个网站。
如果它与数据完整性相关(无论是从关系角度还是从标准化格式的角度来看),那么我坚信它应该由数据库来处理。如果这只是为了一个很好的演示,那么我认为应该由表示层来处理。
在此示例中,该值导致计算中的0除法错误的站点。如果该计算发生在数据库之外,那么我不认为对数据库中的数据的约束在那时是有效的。数据库不需要知道代码对其值做了什么,代码也不应该知道数据库如何处理其值.
简短的回答(在我看来)-数据库应负责以标准格式提供干净和可靠的数据.对该数据的处理取决于请求该数据的人员/代码。
https://dba.stackexchange.com/questions/86558
复制相似问题