Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Python 数据库设计正确_Python_Mysql_Django - Fatal编程技术网

Python 数据库设计正确

Python 数据库设计正确,python,mysql,django,Python,Mysql,Django,我正在创建一个与牙医有关的django项目。 每个客户都有自己的一套牙齿,所以我有一个模型客户和一个带外键的模型客户 有一个叫做牙周造影的检查,它存储了一些关于每颗牙齿的信息,比如牙龈边缘探测深度,如果它有植入物(牙齿)等等。我想在我的项目中实现这一点。考虑到客户可能有不止一个牙周造影,我决定将其作为一个模型来实施。每个牙周图模型都有许多牙周图操作,其中每个牙周图操作都包含每个牙齿的信息。看起来是这样的 class Customer(models.Model): ..... Class

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

有一个叫做牙周造影的检查,它存储了一些关于每颗牙齿的信息,比如牙龈边缘探测深度,如果它有植入物(牙齿)等等。我想在我的项目中实现这一点。考虑到客户可能有不止一个牙周造影,我决定将其作为一个模型来实施。每个牙周图模型都有许多牙周图操作,其中每个牙周图操作都包含每个牙齿的信息。看起来是这样的

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数据以保存它。所以为了妥善保存它,我必须

  • 创建新的牙周图并保存到db
  • 每齿创建操作(从前端获取)
  • 将围手术期的peri field指定给步骤1中创建的牙周图

  • 但是,如果在创建每齿操作时某些操作失败,会发生什么情况呢。peri将被保存,但不会与任何操作一起保存。处理它的最佳方法是什么?

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

    您可能还需要检查MySql如何处理事务:


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

    您可能还需要检查MySql如何处理事务:


    可能是“牙龈边缘”,对吗?我有生命科学的背景,所以我注意到这个医学术语是错误的。是的,它是牙龈边缘…这是真的。这会对我的问题解决方案产生影响吗(没有讽刺……只是开玩笑:)?这可能是“牙龈边缘”,不是吗?我有生命科学的背景,所以我注意到这个医学术语是错误的。是的,它是牙龈边缘…这是真的。这会对我的问题解决方案产生影响吗(没有讽刺……只是开玩笑:)?是的,交易才是关键。是的,交易才是关键。