zoukankan      html  css  js  c++  java
  • day73

    基表

    基表,为抽象表,是专门用来被继承,提供公有字段的,自身不会完成数据库迁移

    断关联表关系

    1. 不会影响连表查询操作效率

    2. 会提升连表增删改查操作效率

    3. 易于后期数据库表重构

    4. 缺点在于:数据库本身没有连表检测,容易出现脏数据,需要通过严格的逻辑避免脏数据的参数(必要的时候管理脏数据)

      举例:A依赖B,先插入A记录,该记录对应的B记录没产生,在没有关联的情况下,该操作可以实现,但是数据就是脏数据

      接着再将B数据添加,脏数据就得到处理了。反过来先操作B后操作A,更满足逻辑思维,一样可以执行。通过逻辑将AB表进行连表查询,不会有任何异常

    表关系总结

    book和publish 一对多:外键在多的一方 book

    book和author 多对多:外键在查询频率高的一方 book

    author和authorDetail 一对一:外键要根据实际需求建立在合理的位置authorDetail

    外键字段属性

    1. related_name在外键中设置外键反向查询的字段名:正向找字段名,反向找related_name值

    2. on_delete在外键中必须设置,表示级联关系,在Django 1.x下,系统默认提供(值为mdoels.CASCASE),Django 2.x下,必须手动明确

      CASCASE:默认值,级联

      ​ 例子:作者没,详情字段一定没,存在没意义

      DO-NOTHING:外键不会 被级联,假设A表依赖B表,B记录删除,A表的外键字段不做任何处理

      ​ 例子:出版社没 ,书还是出版社出版的

      SET_DEFAULT:假设A表依赖B表,B记录删除,A表的外键字段置为default属性设置的值,所以必须配置default属性使用

      ​ 例子:部门没,部门员工进入待定部门(注:部门表一定有待定部门记录)

      SET_NULL:假设A表依赖B表,B记录删除,A表的外键字段置为null,所以必须配合bull=True属性使用

      ​ 例子:部门没,部门员工进入未分组部门(注:关联部门表外键可以为空)

      注:多对多字段不能设置on_delete级联关系,默认为级联,如果要处理级联关系,需要手动明确关系表,处理关系表中的多个外键

    3. db_constraint在外键中控制表关联,默认为True表关联,设置False表示断开关联

    子序列化

    1. 只能在序列化中使用

    2. 字段名必须是外键(正向反向)字段 ( 外键字段:books)

      因为相对于自定义序列化外键字段,自定义序列化字段是不能参与反序列化的,而子序列化必须为外键名,所以无法入库

    3. 在外键关联数据是多条时,需要明确many=True (books = BookModelSerializer(many = True))

    4. 是单向操作,因为作为子系列的类必须写在上方,所以不能产生逆方向的子序列化

    多表操作:子序列化
    class BookModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Book
            fields = '__all__'   查找所有字段
            
    class PublishModelSerializer(serializers.ModelSerializer):
    	  class Meta:
            model = models.Publish
            fields = ['name', 'address', 'books']
    
  • 相关阅读:
    1144 The Missing Number (20分)
    1145 Hashing
    1146 Topological Order (25分)
    1147 Heaps (30分)
    1148 Werewolf
    1149 Dangerous Goods Packaging (25分)
    TypeReference
    Supervisor安装与配置()二
    谷粒商城ES调用(十九)
    Found interface org.elasticsearch.common.bytes.BytesReference, but class was expected
  • 原文地址:https://www.cnblogs.com/gfhh/p/12103812.html
Copyright © 2011-2022 走看看