【问题标题】:Media Gallery MySql Database Design媒体库 MySql 数据库设计
【发布时间】: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,然后在每个媒体类型表中使用它?然而,我厌倦了不必要的表格扩散。

任何关于如何最好地处理此设计的建议都将不胜感激。

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

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

    为了使它更有用,您可以有一个“更改”表,用于跟踪每个媒体的画廊分配日期时间、接收、销售日期等。这将跟踪每个媒体的“寿命”您收藏中的每一件作品。

    【讨论】:

      猜你喜欢
      • 2018-02-06
      • 1970-01-01
      • 2014-01-12
      • 2018-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 2012-01-17
      相关资源
      最近更新 更多