产品变体的数据库结构

时间:2012-07-22 18:37:31

标签: php mysql

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

目前的结构如下:

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

字段'price'和'stock_level'现在需要与每个产品变体相关。

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

  1. 产品编号5 - 尺寸:小,颜色:黑色
  2. 产品编号5 - 尺寸:小,颜色:棕色
  3. 在前端有两个下拉菜单可供选择(尺寸和颜色)。选择所需的变体后,这些值将发布到PHP脚本,该脚本运行SQL查询以检查该特定变体组合是否可用。

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

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

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

      table variant_type_value
      ========================
      id
      name
      variant_type_id
      
    3. 我正在努力想出用于存储产品变体组合(包括其价格和库存水平)的表格的设计。

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

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是拥有一张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的多个外键。

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