2

私は2つのテーブルで映画データベースを構築しています。1つは映画の名前を含み、もう1つは俳優の名前を含みます。データを相互参照するにはどうすればよいですか?

たとえば、映画名テーブルのエントリに各映画の俳優のリストを含める必要がありますか、それとも俳優名テーブルのエントリに俳優の映画のリストを含める必要がありますか?

4

3 に答える 3

3

2 つをリンクし、少なくとも映画 ID と俳優 ID を列として含む追加のテーブルが必要になります。Actorsテーブルがactor_id主キーとしてあり、主キーとしてMovies持っていると仮定しますmovie_id。このテーブルには、その映画に固有の俳優に関する情報 (キャラクターの名前やその他のキャラクター関連情報など) を含めることもできます。

CREATE TABLE actors_in_movies (
  /* Use whatever auto increment keyword is needed for your RDBMS */
  id INT NOT NULL PRIMARY KEY <auto increment>,
  actor_id INT,
  movie_id INT,
  character_name VARCHAR(),
  other_character_info VARCHAR(),
  character_best_quote TEXT,
  FOREIGN KEY (actor_id) REFERENCES actors (actor_id),
  FOREIGN KEY (movie_id) REFERENCES actors (movies_id)
);

俳優が出演するすべての映画をクエリするには、

次の効果を得るために何かを使用します。

SELECT
  actors.*,
  movies.name
FROM
  actors 
  JOIN actors_in_movies ON actors.actor_id = actors_in_movies.actor_id
  JOIN movies ON movies.movie_id = actors_in_movies.movie_id
WHERE actors.actor_id = <some actor id>

特定の映画のすべての俳優を照会するには、

次の効果を得るために何かを使用します。

SELECT
  actors.*
FROM
  actors 
  JOIN actors_in_movies ON actors.actor_id = actors_in_movies.actor_id
  JOIN movies ON movies.movie_id = actors_in_movies.movie_id
WHERE movies.movie_id = <some movie id>

actors_in_movies映画に俳優を追加するには、テーブルに行を挿入します。

INSERT INTO actors_in_movies (actor_id, movie_id) VALUES (..., ...);
于 2012-04-30T19:00:06.283 に答える
1

クロステーブルを使おう!movieID、actorID の 2 つの列のみを持つテーブルを用意します。

于 2012-04-30T18:59:55.977 に答える
0

という名前の 3 番目のテーブルが必要ActorInMovieです。このテーブルには 2 つの列が必要です。ActorID, MovieID.

このようにして、多対多の rel を持つことができます。

于 2012-04-30T19:00:09.310 に答える