如何为艺术家实体存储3张图片和1首歌曲?

时间:2013-02-12 11:48:43

标签: database-design

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

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

另一个想法将这些媒体存储在带有id,artiste_id,picture1,picture2,picture3,path_song,title_song的 Media 表中。

最好的方法是什么?

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:2)

嗯,模拟当前要求的最精确方法是将3张图片和1首歌曲直接存储在Artist表格中的字段中。在这种情况下,几乎不需要垂直分割艺术家并制作单独的媒体表。


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

enter image description here

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

identifying relationships和CHECK的组合可确保获得所需的最大值。如果你需要成长,只需修改(或完全删除)CHECK。

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


当然,在现实生活中,可能有多位艺术家参与了一件艺术品。你确定关系是1:N而不是N:N?

答案 1 :(得分:0)

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