需求

数据库表关系

产品表->sku表->经销权表

sku表:

     产品表的外键一个产品对应多个sku sku是产品的最小单位

     经销权表 维护 哪些经销商有这个sku的销售权

 

需求:

     1.经销商进入下单页面只能看到他经销范围里面的产品

     2.默认根据当前经销商的历史购买量来进行排序

     3.可以根据产品名称 发货工厂 销售组织进行二次搜索

     4.后续可能变动的需求:

        (1)产品剩余库存排序、产品总销量的排序(或者只显示有货产品) 

        (2)选择产品后 sku剩余库存量显示 或者sku按剩余库存或者销量排序等

三种建模方式:

       方式一:根据ES nestedObject 描述一对多多对多关系      

{
 "产品id":"",
  "产品名字":"",
  "产品SKU":[
     "skuid":""
     "sku库存":"",
     "sku销量":"",
     "SKU经销权":[
         {"经销商编号":"1","购买量":"","发货工厂":"","销售组织"},
         {"经销商编号":"2","购买量":"","发货工厂":"","销售组织"}
//。。。。。 ] ], "产品总销量":"", "产品总库存":"", ] }

会导致的问题:

     一个爆款产品   3个sku  系统有6000个活跃经销商    每个sku这6000个经销商都有销售权  导致整个文档过于庞大

 

方式二 以经销商销售权为纬度单条保存数据

经销商 产品id 产品sku 购买量 发货工厂
         

导致问题 无法维护产品总库存 sku总库存(无法满足以上4需求)

方式三 parent->childrens 结构

6.*之前是_parent关系  6.*之后移除 增加join类型描述 1对多 多对多关系

父子文档都是独立文档 类似数据库外键

需求

 

 

 可以单独查询产品表  产品sku  经销商销售权

可以根据sku产品  根据产品查sku  

可以理解就是关系型数据库的相关操作

经过测试可以根据子文档找对应所有父文档并且能够根据子文档的条件排序

好处:

    可维护性和可扩展性更强

待测试点:

     需求需要根据孙子级文档(经销权)的购买量来排序父文档

上一篇:2019-02-18


下一篇:MongoDB 集合间关联查询后通过$filter进行筛选