gpt4 book ai didi

sql - 如何解析表中一列中的多个值?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:02 24 4
gpt4 key购买 nike

我的任务是根据场景设计数据库。然而,在设计我的解决方案时,我发现我会在一个单元格中有多个值。我们被告知这是一个重复组,应避免在数据库中使用。

当我想将专辑中的歌曲链接到它们所在的专辑时,我得到了重复组。例如,专辑中可以有一首或多首歌曲。但是,一首歌可能出现在一张或多张专辑中(Dean Martin - Silver Bells 可能出现在一张 Christmas Hits 专辑和一张 Dean Martin 专辑中)。

如果我将每首歌曲引用到它的专辑,我会使用 AlbumId 作为外键。但是,如果它在多个专辑中,那么我将有多个 AlbumId 作为外键。这给了我一个重复组,因为同一个单元格中会有多个 ID。

如果通过将专辑的所有歌曲存储在 Album 实体上来扭转这种情况,我会遇到同样的问题,因为 SongId 将是一个外键,并且每个专辑将在同一个单元格中有多个 SongId。

我的设计包括以下这些实体:

song

album

歌曲实体将包含以下属性类型:

  • SongId (PK)
  • SongDuration
  • AlbumId (FK)
  • AudioFileSize
  • AudioFile
  • SongTitle
  • SongLyrics
  • SongNotes

相册实体将包含以下属性类型:

  • AlbumId (PK)
  • AlbumTitle
  • NumOfTracks
  • ReleaseDate
  • ProductionLabel (FK) //Goes to another table that has no issues.
  • AlbumCoverImage
  • CoverImageStory
  • AmountOfCDs

我对数据库设计很陌生,但我觉得我已经很好地掌握了它。但是,我对如何解决这个问题感到困惑。

如果需要有关数据库的更多信息,我很乐意提供。

非常感谢任何帮助。

最好的问候,

史蒂夫。

最佳答案

你有一个多对多的关系。因此,您可以使用联结/关联表:

create table songAlbums (
. . .,
songId int references songs(songId),
albumId int references albums(albumId),
. . .
)

您可能想要包括其他信息,例如相册中的位置。这样的表可以具有复合主键 (songId, albumId) 或合成主键(始终作为身份生成)。

关于sql - 如何解析表中一列中的多个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54539022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com