【问题标题】:Database structure for product variants产品变型的数据库结构
【发布时间】:2012-07-22 18:37:30
【问题描述】:

我正在升级网站以启用产品变体 - 目前该网站仅提供独立产品,但现在需要提供特定产品的变体,例如大小或颜色。目的是使站点管理员能够轻松插入/编辑产品变体。

目前的结构如下:

table product
=============
id
name
description
category_id
price
stock_level

“价格”和“库存级别”字段现在需要与每个产品变体相关。

一个产品可以有多种变体组合,例如:

  1. 产品 ID 5 - 尺寸:小号,颜色:黑色
  2. 产品 ID 5 - 尺寸:小号,颜色:棕色

在前端有两个下拉菜单可以选择变体(尺寸和颜色)。选择所需的变体后,这些值将发布到 PHP 脚本,该脚本运行 SQL 查询以检查该特定变体组合是否可用。

我正在努力为此想出一个解决方案。我目前创建了以下功能,我认为这是起点:

  1. 能够创建/编辑变体类型,例如尺寸或颜色:

    table variant_type
    ==================
    id
    name
    
  2. 能够为变体类型分配值,例如小号、大号、黑色、棕色:

    table variant_type_value
    ========================
    id
    name
    variant_type_id
    

我正在努力设计用于存储产品变体组合(包括它们的价格和库存水平)的表格。

请记住,在后端,将有一个“添加新变体”表单 - 在此表单上,管理员需要选择“尺寸”、“颜色”、“价格”和“库存水平”添加/编辑变体。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我认为最简单的方法是使用 Product 表;通过包含 Product 表以及 Size 和 Color 表的外键,其中将包含变体的所有详细信息:

    table variant
    =============
    variantID
    productID
    sizeID
    colourID
    stock
    price
    
    table product 
    ============= 
    id 
    name 
    description 
    category_id 
    
    table size
    ==========
    sizeID
    sizeName
    
    table colour
    ============
    colourID
    colourName
    

    因此,您可以通过将所有四个表连接在一起来获取变体的详细信息。与产品相关的信息一般放在product 表中,您可以通过创建新表并将它们链接到variant 表中来添加额外类型的变体。

    编辑添加:

    这样,如果您想添加新类型的变体,则需要添加额外的表格。您还可以通过将所有变体可能性合并到一个变体表中来解决它:

    +--+------+------+
    |ID|Type  |Option|
    +--+------+------+
    |1 |Colour|Brown |
    |2 |Size  |Small |
    +--+------+------+
    

    然后,您将在主产品表中拥有来自 variantInfo 的多个外键。

    我不喜欢这样 - 我不喜欢在同一个表中存储多种类型的信息。我只是觉得这很混乱,你需要让编程逻辑更复杂。如果您想拥有额外的变体类型,我建议您现在就将它们全部设置好 - 这有点额外的工作,其中一些不会被使用,但我认为它更容易维护。

    【讨论】:

    • 这听起来不错,但是它不允许站点管理员添加/编辑变体类型。它只能在一组固定的变体上工作..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2020-06-08
    • 1970-01-01
    相关资源
    最近更新 更多