专辑曲目的数据库格式

时间:2010-06-02 20:57:40

标签: mysql database-design

  • 我想存放专辑 跟踪一个字段中的名称 数据库中。
  • 曲目数是任意的 每张专辑。
  • 每张专辑都是表中的一条记录。
  • 每个曲目必须链接到一个特定的URL,该URL也应该存储在某个地方的数据库中。

是否可以通过将它们存储在单个字段中来实现,或者是轨道名称/ URL的关系表是唯一的方法吗?

5 个答案:

答案 0 :(得分:2)

Table: Album
ID/PK (your choice of primary key philosophy)
AlbumName

Table: Track
ID/PK (optional, could make AlbumFK, TrackNumber the primary key)
AlbumFK REFERENCES (Album.PK)
TrackNumber
TrackName
TrackURL

答案 1 :(得分:1)

传统方法是让每个轨道有一个表(包含任何元数据)。为每个专辑设置另一个表格,以及第三个表格,用于记录哪些专辑的轨道与哪个专辑的关联。

答案 2 :(得分:1)

使用两个表格,一个用于专辑,一个用于曲目。

Album
-----
Id
Name
Artist
etc...



Track
-----
Id
AlbumId(Foreign Key to Album Table)
Name
URL

您还可以使用加入trackId和AlbumId字段的第三个表来扩充它(因此在Track表中没有AlbumId)。第二种方法的优点是,它可以让你在许多专辑(例如编辑)中出现时重复使用录音。

答案 3 :(得分:1)

完全有可能,您可以将字段存储为逗号分隔或XML数据。

是否明智是另一个问题 - 如果你想查询有多少张专辑有超过10首曲目,例如你将无法为此编写SQL查询而你将不得不求助于将数据拉回到您的应用程序中并将其解析到那里并不理想。

另一种选择是将数据存储在单独的“轨道”表中(即标准化的),但也提供关于那些以非规范化方式将数据作为单个字段提供的表的视图。然后,您将获得正确结构化数据的好处,并能够从视图中将数据作为单个字段进行查询。

答案 4 :(得分:0)

关于Database Normalization的维基百科文章做出了合理的努力来解释规范化的目的......以及规范化规则旨在防止的各种异常。