0

私は e コマース Web サイトを開発していますが、データベースの設計に自信がありません。

私は3つのテーブルを持っています:

  1. 製品 (id、category_id、subcategory_id、name)
  2. カテゴリ (id、名前)
  3. サブカテゴリ (id、category_id、name)

例: 商品 (ストライプ T シャツ) は、カテゴリ (ファッション) とサブカテゴリ (T シャツ) に属しています。

この商品のサイズを追加したい場合はどうすればよいですか? 製品テーブルに別のテーブル名 'Sizes' と size_id を作成する必要がありますか?

ただし、別のカテゴリ (ガジェット/携帯電話など) にはサイズがありません。このデータベースを設計するための最良のオプションは何ですか?

4

4 に答える 4

1

まず、製品にカテゴリ ID とサブカテゴリ ID がありません。サブカテゴリにのみ属します。必要に応じて、サブカテゴリから親カテゴリを見つけることができます。

products (id, subcategory_id, name)

categories (id, name)

subcategories (id, category_id, name)

すべての製品で異なる可能性のある属性については、次のようにすることができます。

attribute_types (id, name)

attributes (id, attribute_type_id, value)

products_attributes (id, product_id, attribute_id)

したがって、attribute_types テーブルには次のようなものがあります。

id | name
-----------------------------
1  | T-Shirt Size
2  | Shoe Size (US)
3  | Colour
4  | Batteries Included

あなたの属性テーブルで:

id | attribute_type_id | value
------------------------------
1  | 1                 | Small
2  | 1                 | Medium
3  | 1                 | Large
4  | 2                 | 9
5  | 2                 | 9.5
6  | 2                 | 10
7  | 2                 | 10.5
8  | 2                 | 11
9  | 3                 | Red
10 | 3                 | Blue
11 | 3                 | Green
12 | 3                 | Yellow
13 | 3                 | Black
14 | 4                 | Yes
15 | 4                 | No

そして、products_attributes テーブルに、製品が持つ属性を追加するだけです。

id | product_id | attribute_id
------------------------------
1  | 456        | 6
2  | 456        | 13

その商品の場合、サイズ 10 の靴、ブラックです。

于 2013-10-18T12:29:31.383 に答える
0

巨大なショップ ソリューションである Magento は、EAVを使用してこれを解決します。EAV は柔軟ですが、専用テーブル ソリューションほどのパフォーマンスはありません。

あなたのカテゴリー -> サブカテゴリーはあまり意味がありません。ネストされたセットについて読むか、同じカテゴリ テーブル内で純粋な親子関係を使用します。

于 2013-10-18T10:31:02.093 に答える
0

テーブル/モデルは2つしかできないと思います。カテゴリ モデルで Tree Behavior を設定する必要があります。

class Category extends AppModel {
    public $actsAs = array('Tree'); 
}

次に、database.categories にいくつかの列を追加する必要があります。

  • 親ID
  • リフト

EAV スタイルは便利ですが、管理が難しいです。製品モデルに Containable 動作も使用して、必要なカテゴリごとに新しい種類のモデルを作成できると思います。ここの例のように:

  • db.categories hasMany db.products (ツリー動作)
  • db.products belongsTo db.categories (包含可能な動作)
  • db.eachModelYouWant (カテゴリに基づく)

Product が見つかると、bd.products と基本情報を含む配列が取得され、db.eachModelYouWant に基づく別の配列内に格納されます。

とにかく、関係 hasManyAndBelongsTo によって inStock を管理するかどうかを管理するテーブルも必要です。:-)データベースの回答を確認してみてください。セットアップがたくさんあります。

于 2013-12-14T11:13:46.903 に答える