【发布时间】:2019-01-01 16:45:43
【问题描述】:
好吧,我必须自己选择哪种做法更适合使用。我试图解释我的意思。比如我有表Songs:
Id | Name | Artist | Year
---+------+--------+-------
1 | Ad | Bad | 2015
2 | Sad | ads | 2011
3 | Wad | Had | 2012
另外,我想实现表Playlists。而且我不完全知道,哪种做法会更好。
方法 #1 - 使用字符串存储歌曲 ID
Playlists表:
Id | Name | Songs
---+------+------------------------
1 | Main | 1,2
2 | GYM | 4,6,7,8,53,65,76878,78,
3 | Rock | 121,434,655,6767,78
因此,为了获取某些播放列表存储的歌曲,我会在每次从 DB 中生成列表时对其进行解析。
方法 #2 - 使用多对多关系策略
Playlists表:
Id | Name
---+------
1 | Main
2 | GYM
3 | Rock
PlaylistSongs表:
Id | PlaylistId | SongId
---+------------+---------
1 | 1 | 1
2 | 1 | 2
4 | 1 | 344
5 | 1 | 45
6 | 1 | 57
方法 #3 - 您的建议
如果你知道更好的做法,请随时与我分享:)
感谢关注!
【问题讨论】:
-
肯定使用多对多表,但它只需要有歌曲和播放列表 id 它不需要它自己的 id,除非你希望能够关联同一首歌同一个播放列表不止一次。
-
绝对是选项二。选项一更像是描述数据的文本。它不是关系数据。为了说明这一点,想象一下尝试编写查询来尝试搜索播放列表中的某些歌曲或将表连接在一起。选项 1 真的很难看,但选项 2 很容易。
标签: c# sql sql-server