美文网首页
yk产品表重构

yk产品表重构

作者: ikin | 来源:发表于2017-05-08 14:30 被阅读0次

    一、背景介绍
    前期工程师/产品经理没有考虑到产品结构变化。把产品的库存、价格设置属性放置到一张表里面,即成为横向表(这为后期产品结构拓展带来很大的不方便)。所以,因旅游电商产品需求变更,需将产品横向表重构为纵向表。

    二、SKU属性设计方式

    1. 维护一个销售属性表(SKU表)
      a. 每个SKU属性表独立维护SKU属性和选项。
      b. SKU属性的命名一般和分类相关。
      c. 扩展点:SKU属性集合和商品分类关联,这样避免在添加商品时列出太多的SKU属性集。
    2. 商品sku表
      基于sku维护商品的库存、价格

    3.当我们添加一个商品的时候,在不考虑页面展现的情况下需要这几步:
    a.插入商品基本信息到商品表
    b.插入商品属性到属性表
    c.插入销售属性到销售属性表
    d.插入销售属性ID组合,数量,价格等到商品SKU表。
    三、开始重构
    1. 按需求提取可能会变的基本属性字段
    2. 提取销售属性字段
    3. 根据销售属性字段创建sku
    四、订单表设计
    1、商品基础属性及库存(SKU)
    2、订单以及订单详情(Order & OrderItems),OrderItems 里面的记录价格必要的冗余信息,同时关联
    上快照id(即 以下方案a 和方案b结合)。
    订单内商品数据应该怎么保存?
    方案a
    在订单创建的时候直接把商品数据保存在订单里面,作为订单的一个附属字段
    这样子后续修改商品,不会对已经在订单内的商品任何影响
    问题:如果商品修改不频繁的情况下,会大量增加订单数据的大小,同一个商品下10单,10个单里面都
    有商品数据(特别是需求显示商品的字段较多时,比如规格,产地,单位等等等等)
    方案b
    在订单创建的时候,对商品生成一个快照存在一个商品快照表中(同一个商品可含多个快照,订单创建
    时判断商品快照是否为最新,最新则不新生成快照),订单内存储商品快照ID,显示订单商品时,用ID
    去取商品快照显示
    这样子后续修改商品,不会对已经在订单内的商品任何影响,
    问题:比如订单只保存最近一年,一年以前订单自动归档,那商品快照表就需要单独处理判断商品的快
    照是否该归档,如果商品快照不定期归档,数据量会无限变大
    方案c
    创建订单直接保存商品ID,显示商品的时候在去商品表里查询商品
    这样子最节省空间

    参考文档:http://www.cnblogs.com/mmmjiang13/archive/2011/04/21/1983079.html

    相关文章

      网友评论

          本文标题:yk产品表重构

          本文链接:https://www.haomeiwen.com/subject/qimmtxtx.html