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.石の価格

などなど....私は石のような非常に多くの属性を持っているので、これらの属性のテーブルを設計する方法を教えてください。

その属性に応じて、フロントエンドで製品を検索 (FILTER || ファセット検索) する必要があります。

のように: 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 

このようにして、1つのテーブル内で属性レベルの採用を行うことができます。

于 2012-08-11T12:42:35.437 に答える