の一品、私は記事名「テスト記事」を持っているカテゴリ1に追加する必要があり、カテゴリ2 この私は例えば、複数のカテゴリ に記事を追加する必要があり、複数のカテゴリ
のためのテーブルへの関係を作る方法を知っておく必要があります注記:過去に私が記事データベースのテーブル名「カテゴリ」内の行を作成して、1,2,3のようにカテゴリIDを追加しますが、検索して、リスト内のこのメイク問題はあなたが多くを持っている
の一品、私は記事名「テスト記事」を持っているカテゴリ1に追加する必要があり、カテゴリ2 この私は例えば、複数のカテゴリ に記事を追加する必要があり、複数のカテゴリ
のためのテーブルへの関係を作る方法を知っておく必要があります注記:過去に私が記事データベースのテーブル名「カテゴリ」内の行を作成して、1,2,3のようにカテゴリIDを追加しますが、検索して、リスト内のこのメイク問題はあなたが多くを持っている
あなたは3つのテーブルが必要です
categories
articles
のために、我々はそれcategories_per_article
を呼ぶかもしれません。このテーブルは、しばしばJunction table or a Association tableと呼ばれます。例データ:
ARTICLES
ID | Name | Description
1 | Fuzz | A fuzzy three
2 | Bizz | A five that means bizznezz
CATEGORIES
ID | Name
1 | Prime numbers
2 | Multiples of five
3 | Smaller than four
CATEGORIES_PER_ARTICLE
ID | ARTICLE_ID | CATEGORY_ID
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 1
あなたは私たちがmany-to-many relationship(またはnにこれを呼んでその記事1(ファズ)は三つのカテゴリーがあり、第2条(Bizz)が唯一のカテゴリ1を持って表示されます記事1に複数のカテゴリがあり、カテゴリ1が複数の記事で使用されているため、ERやUMLなどの-n)
このスキーマを使用してすべてのクエリを実行できます。具体的な例については、How do I get all articles which have categories 1 and 3 but not 2
のようにコメントしてください。
について私を助けてください多対多の関係:記事は複数のカテゴリを持つことができ、カテゴリは明らかに複数の記事を持つことができます。これは、エンティティ間の関連付けを明示的に格納するテーブルが少なくとも1つもないと正しく表現できません。
記事とカテゴリのリンクはn対nの関係です。
記事は複数のカテゴリに属することができ、カテゴリは複数の記事に関連付けることができます。
SQLはn対n関係を直接サポートしていないため、リンクテーブルが必要です。
Table article_cats
------------------
cat_id integer,
article_id integer,
primary key (cat_id, article_id)
あなたはそのようにのような記事をリンク:
SELECT a.name, GROUP_CONCAT(c.name) as cats
FROM articles a
LEFT JOIN article_cats ac ON (a.id = ac.article_id)
LEFT JOIN cats c ON (c.id = ac.cat_id)
GROUP BY a.id