1

列を持つ「映画」テーブルを作成する必要があります。

ID  Title  Description  Category etc

そして、たとえば「Movie_Categories」と呼ばれる別のものを含みます

ID  Category
1   Action
2   Adventure
3   Triller

しかし、テーブル映画のカテゴリには複数の選択肢があるため、これを行う正しい方法は何ですか?

この投稿で誰かが言ったようにコンマ区切りの値を使用する必要があります MySQL の列に複数の値がありますか、それとももっと良い方法がありますか?

4

3 に答える 3

3

これは多対多の関係です。

正しくするには、次のような結合テーブルが必要です。

CREATE TABLE film_category (
  category_id int,
  film_id int,
  PRIMARY KEY (category_id, film_id)
);
于 2013-10-17T13:05:36.290 に答える
1

コンマ区切りの値は使用しないでください。一度もない。

そうは言っても。いわゆる多対多の関係、つまり、1 つのカテゴリに多くの映画があり、1 つの映画に多くのカテゴリがあるという関係がある場合は、常に追加のテーブルを生成する必要があることに注意してください。

このテーブルは、他の 2 つのテーブルのそれぞれの主キーのみを必要とし、複合キーを持ちます。

したがって、スキーマは次のようになります。

  • 映画( ID、タイトル、説明、カテゴリ)
  • カテゴリ( ID , カテゴリ)
  • Movies_Categories( ID_Movie , ID_Category )

太字は主キーです。

映画のすべてのカテゴリを取得するには、3 つのテーブルのそれぞれに参加する必要があります。

多値フィールドを持つことについての最後のコメントは、テーブルが第 1 正規形ではないということです。遅かれ早かれ、多くの頭痛の種になります。

于 2013-10-17T13:06:35.080 に答える
0

最後に行うことは、カンマ区切りの値を格納することにより、正規化されていないテーブルを作成することです。 *テーブル ムービーとカテゴリ用のテーブルが必要です。movieId を categoryId にマップするマッピング テーブルを作成する必要があります*

于 2013-10-17T13:06:25.780 に答える