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

Database design 如何为艺术家实体存储3张图片和一首歌曲?,database-design,Database Design,我有一个艺术家实体。一个艺术家最多可以有3张图片(最少一张)和一首歌曲的标题 所以我的第一个想法是将图片存储在一个单独的表格图片中,图片id为,艺术家id为,路径为。 并将歌曲存储在具有id、艺术家id、路径和标题的歌曲实体中 但另一个想法是将这些媒体存储在一个媒体表中,其中包含id、artiste_id、picture1、picture2、picture3、path_song、title_song 最好的方法是什么 任何帮助都会很好 从数据库规范化的角度来看,您的第一个想法是更好的。好吧,为

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

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

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

最好的方法是什么


任何帮助都会很好

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

好吧,为您当前的需求建模的最精确方法是将3张图片和1首歌曲直接存储为艺术家表中的字段。在这种情况下,几乎不需要垂直拆分艺术家并创建一个单独的媒体表


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

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

和检查的组合确保遵守所需的最大值。如果需要增长,只需修改(或完全删除)检查即可

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



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

以对您更容易的为准。但是我更喜欢第一个。非常感谢你详细而清晰的回答。我非常感激。是的,这肯定是1:N的关系,因为这是一场比赛,他们不能参加其他艺术家的作品。再次感谢!