sql - 用于存储播放列表和相关曲目的 RDS 数据模型设计?
问题描述
在播放列表表中存储和访问 playlist_id 和 track_id 的最佳方式是什么?我正在考虑将多个 track_ids 存储在给定播放列表的数组中!有什么好处和坏处?
解决方案
播放列表和曲目之间存在多对多的关系,其中每个曲目可能属于多个播放列表,而一个播放列表包含多个曲目。
在 SQL 中,这通常用一个 brigde 表来表示:
create table tracks (
track_id int primary key,
name varchar(50),
...
);
create table playlists (
playlist_id int primary key,
name varchar(50),
...
);
create table playlist_tracks (
playlist_track_id int primary key,
playlist_id int references playlists(playlist_id),
track_id int references tracks(track_id),
pos int,
unique (playlist_id, pos)
);
该playlist_tracks
表是连接两个参考表 (tracks
和playlists
) 的桥接表。我添加了另一列,称为pos
,它引用了每个播放列表中每个曲目的位置。
我不建议使用数组(或其他结构化数据类型,如 JSON)来存储播放列表的曲目。您有一个定义良好的模型,在关系数据库中,最好将其存储在单独的表中,如上所示。
推荐阅读
- swiftui - 如何在 SwiftUI 中将图片添加到 iPad 导航视图的一侧?
- spring-boot - Spring Boot WSDL SOAP Web 服务应用程序无法启动
- python - FloatLayout 内的 Kivy 移动标签
- python - (正则表达式)如何在python中一起删除引号和里面的内容?
- r - JaroWinkler 方法 --> 识别字符串中的字符/数字点
- javascript - 如何在控制台中显示闭包函数的内容?#javascript
- python - Python列表和字典理解
- activemq-artemis - ActiveMQ Artemis Web 控制台
- python - 尊重 django 表的顺序
- azure-data-factory - 如何优化 Azure Data FactoryPipeline?