我尝试为以下目的设计 mysql 表。该站点是关于属于一个或多个主题的任何主题和项目 - 例如让我们以“蝙蝠侠”为主题。为此,有属于几个类别的项目 -电影、书籍、视频游戏和汽车(Batmobil)。类别数为 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
到目前为止,我认为这是一个很好的解决方案(或者我错了吗?)
但我的两个问题如下:
我的表格设计中的电影演员和书籍作者不被视为项目。对于演员和作家,有一个表Person和Item-Person 表,用于将项目与人员连接起来。但是,如果主题是“斯蒂芬·金”呢?我应该如何搜索斯蒂芬·金为他写的场景的书籍和电影?我想到的唯一方法是改变桌子设计并将人也视为物品。这是个好主意吗?这个问题的表设计解决方案是什么?您能否告诉我,使用适当的表格设计匹配主题和项目的一般查询应该如何?
我想在一页上显示属于一个主题的所有带有详细信息的项目(存储在Movie、Book、VideoGame ......) - 我可以使用的最佳查询是什么?
非常感谢您的任何回答!