【发布时间】:2013-11-30 05:03:07
【问题描述】:
我正在整理一个数据库,该数据库将保存有关不同媒体类型的各种媒体项目的信息。然后可以将每个媒体项添加到媒体集合中,然后可以使用该媒体集合来创建媒体滑块、画廊等。
这是一个示例数据库
media_types
-----------
id code title
1 images Images
2 videos Videos
3 files Files
gallery_items
-------------
id gallery_id mediaTypeId mediaId
1 1 1 2
2 1 3 1
3 1 2 3
images
------
id title filename
1 X-Wing xwing.png
2 Tie Fighter tie.png
3 A-Wing awing.jpg
videos
------
id title filename
1 Hoth iceplanet.wmv
2 Bespin bespin.ogg
3 Tatooine desert.mpeg
files
-----
id title filename
1 Death Star Plans bothanx.pdf
2 Millenium Falcon Schematics yt1300.pdf
3 Rebel Alliance manifesto.doc
我希望能够使用一条 MySql 语句选择特定画廊中的所有项目,但目前我只能分两步解决:
1) 从 gallery_items 表中选择具有特定画廊 ID 的所有项目
2) 通过分析mediaTypeId,从相关媒体类型表中选择item详情
在我给出的示例中,媒体类型表非常简单,共享相同的列,但实际上它们将具有不同数量的列和不同的列名称。 mediaId 上的基本连接语句不起作用,因为每个媒体类型表可以共享相同的 id。
我曾考虑在所有媒体类型中使用唯一的 mediaId,但这将强制在 gallery_items 表和我想避免的媒体类型表之间建立绝对关系(并非媒体类型表中的所有项目最终都会在媒体收藏)。也许解决方案是创建另一个表 media_items,为每个表创建一个唯一的媒体 ID,然后在每个媒体类型表中使用它?然而,我厌倦了不必要的表格扩散。
任何关于如何最好地处理此设计的建议都将不胜感激。
【问题讨论】: