首页 > 操作的历史记录是否应该区分类型

操作的历史记录是否应该区分类型

我需要写一个扣款模块,大致代码如下:

class DeductRecord(models.Model):
    userid = models.IntegerField()
    total_amount = models.IntegerField()
    type = models.IntegerField(choices=...)

class DeductHistory(models.Model):
    deduct_record = ForeignKey(DeductRecord)
    amount = models.IntegerField()

DeductRecord记录了应扣款用户、金额和扣款的种类,DeductHistory记录了每天的扣款历史。DeductHistory通过deduct_record外键可以知道应该扣款的总数和种类。如果我想知道一个DeductHistory实例的种类,通过Django可以直接deduct_history_instant.deduct_record.type来获知,但是这样的话每次都需要进行两次数据库查询。

但是如果把DeductHistory改成如下:

class DeductHistory(models.Model):
    deduct_record = ForeignKey(DeductRecord)
    amount = models.IntegerField()
    type = models.IntegerField(choices=...)

这样就方便了查询,直接用SQL也不用进行join了,但是我们就需要保证DeductHistory和DeductRecord中type值的一致性。
这两种实现哪种更好呢?

【热门文章】
【热门文章】