我正在建立一个数据库,其中将存储有关不同媒体类型的各种媒体项目的信息。然后,可以将每个媒体项目添加到媒体集合,然后将其用于创建媒体滑块,画廊等。
这是一个示例数据库
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从相关的媒体类型表中选择项目详细信息
在我给出的示例中,媒体类型表非常简单,共享相同的列,但实际上它们将具有不同数量的列和不同的列名。 mediaId上的基本join语句不起作用,因为每个媒体类型表都可以共享相同的ID。
我曾考虑过在所有媒体类型上使用唯一的mediaId,但这会在gallery_items表和媒体类型表之间建立一个绝对的关系,我想避免这种关系(并非媒体类型表中的所有项目最终都会归入媒体集合) )。也许解决方案是创建另一个表media_items,该表为每个表创建唯一的媒体ID,然后将其用于每个媒体类型表中?但是,我对不必要的表扩散感到厌倦。
任何有关如何最好地实现此设计的建议将不胜感激。
最佳答案
IIWM:我将像您一样拥有一张“媒体类型”表。然后是另一个具有唯一ID,媒体类型,文件名等的媒体表。最后一个带有媒体库信息的表-唯一ID,媒体ID和任何其他媒体库信息。
为了使它更有用,您可以使用一张“更改”表来跟踪每件媒体到/从画廊分配的日期,接收,出售的日期等。这将跟踪每件媒体的“寿命”。您的收藏。
关于mysql - 媒体库MySql数据库设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20024192/