【问题标题】:How to store 3 pictures and one song for an artist entity?如何为艺术家实体存储三张图片和一首歌曲?
【发布时间】:2013-02-12 11:48:43
【问题描述】:

我有一个 艺术家 实体。艺术家最多可以有 3 张图片(最少 1 张)和一首带有标题的歌曲。

所以我的第一个想法是将图片存储在一个单独的表图片中,id、artist_id、路径。
并将歌曲存储在具有 id、artist_id、路径、标题的 Song 实体中

另一个想法是将这些媒体存储在 Media 表中,其中包含 id、artiste_id、picture1、picture2、picture3、path_song、title_song。

最好的方法是什么?

任何帮助都会很棒!

【问题讨论】:

  • 哪个更容易。但我更喜欢第一个。

标签: database-design


【解决方案1】:

嗯,对当前需求建模的最精确方法是将 3 张图片和 1 首歌曲直接作为字段存储在 Artist 表中。在这种情况下,几乎不需要垂直拆分 Artist 并制作单独的 Media 表。


唯一的问题是:您确定您永远不需要超过 3 张图片和超过一首歌曲吗?如果没有,请执行第一种方法,但我会按以下方式对其进行修改:

CHECK (PICTURE_NO BETWEEN 1 AND 3)
CHECK (SONG_NO = 1)

identifying relationships 和 CHECK 的组合确保满足所需的最大值。如果您需要增长,只需​​修改(或完全删除)CHECK。

不幸的是,minimums(至少存在一张图片和歌曲)在此模型中无法保证,至少在不使用延迟循环引用的情况下不能保证,这可能比它们更麻烦即使您的 DBMS 支持它们也值得。


当然,在现实生活中,一件艺术品可能涉及多个艺术家。您确定关系是 1:N 而不是 N:N?

【讨论】:

  • 非常感谢您详细而清晰的回答。我很感激。是的,可以肯定关系是 1:N,因为这是一场比赛,他们不能参与其他艺术家的艺术作品。再次感谢!
【解决方案2】:

从数据库规范化的角度来看,您的第一个想法更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 2014-07-13
    相关资源
    最近更新 更多