1つの作品に、複数のキャストを格納するデータベースの構造について

2020年5月19日

映画作品の場合、1つの作品に対して、複数の出演者がいます。データベースでキャストと出演者の組み合わせを保存するにはどのような形がいいか考えました。

もともと組込エンジニアな上に、ハード周りのドライバ開発を中心に実務をこなして来たので、データベースはサッパリです。しかし、WEBサービスを作る上でデータベースは避けて通れないので、触りだけでも知らないとダメだと思ったので、ネットで調べました。

マルチカラムアトリビュートとは?

データベースのレコード対して、複数の可変の列が存在するものを、マルチカラムアトリビュートと言うそうです。僕が表現しようとしているものも、1つの作品に複数の出演者がいるので、マルチカラムアトリビュートだと思います。

たとえば、作品Aの出演者には、主人公:sさん、ヒロイン:hさんなど複数のキャストが有ります。この情報を1つのレコードに入れると、処理が煩雑になってしまうので何とか別の方法を取りたいところです。

結論:キャストを保存するケーブルを使って作品IDと一緒に入れることにした

作品を保存してテーブルとは別に、キャストを保存するためのテーブルを作成してそこに入れることにしました。

作品ごとにIDを切るつもりでいるので、作品配置に関して、キャラクター的出演している俳優さんの名前を入れるレコードを作ることにします。そうすることで、例えば芸能人の出演作品と言うページを作るときに、このテーブルから先にIDを逆引きすることもできるようになるからです。

データベース構造の具体例

素人ですが、自分が作成したデータベースの構造は以下。タイトルのIDをプライマリーキーにして、内容によってデータベースを分けている感じです。

タイトルごとにタイトルIDを割り当てます。作品タイトルの中1つでその情報はこちらにカラムを追加

title_id(PK), title, produce_year, img_url

キャラクター名などは複数情報になるので、別のテーブルを作ってタイトルIDごとにキャラクター名と出演者名を登録するようにします

title_id(PK), charactor_name, actor_name

サポートしているようでサービスも、今後どんどん増えていく想定なので、タイトルIDごとにレコードを追加していく形にしています

title_id(PK), support_vod, target_url

各作品のエピソードごとにコメント等の内容を切り替えたいので、コメントを登録するテーブルを1つ作成しました。サイトのIDとエピソードIDをプライマリーキーにして、複数のコメントを記載できるようにしています

title_id(PK), episode_no(PK), sex, old, comments

参考URL

database

Posted by きむら