媒体库MySql数据库设计

时间:2013-11-16 21:33:56

标签: mysql sql database

我正在整理一个数据库,该数据库将保存不同媒体类型的各种媒体项目的信息。然后可以将每个媒体项目添加到媒体集合中,然后可以使用该媒体集合来创建媒体滑块,画廊等。

这是一个示例db

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上的基本连接语句将不起作用,因为每个媒体类型表可以共享相同的ID。

我曾想过在所有媒体类型中使用唯一的mediaId,但这会强制执行gallery_items表和媒体类型表之间的绝对关系,我希望避免这种关系(媒体类型表中的所有项目都不会最终出现在媒体收藏)。也许解决方案是创建另一个表media_items,它为每个表创建一个唯一的媒体ID,然后在每个媒体类型表中使用它?然而,我对不必要的表扩散感到厌倦。

对于如何最好地采用这种设计的任何建议都将非常感激。

1 个答案:

答案 0 :(得分:0)

IIWM:我会有一张像你一样的“媒体类型”表。然后是另一个具有唯一ID,媒体类型,文件名等的媒体表。最后有一个包含图库信息的表 - 唯一ID,媒体ID和任何其他图库信息。

为了使它更有用,您可以拥有一个“更改”表,用于跟踪每个媒体的图库分配的日期时间,接收,销售日期等。这将跟踪“生命周期”你收藏的每件作品。