各製品がMySQLで複数のカテゴリに属する​​製品テーブルを作成するには?

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

categories (id int, name varchar(1000))

そして

products (id int, name varchar(1000))

各製品は複数のカテゴリに分類できます。セミコロンで区切られたカテゴリIDを持つテーブル 'products'にカラム "category_ids"を追加することを考えていますが、この方法はMySQLクエリには不便です。

その他の方法はありますか?

0

4 答え

カテゴリと商品を照合するテーブルを作成します。

product_id category_id
1          1
1          2
2          5
3          5
3          2

希望など:

5
追加された

下の画像のように両方の表を参照する第3の表を作る

enter image description here

2
追加された
ああ素晴らしい、私は2つのテーブル間のマッピングのこの方法を忘れることができる、私を思い出させるためのTKS
追加された 著者 jondinham,

次の2つを結ぶジャンクション・テーブルを追加します。

**product_categories**
productid (FK ref product.id)
categoryid (FK ref categories)
2
追加された

それは多かれ少なかれ多くの関係にあるようです....

多対多の関係をマップするために、別のテーブルが必要になります

categories_products(id, category_id, product_id) 

1つの製品には多くのカテゴリがあり、同様に1つのカテゴリには多くの製品があります。

製品テーブルは、categories_productsテーブルと1対多の関係を持ちます。 Categoriesテーブルには、categories_productsテーブルとのリレーションシップも1対多にあります

多対多の関係を実装するための標準的な方法です

1
追加された
(category_id、product_id)のクラスタ化されたコンポジットプライマリキーは、整合性を強化し、パフォーマンスを向上させることができます。無意味なサロゲートPKを取り除き、インデックスタイプを読み込むMySQL nosqlは正しいものを選択するのに役立ちます。 ">>> stackoverflow.com/questions/4419499/…
追加された 著者 Jon Black,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com