数据库设计正确

时间:2014-11-07 12:07:33

标签: python mysql django

我正在创建一个与牙医有关的django项目。 每个客户都有自己的一套牙齿,所以我有一个模型客户和一个带有外键给客户的模型牙齿

有一项名为牙周病的检查,如果它有植入物(牙齿)等,它会存储关于每颗牙齿的一些信息,如Ginginal Margin探测深度。我想在我的项目中实现这一点。考虑到客户可能有多个牙周图,我决定将其作为模型实施。并且每个牙周病图模型具有许多牙周病图操作,其中每个人牙周病图操作包括关于每个牙齿的信息。所以它看起来像这样

class Customer(models.Model):
    .....
Class Tooth(models.Model):
    customer = models.ForeignKey(Customer)


class Periodontogram(models.Model):
    customer = models.ForeignKey(Customer)
    date = models.DateField()

class PeriOperation(models.Model):
    tooth = models.ForeignKey(Tooth)
    peri = models.ForeignKey(Periodontogram)
    #rest of work done per tooth
    implant = models.BooleanField()
    ginginal_margin1 = models.IntegerField()
    #...more

前端在后端发送json数据以保存它。所以为了妥善保存,我必须

  1. 创建新的牙周病图并将其保存到db
  2. 每齿创建操作(从前端获取)
  3. 将periOperation中的peri字段分配给步骤1中创建的牙周病
  4. 但是如果在创建每个牙齿的操作时某些操作失败会发生什么。 peri将被保存,但不会进行任何操作。处理它的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

您应该使用数据库事务,以便将所有数据保存到数据库中,或者不保存任何内容。您可以在此处阅读有关交易的更多信息

https://docs.djangoproject.com/en/dev/topics/db/transactions/

您可能还需要检查MySql处理事务的方式:

http://dev.mysql.com/doc/refman/5.0/en/commit.html