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

问题描述:

我有一个艺术家实体。一位艺术家最多可以有3张照片(最少一张),一张带有标题的歌曲。如何为艺术家实体存储3张图片和一首歌曲?

所以我的第一个想法是存储照片登在一个单独的表图片与ID,artist_id,路径。
和歌曲存储在实体ID,artist_id,路径,标题

另一个想法将这些媒体在媒体表存储与ID,artiste_id,图片1, picture2,picture3,path_song,title_song。

这样做的最佳方法是什么?

任何帮助将是伟大的!

+0

以较容易的为准。但我更喜欢第一个。 – DarthVader 2013-02-12 11:50:12

那么,建立当前要求的最精确方法是将3张图片和1首歌曲直接作为字段存储在艺术家表格中。在这种情况下,很少需要垂直分割艺术家并制作单独的媒体表格。


唯一的问题是:你肯定你将永远不会需要超过3张图片和超过一首歌?如果没有,做了第一种方法,但我修改它以下列方式:

enter image description here

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

相结合的identifying relationships并检查确保所需最大值感到非常荣幸。如果您需要增长,请修改(或完全删除)CHECK。

不幸的是,最低(至少一个画面和歌曲的存在)不能在这种模式保证,至少在没有诉诸推迟循环引用,这可能是更多的麻烦比他们的价值,即使你DBMS支持它们。


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

+0

非常感谢您的详细和明确的答案。我非常感激。是的,它确定这种关系是1:N,因为它是一场比赛,他们不能参加另一位艺术家的艺术作品。再次感谢! – Reveclair 2013-02-14 09:29:35

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