我们有一个购物车,如下图所示,设置运行良好,除了一个致命的缺陷.如果您下订单该订单与产品相关联,那么如果我在您购买产品后更新产品,我就无法向您展示您希望产品在购买时的样子(包括价格).这意味着我们需要版本控制.
我目前的计划是,在创建新产品或变体或编辑现有产品或变体时,在数据库中创建产品或变体的副本.购买时,将订单链接到版本,而不是产品.
这似乎相当简单,除了我可以看到的,我们不需要版本的唯一事情是类别(因为没有人关心它的类别).所以我们需要版本:
>产品
>变种
>关键 – >每个版本的值属性对
>图像
我目前的想法是,
note: When a product is created a default variant is created as well, this cannot be removed.
>创建产品时
>将产品插入产品表.
>创建默认变体
>将产品复制到products_versions表中
>使用product_id列替换当前id列
>添加id列
>将变体复制到variants_versions表中
>将当前id列替换为variant_id列
>添加id列
>将product_id列替换为product_version_id列
>编辑产品时
>将产品更新到产品表中.
>将产品复制到products_versions表中
>使用product_id列替换当前id列
>添加id列
>将所有产品变体复制到variants_versions表中
>将当前id列替换为variant_id列
>添加id列
>将product_id列替换为product_version_id列
>将所有variant_image_links复制到variant_Image_link_version表中
>将当前variant_id列替换为variant_version_id列
>添加变体时
>将变体添加到变体表中.
>将产品复制到products_versions表中
>使用product_id列替换当前id列
>添加id列
>将所有产品变体复制到variants_versions表中
>将当前id列替换为variant_id列
>添加id列
>将product_id列替换为product_version_id列
>编辑变体时
>更新变体表中的变体.
>将产品复制到products_versions表中
>使用product_id列替换当前id列
>添加id列
>将所有产品变体复制到variants_versions表中
>将当前id列替换为variant_id列
>添加id列
>将product_id列替换为product_version_id列
>将所有variant_image_links复制到variant_Image_link_version表中
>将当前variant_id列替换为variant_version_id列
所以最终结构看起来像Full Size
现在这一切看起来都很棒,除了它似乎是很多重复数据,例如如果我们更新产品,我们会复制变体,即使它们在插入后也没有更新过.此外,这似乎很多工作.
有没有更好的方法呢?