V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Sponsored by
LinkedIn
不坐班的神仙工作 · 去任何你想去的地方远程,赚一线城市的工资
2000 个不用出门 Social 的全球远程工作,帮助 V2EX 的小伙伴开启全新的工作方式。
Promoted by LinkedIn
hyesun
V2EX  ›  问与答

电商平台中,商品 SKU 模型的前后端交接是怎样实现的?

  •  
  •   hyesun · 2015-05-24 01:19:07 +08:00 · 3787 次点击
    这是一个创建于 2684 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于 SKU 的数据库模型,我是这样设计的:

    ProductSKU:
        id
        product_id
        spec_list
    
    SpecKey:
        id
        name
    
    SpecValue:
        id
        spec_key_id
        name
    

    举个例子,有个商品叫做“衣服”,这个商品的 id 是1。“衣服”下有一个 SKU,具体规格是:size, xxl ; color, red。那么上述三张表分别会有如下数据行:

    SpecKey:
    id            name
    10            size
    20           color
    
    SpecValue:
    id           spec_key_id          name
    30                10                      xxl
    40                20                      red
    
    ProductSKU:
    id                product_id            spec_list
    50                     1                '10:30,20:40'
    

    可以看出,一个 spec_key (即规格名,例如“颜色”)是跟一个商品关联的,而一个spec_value(即规格值,例如“红色”)是跟一个 spec_key 关联的,也因此是跟某个商品关联的。spec_list 记录的是当前 SKU 所具有的规格名和对应的规格值。

    现在想做出这样的页面,页面给出所有的规格,商家在后台修改商品时,通过勾选不同规格组成不同的 SKU,并填写价格等信息。

    后端会把所有 SKU 信息传给前端。在这个页面中,勾选不同的规格,会组合成不同的 SKU。一开始我是这么考虑的,把每个 SKU 在数据库中的 id 传给前端,这样用户修改了某个 SKU 的信息,前端会把它的 id 返回给后端,那么后端可以根据 id 来修改 SKU 信息。
    可是如果用户在修改商品SKU的过程中,可能把某个 SKU 删掉了,又新建了一个,那么后端需要知道哪些被删,哪些新建。
    我不了解前端,不知道应该怎么实现这个过程。我看了一下微信小店的代码,发现 post 给后端的数据中并没有关于哪些被新建,哪些被删除的信息。所以我现在想到的最坏的办法就是:每次把数据发给前端,都把 SKU 从数据库删除(或标记删除);当前端 post 数据给后端时,全部新建。

    求大神赐教

    1 条回复    2015-05-24 22:01:43 +08:00
    haython
        1
    haython  
       2015-05-24 22:01:43 +08:00
    SKN->SKC->SKU
    SKN-->衣服
    SKC-->蓝色衣服
    SKU-->M码蓝色衣服
    反正我是这样理解的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1815 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 16:59 · PVG 00:59 · LAX 09:59 · JFK 12:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.