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:商品编号、商品名、商品价格
原文地址:https://www.cnblogs.com/guanxiying/p/13033536.html