Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 应在何处维护数据完整性?_Django_Postgresql_Rdbms_Ordbms - Fatal编程技术网

Django 应在何处维护数据完整性?

Django 应在何处维护数据完整性?,django,postgresql,rdbms,ordbms,Django,Postgresql,Rdbms,Ordbms,首先是简化的场景: 商人有自己的产品 商人有门类 产品有子类别 商户产品类别必须将商户类别作为父类别 这是使用RDBMS方法建模的。我使用Postgres作为数据库,Django作为web框架。我们具有启用/禁用产品/类别/商户等功能。这些影响必须级联,数据应保持一致。这应该在哪里处理?我可以在数据库中使用触发器来实现这一点,也可以在Django模型中使用诸如pre-save/post-save、pre-init/post-init之类的方法/信号来实现这一点。哪个更合适。我对python比

首先是简化的场景:

  • 商人有自己的产品

  • 商人有门类

  • 产品有子类别

  • 商户产品类别必须将商户类别作为父类别

这是使用RDBMS方法建模的。我使用Postgres作为数据库,Django作为web框架。我们具有启用/禁用产品/类别/商户等功能。这些影响必须级联,数据应保持一致。这应该在哪里处理?我可以在数据库中使用触发器来实现这一点,也可以在Django模型中使用诸如pre-save/post-save、pre-init/post-init之类的方法/信号来实现这一点。哪个更合适。我对python比SQL更熟悉,并且相信通过Django模型进行修改会使其更具可修改性,因为在我的公司中,需求很容易发生频繁和突然的变化。

如果这确实是关于数据完整性的,那么在Postgres中进行,当数据模型扩展时,保持一致性会容易得多

(我已经将一个应用程序从大约10个表扩展到了大约70个表,从那以后,数据模型中由DB schema保证的部分一直是干净的。那些试图在“更高”级别上保持一致性的部分时不时出错)


如果是关于应用程序的行为,请在django中执行。

这是基于观点的。我部分同意。它还涉及设计数据模型的最佳实践为什么只对部分数据模型进行设计。如果您决定让dbms来处理它,为什么不坚持使用它?所有这些都起到了一定作用:1)委员会的设计2)模型在事后没有得到足够的考虑3)软编码反模式@knitti&@eangernoob:“如果是关于应用程序的行为”可能会产生误导。行为是由数据库参数化的/受数据库影响的,所以如果它仅仅是关于应用程序的行为,那就更好了。”但最好的是,/a数据库可以并且应该包含尽可能多的应用程序会话控制流和会话状态(即适当的软编码)这两种方法都有优点和缺点,为了做出正确的决策,还缺少许多细节。您想要什么信息?