首页 > 解决方案 > 用于存储播放列表和相关曲目的 RDS 数据模型设计?

问题描述

在播放列表表中存储和访问 playlist_id 和 track_id 的最佳方式是什么?我正在考虑将多个 track_ids 存储在给定播放列表的数组中!有什么好处和坏处?

标签: sqldatabase-designmany-to-manyrelational-database

解决方案


播放列表和曲目之间存在多对多的关系,其中每个曲目可能属于多个播放列表,而一个播放列表包含多个曲目。

在 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表是连接两个参考表 (tracksplaylists) 的桥接表。我添加了另一列,称为pos,它引用了每个播放列表中每个曲目的位置。

我不建议使用数组(或其他结构化数据类型,如 JSON)来存储播放列表的曲目。您有一个定义良好的模型,在关系数据库中,最好将其存储在单独的表中,如上所示。


推荐阅读