1

我正在为珠宝网站设计数据库,其中将存储很多产品。在为产品属性设计表格时,我卡住了。我的问题是如何在数据库中存储产品属性和子属性等。

到目前为止,我已经为产品和属性创建了 3 个表 -

  1. tbl_attribute

    Structure: attribute_id*, attribute_name
    
  2. tbl_products

    Structure: product_id*, category_id(FK), product_name, seo, description, metatags, length, width, height, weight, image, status
    
  3. tbl_products_attribute

    Structure: product_id(fk), attribute_id(fk), value
    

我有一个情况假设项链有5个石头(石头是属性),每个石头都有以下子属性1.石头名称2.石头颜色3.石头处理方法4.石头净度5.石头形状6.石头价格

等等等等……我有很多属性,比如石头,所以你能帮我设计一下这些属性的桌子吗?

取决于我必须在前端搜索(过滤器 || 分面搜索)产品的属性。

喜欢:www.firemountaingems.com


详细属性和子属性列表:

Alphabatical
Availability (Sold Individualy, Sold in Bulk)
Birth Stone
Brands
Color (red, green, blue)
Design Type
Gender (Male, Female)
Images 
Karat (18k, 22k, 24k)
Link
Make (Hand, Machine, Oxidised)
Making Percent
Material Type (Leather, Gemstone, etc)
Metal Art
Metal Stamp
Metal Type (Gold, Silver, PLatinum etc)
Model
Name
Price
Purity
Shapes (round, oval, emerald, diamond etc)
Short Description
Sides (single, both,)
Size (small, big etc)
Special Price
Status
Stone (Name, Color, Treated Method, Clearity, Shape, Price, Main Stone Color (Red, Pink, Green))
Stringing Material
Warranty
Wastage Percent
Weight
Wire - Wrapping Wire

到目前为止,我已经在网上搜索了很多教程和文章以及堆栈溢出。

非常感谢您的帮助。

4

1 回答 1

1

在这种情况下,您无法负担创建这样的表,最好的方法是只有 1 个产品表和 1 个属性表,它们将具有产品的所有属性,但具有列 attribute_level 和 parent_id,其中 parent_id 指的是同一张表的 id。

示例:产品表:

ID | Name
----------
1  | Necklace


ID | ParentID | AttributeName | ProductID | AttributeLevel | AttributeDescription
----------------------------------------------------------------------------------
1  |          | Stone         | 1         | 1              | stone description in general
2  | 1        | StoneName     | 1         | 2              | Ruby 

通过这种方式,您可以在一个表中对属性级别进行分级。

于 2012-08-11T12:42:35.437 回答