rails db设计用于具有多个区域和多个产品变体的商店

时间:2012-09-06 07:47:26

标签: mysql sql ruby-on-rails ruby-on-rails-3 database-design

我正试图围绕这个主题,但找不到简单的解决方案。

  • 基于地区价格的产品。
  • 地区每个地区有一种货币,每个地区有一个库存。
  • 然后有产品变化,如颜色和大小,颜色应该是特殊的,因为我需要它的图像。
  • 颜色和尺寸取决于该地区的库存。
  • 产品每个地区有一个价格

也许这里有人对这个db布局有个好主意。

修改

产品

  • ID
  • 名称
  • 标识符
  • 蛞蝓

product_variations

  • ID
  • PRODUCT_ID
  • 名称
  • 尺寸
  • 图像

product_stocks

  • ID
  • 计数
  • product_variation_id
  • 的region_id

product_prices

  • ID
  • PRODUCT_ID
  • 的region_id

区域

  • ID
  • 名称
  • 蛞蝓

仍然是大小与变化有关.. 我需要一个具有多种尺寸的变体,库存也应该可以链接到基于区域的尺寸

2 个答案:

答案 0 :(得分:1)

可能是这样的:

<强> Products

  • Id
  • Name
  

产品变化,如颜色和大小,颜色。

<强> ProductVariations

  • Id
  • ProductId
  • StockId(颜色和尺寸取决于基于地区的库存)
  • Colour
  • Size
  区域每个区域有一种货币,每个区域有一种库存。

<强> Currencies

  • Id
  • Name

<强> Stocks

  • Id
  • Name
  • RegionId

<强> Regions

  • Id
  • Name
  • CurrencyId
  • StockId
  

产品每个地区有一个价格

     

基于地区价格的产品

<强> ProductPrices

  • Id
  • ProductId - &gt;产品表。
  • RegionId - &gt;地区表。
  • Price

您可能需要稍微调整此结构以适应:

  • 产品图片取决于每个产品或产品是否只需要一张图片,可以有多张图片(新表ProductImages)。
  • 您没有说明您需要的产品属性(产品差异),因为每种产品(每种产品一对多)或每种产品的属性都有很多变化。

<强>更新

  

一种尺寸也可以有库存。

在这种情况下,您可以根据需要移动ColourSizesize,例如ProductVariationOptions

<强> ProductVariationOptions

  • Id
  • Size
  • Colour

然后您的ProductVariationOptions将是这样的:

<强> ProductVariations

  • Id
  • ProductId
  • StockId(颜色和尺寸取决于基于地区的库存)
  • ProductVariationOptionsId - &gt; ProductVariationOptions

答案 1 :(得分:1)

一个地区可以通过变化获得许多产品

变体可以有多个图像

区域

  • 名称
  • 货币

产品

  • 名称

变异

  • 颜色
  • 尺寸
  • 的region_id
  • PRODUCT_ID

图片

  • variation_id

对于尺寸和颜色,我可能会使用simple_enum gem。我一直在一个我一直在做的项目上使用它并且它非常好。