应该在哪里维护数据完整性?

时间:2015-05-20 08:23:29

标签: django postgresql rdbms ordbms

首先简化方案:

  • 商家有产品

  • 商家有类别

  • 产品有子类别

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

这是使用RDBMS方法建模的。我将Postgres用于我的数据库,将Django用作Web框架。我们拥有启用/禁用产品/类别/商家等功能。这些影响必须级联,数据应保持一致。应该在哪里处理?我可以在我的数据库中使用触发器来强制执行此操作,或者在我的Django模型中使用预存/后保存,pre init / post init之类的方法/信号来执行相同的操作。哪个更合适。我对python比对SQL更熟悉,并且相信通过Django模型进行操作会使其更易于修改,因为在我的公司中,需求很容易发生频繁和突然的变化。

1 个答案:

答案 0 :(得分:2)

如果确实关于数据完整性,请在Postgres中执行此操作,当数据模型扩展时,保持一致会容易得多。

(我已经将应用程序从大约10个增加到大约70个表,数据模型中由DB模式确保的部分从那时起就一直很干净。尝试的部分保持一致性,据说在一个高级"水平时不时搞砸了)

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