次の目的でmysqlテーブルを設計しようとしています。このサイトは、1 つまたは複数のトピックに属する任意のトピックおよびアイテムに関するものです。たとえば、トピック「バットマン」を取り上げてみましょう。このために、映画、本、ビデオ ゲーム、車(バットモービル)など、いくつかのカテゴリに属するアイテムがあります。カテゴリの数は 10 ~ 20 です。私の考えは、これらのテーブルを作成することです:
Topic
-------
id
name
Item
-------
id
name
category_id
decscription and some other common columns
Movie (and other categories, like Car, VideoGame, Book,...)
-------
id
item_id
specific columns for each category
Item_Topic (and other tables like Item_Category, Item_Movie, Item_Car, Item_Videogame, Item_Person...)
-------
item_id
topic_id (movie_id, car_id, person_id, ...)
Person
-------
item_id
name
role
これまでのところ、これは良い解決策だと思います (または間違っていますか?)
しかし、私の2つの問題は次のとおりです。
テーブル デザインの映画の俳優と本の著者は、アイテムとは見なされません。俳優と作家の場合、アイテムと人物 を接続するテーブルPersonとItem-Personテーブルがあります。しかし、話題が「スティーブン・キング」だったら?スティーブン・キングがシナリオを書いた本や映画を探すにはどうすればよいですか? 私の頭に浮かんだ唯一のアプローチは、テーブルのデザインを変更し、人もアイテムと見なすことです. それは良い考えですか?この問題のテーブル設計ソリューションは何ですか? また、適切なテーブル設計を使用してトピックとアイテムを一致させるための一般的なクエリはどのように見えるべきか教えてください。
1 つのトピックに属する詳細情報 ( Movie、Book、VideoGameなどに保存されている) を含むすべてのアイテムを 1 ページに表示したい - 使用できる最適なクエリは何ですか?
回答ありがとうございます。