zoukankan      html  css  js  c++  java
  • orm数据库查询优化及数据库三大设计范式总结

    orm数据库查询优化

    only与defer

    '''
    only
        只有only括号内的字段在查询出的对象中,查询该字段无需走数据库,查询其他字段需要重走数据库查询操作
    defer:效果与only相反
    	只有在查询defer括号内的字段时才会走数据库查询操作
    '''
    
    '''
    select_related与prefetch_related查询时均不走数据库操作,因为数据全都封装在得到的对象中了
    select_related:内部就是联表操作,将关联后的大表内的数据全都封装到对象中
    	注意:select_related括号内只能一对一或者多对一关系的字段,放多对多关系或者非外键字段就会报错
    prefetch_related:内部就是子查询,同样也会将数据全都封装到对象中
    select_related与prefetch_related各有优缺点,具体用谁得结合实际情况
    '''
    

    数据库三大设计范式

    第一范式(1NF)

    '''第一范式书面话:必须保证数据库表的每一列都是不可分割的基本数据项
    大白话:必须保证每张表的每个列都不可再分的
    '''
    总表:订单号、订单日期、顾客编号、顾客名字、顾客地址所在城市(地址、城市)、联系电话、商品编号、商品名、商品价格
    按照第一范式分表:
    1NF->表:订单号、订单日期、顾客编号、顾客名字、地址、城市、联系电话、商品编号、商品名、商品价格
    

    第二范式(2NF)

    '''第二范式书面话:必须满足第一范式
    				保证每一行都要有唯一标识存在,
    				这个唯一属性列被称为主关键字或主键、主码。
    				实体的属性完全依赖于主关键字。
    大白话:必须满足第一范式,必须保证每张表内都有主键,且非主键字段必须依赖主键字段
    '''
    1NF->表:订单号、订单日期、顾客编号、顾客名字、地址、城市、联系电话、商品编号、商品名、商品价格
    按照第二范式分表:
    2NF->表1:订单号、订单日期、顾客编号、顾客名字、地址、城市、联系电话
        表2:订单号、订单日期、商品编号、商品名、商品价格
    

    第三范式(3NF)

    '''第三范式书面话:关系模型满足第二范式,所有非主属性对任何候选关键字都不存在传递依赖。
    大白话:必须满足第二范式,必须保证表内的每一列都是与主键存在直接联系的。
    '''
    2NF->表1:订单号、订单日期、顾客编号、顾客名字、地址、城市、联系电话
        表2:订单号、订单日期、商品编号、商品名、商品价格
    按照第三范式分表:
    3NF->表1:订单号、订单日期、顾客编号
    	表2:顾客编号、顾客名字、地址、城市、联系电话
        表3:订单号、订单日期、商品编号
        表4:商品编号、商品名、商品价格
    
  • 相关阅读:
    Spring Boot使用事务不起作用
    Spring的相关注解
    Spring Boot应用启动的三种方式
    Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
    Mysql密码忘记怎么修改?
    第二篇Scrum冲刺博客
    第一篇Scrum冲刺博客
    团队作业4——项目冲刺
    团队作业3--需求改进&系统设计
    项目规范
  • 原文地址:https://www.cnblogs.com/guanxiying/p/13033536.html
Copyright © 2011-2022 走看看