1

プロジェクトの基本的な映画オンラインストアを作成しています。ユーザーがジャンル別に映画を選択できるようにしたいと考えています。例:

  • 全て
  • テロ
  • アクション
  • ドキュメンタリー
  • サイエンスフィクション
  • ..。  

この構造に一致するようにデータベースに映画を保存するための最良の方法は何ですか。

ファーストウェイ

映画をジャンル別に並べ替えて、別々のテーブルを作成します。つまり、アクションジャンル用のテーブル、ドキュメンタリー用のテーブル、SF用のテーブルなどです。このアプローチでは、テーブルを結合してすべての映画のリストを作成する明確な方法はありません。

第二の方法

すべての映画を1つのテーブルに配置し、ジャンルを別のテーブルに配置し、ジャンルに基づいて2つの間に外部キー関係を確立します。

Or is there another better way to do this?

Thanks in advance

4

4 に答える 4

4

性別ではなく、ジャンルを意味していると思います。:)ペ​​リキュラには性別はないと思います。個人的には、3つのテーブルを作成します。映画(Peliculas)、ジャンル、および両方のIDを含むルックアップテーブル。これにより、映画を複数の検索で表示できるようになります。たとえば、ビートルズに関する映画は、音楽とドキュメンタリーの両方のジャンルに属している可能性があります。このように、ユーザーがどちらかを検索すると表示されます。

ペリキュラ(表1)

PeliculaId
other cols (name, etc)

ジャンル(表2)

GenreId
GenreDescription

PelGenre(表3)

PeliculaId FK
GenreId FK

ペリキュラ

------------
PeliculaId  Name                    Descript
------------------------------------------------------------------------------------------------
     1  The Beatles Anthology    Documentary series on The Beatles career  
     2  The Shawshank Redemption 2 good guys in jail become friends and get back at everyone
     3  Star Wars        Farm Boy saves Galaxy

ジャンル

GenreId     Descript
----------------------------------
1           Action
2           Crime
3           Drama
4           ScienceFiction
5           Documentary
6           Music

PelGenre

PeliculaId      GenreId
------------------------
1               5
1               6
2               2
2               3
3               4
3               1
于 2012-06-07T23:12:49.620 に答える
2

2つのテーブルがあります。1つは映画用、もう1つはジャンル用です。

Movies {id, title, genre_id}
Genres {id, name}

ジャンル別にクエリするには:

SELECT * FROM Movies WHERE genre_id = ?

すべてのジャンルをクエリするには、WHERE句からgenre_idの部分を削除するだけです。

SELECT * FROM Movies
于 2012-06-07T23:11:28.977 に答える
1

あなたの最初の方法ではありません:あなたが同じような情報を複製するので、それはリレーショナルデータベースではありません。

リレーショナルになりたい場合は、2番目の方法がより適切です。1つのテーブルの映画2番目のテーブルのMovieType。

Moviesテーブルには、ジャンルの名前を一覧表示するFKtoMovieTypeが含まれています。

于 2012-06-07T23:09:00.303 に答える
1

カテゴリ表

name
id (unique)

映画テーブル

id (unique, autoincremental)
other data

リレーショナルテーブル

Cat_mov

movie_id (the id of the movie)
cat_id (the id of the categorie)
于 2012-06-07T23:11:20.493 に答える