映画に関する情報を MySQL データベースに保存しています。私はすべての映画にジャンルを持たせたいと思っています。ただし、映画のジャンルには複数の値がある場合があります (「アクション」と「コメディ」など)。そのような情報を保存する最良の方法は何ですか? 映画 (列: "タイトル"、"年" など) を含むテーブルと、ジャンルを含むテーブルの 2 つのテーブルを作成することをお勧めします。ジャンル テーブルはどのようになりますか?
1182 次
2 に答える
4
実際には、多対多のリレーションを作成するには 3 つのテーブルが必要です。1 つは映画用、1 つはジャンル用、もう 1 つはリレーション用です。
例えば:
Table film:
- id (PRIMARY)
- name
- year
- ....
Table genre:
- id (PRIMARY)
- name
Table film_genre:
- id_film (PRIMARY)
- id_genre (PRIMARY)
于 2013-07-03T13:07:01.863 に答える
0
論理的にジャンルは静的データです。このような場合、1 つのフィールドに複数の値を格納できます。このために必要なテーブルは 2 つだけです。映画 (動的) とジャンル (静的)。
テーブルのジャンルには 2 つのフィールドしかありません。
- name
- bit
したがって、Genres テーブルには、次のような事前定義された静的データがあります。
Comedy - 1
Horror - 2
Action - 4
Porn - 8
Dram - 16
テーブル フィルムは次のようになります。
- i_film
- name
- year
- genre
- ...
フィールドFilms
.genre には、ジャンルをビット マスクとして格納する必要があります。
例えば:
ジャンル = 4 は、この映画がアクションであることを意味します
ジャンル = 5 - ジャンルはアクションとコメディ
ジャンル = 7 - ジャンルはアクション、ホラー、コメディ
ジャンル = 9 - ジャンルはポルノとコメディ
等
ジャンル別に映画を入手するには、次のことが簡単にできます。
SELECT * FROM Films WHERE (genre & 8) > 0 - all Porn films
SELECT * FROM Films WHERE (genre & 1) > 0 - all Comdey films
于 2013-07-03T13:27:46.770 に答える