質問: 下記のような場合のデーブルの設計について教えてください。 ・管理するデータは映画情報 ・複数条件で検索するのに、適した構造にしたい 映画ですと、監督、出演者、ジャンルなど、色々な属性がありますが、 それを単純にひとつのテーブルで管理しようとすると下記のようになります title | kantoku | cast | genre ───────────────────────── e.t. | Steven Spielberg | Mary,Elliott | SF 上の例の「cast」の部分に人名が2名分入っています。 これだとselectでデータを取得する際にlikeなどを使う必要がでて あまり効率のよい取得ができないように思います。 そこで、このような一つの項目に対して、複数のデータがある場合の 効率的なテーブル設計は、どのようなものでしょうか ※例で言う「cast」のような項目が複数あっても、対応できる設計。
回答: >もう少し具体的に言うと「maryとelliott両方が出演している映画」という条件で抽出したい場合などです。 検索の仕方の考え方として説明します。 まず maryで抽出します。 そうすると たとえば cinema_no | cast 1 | mary 2 | mary 3 | mary となったとします。 もとのテーブルの場合は e.t. | Steven Spielberg | Mary| SF 映画A | 監督A | Mary| A 映画B | 監督B | Mary| B 次に elliottで抽出します。 cinema_no | cast 2 | elliott 3 | elliott 4 | elliott もとのテーブルの場合は e.t. | Steven Spielberg | elliott | SF 映画B | 監督B | elliott | B 映画C | 監督C | elliott | C それぞれ抽出したものを 仮想のテーブルとして扱い、両方のテーブルでキーが一致するものを 抽出すれば「maryとelliott両方が出演している映画」という条件の抽出になります。