我应该为每张专辑制作单独的牌桌吗?

问题描述 投票:1回答:2

我正在开发一个关于MySQL中音乐和专辑的数据库项目,在那里我列出了一些受欢迎的艺术家,他们最畅销的专辑以及其中包含的歌曲。但是,在填写每张专辑的歌曲名称时,我突然不知道该怎么做。我应该为每个歌曲列表制作一个单独的表格,还是应该将来自所有不同艺术家(5位不同的艺术家)的所有歌曲(其中大约50张来自所有不同的艺术家)填写在同一张桌子中(我是最终将导出数据并将其连接到PHP文件夹

希望问题很清楚

database database-design database-normalization
2个回答
2
投票

所有歌曲都应该在一个“歌曲”表中。然后在该表中创建一个“相册ID”列,该列是返回到相册表中ID列的外键。这就是你知道哪首歌属于哪张专辑的方式。 (当然,你在“专辑”和“艺术家”之间也有同样的关系。)

这被称为“一对多”关系,是关系数据库设计的基本原则之一。

如果您发现自己创建了多个表来表示相同类型的数据项,那么您就知道自己出了问题。

注:如果你想支持这样的想法,即同一首歌(或者可能是更准确的曲目,因为可能有很多不同的歌曲录音可以制作)可以包含在多张专辑中,那么你需要实现一个“很多” “多对”的关系,你在“专辑”和“歌曲”之间有一个额外的表格,其中包含专辑ID和歌曲ID。每个都是分别返回Albums和Songs表的外键。并且为了确保不重复,两个字段都将被指定为复合主键。这样,您可以针对不同的专辑多次在该表中列出相同的歌曲ID。如果你想在“艺术家”和“专辑”之间的关系中具有这种灵活性,那就再次相同。

这可能是一个休息时间并更详细地研究关系数据库设计和数据规范化概念的好时机,然后您可以开始自己查看这些模式并在架构设计中做出正确的决策。


0
投票

this question类似,关于播放列表的数据库,你也应该使用一个表作为专辑,一个表用于歌曲。

此外,您可能还需要一个艺术家表等。

© www.soinside.com 2019 - 2024. All rights reserved.