我应该为每张专辑制作单独的表格吗?

Should i make seperate tables for each album?

我正在 MySQL 开展一个关于音乐和专辑的数据库项目,我在其中列出了一些流行艺术家、他们最畅销的专辑以及其中包含的歌曲。但是当涉及到为每张专辑填写歌曲名称时,我突然不确定该怎么做。我应该为每个歌曲列表制作一个单独的table,还是应该将来自所有不同艺术家(5 位不同艺术家)的所有歌曲(所有专辑中总共约 50 首)填入同一个 table(我最终会导出数据并将其连接到 PHP 文件夹

希望问题很清楚

所有歌曲都应该在一首"Songs"table。然后,您在 table 中创建一个列 "Album ID",它是返回相册 table 中 ID 列的外键。这就是您知道哪首歌属于哪张专辑的方式。 (当然 "album" 和 "artist" 之间的关系也是一样的。)

这称为 "one-to-many" 关系,是关系数据库设计的基本原则之一。

如果您发现自己创建了多个 table 来表示同一类型的数据项,您就知道自己错了。

N.B。如果您想支持同一首歌曲(或曲目,更准确地说,因为一首歌曲的许多不同录音可能会被制作)可以包含在多个专辑中的想法,那么您需要实现 "many-to-many" 关系,在 "albums" 和 "songs" 之间有一个额外的 table,它包含专辑 ID 和歌曲 ID。每个都是返回专辑和歌曲 table 的外键。并且为了确保不重复,这两个字段都将被指定为复合主键。这样您就可以针对不同的专辑在 table 中多次列出相同的歌曲 ID。如果您想在 "artists" 和 "albums".

之间的关系中具有这种灵活性,则再次相同

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

类似于 关于播放列表的数据库,您还应该使用一个 table 用于专辑,一个 table 用于歌曲。

此外,您可能还需要 table 艺术家等