web-dev-qa-db-ja.com

データベース構造で異なる属性を持つ製品をどのように処理する必要がありますか?

PHPで構築されたeコマースサイト(Webアプリケーション)があります。

製品には、携帯電話、Tシャツ、時計、本など、さまざまな種類があります。

  • mobileは、たとえばram、モデル名、osなどの属性を持つことができます。 -)。
  • tシャツには、たとえばcolor、sizeなどの属性を含めることができます。 )。

私の質問は次のとおりです。

  1. すべての属性をProductsと呼ばれる単一のテーブルに保存する方が良いですか(多くの'NULL'マークが作成される場合でも)?

  2. MobilesTshirtsなどのさまざまなテーブルにさまざまなタイプの製品を保存しますか?

2番目のケースでは、さらに多くのテーブルが作成されます。以下の2つの画像を参照してください。

Diagram 1

Diagram 2

コメントで示唆されているように、私はEAVモデルを使用しているので、次のデザインを描きました[画像3]:

enter image description here

回答で提案されているように、eavの代わりに、3つのテーブルすべてを1つのテーブルにproduct_information + attributes_list + attributes_values = products informationとして結合しました。すべてを1つのテーブルに描画しました[画像4]:

enter image description here

画像3または画像4を使用する必要があるかどうかを教えてください。

1

あなたにもできることは、次のとおりです。 product_id、property、valueの3つの列を持つテーブルを作成します。したがって、必要以上のテーブルは取得できません。しかし、それは好みの問題です。

1
Chris R.