我正在为珠宝网站设计数据库,其中有很多产品会存储。在为我坚持的产品属性设计表时。我的问题是如何在数据库中存储产品属性和子属性等。
到目前为止,我已经为产品和属性创建了3个表 -
tbl_attribute
Structure: attribute_id*, attribute_name
tbl_products
Structure: product_id*, category_id(FK), product_name, seo, description, metatags, length, width, height, weight, image, status
tbl_products_attribute
Structure: product_id(fk), attribute_id(fk), value
我有一种情况,假设项链有5个宝石(石头是属性),每个宝石都有以下子属性 1.石头名称 2.石头颜色 3.石材处理方法 4.石头清晰度 5.石头形状 6.石头价格
等等....我有像石头这样的很多属性所以,请你帮我设计一下这些属性的表格。
取决于我必须搜索(FILTER ||分面搜索)前端产品的属性。
详细属性和子属性列表:
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
到目前为止,我已经在网上搜索了这么多的教程和文章以及堆栈溢出。
非常感谢您的帮助。
答案 0 :(得分: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
通过这种方式,您可以在一个表格中使用属性级别。