创建数据库。需要设计帮助

时间:2015-05-07 15:51:00

标签: sql database-design

我正在练习python flask,我将创建一个非常简单的音乐网站,现在正在创建数据库。

我是数据库的新手,所以我只是想帮助看一下表和关系是否正确。

我还会在playlist_songs songID列中存储多首歌曲ID吗?

userTable
    userID (PK), username, email, password, level
songTable
    songID (PK), songName, songArtist, songGenre, songDuration
playlistTable
    playlistID (PK), userID (FK), playlistName, playlistDescription
playlist_songs
    playlistID (FK), songID (FK)

1 个答案:

答案 0 :(得分:3)

根据要求,我会根据您的问题和评论添加一些集体信息。

你的设计很好看。根据Rowland的建议,它可能使用订单栏。要订购的东西。如果您选择不添加此歌曲,则会以播放列表的随机顺序返回歌曲,或者您可以通过SongId列进行排序并保证至少相同的顺序(在播放列表中)。但它不会改变。

您询问了如何将数据输入playlist_songs表:

SongTable
SongId | SongName       | ...
-----------------------------
1      | Happy Bithday  | ...
2      | Last Christmas | ...
3      | Christmas tree | ...
4      | Some song      | ...

PlaylistTable
PlaylistId | PlaylistName       | ...
-------------------------------------
1          | My Birthday songs  | ...
2          | My Christmas songs | ...
3          | All my songs       | ...

Playlist_songs
PlaylistId (FK) | SongId (FK)
-----------------------------
1               | 1
2               | 2
2               | 3
3               | 1
3               | 2
3               | 3
3               | 4

正如您所看到的,Playlist_songs表可以包含许多播放列表和许多歌曲。如果您向Playlist_songs查询PlaylistId = 2,则会返回SongId 2 & 3,依此类推。

目前,主键必须是两列(复合键)的约束。这也是您可以添加Order列的位置,或者只是添加一个独立的主键(例如Id)并按此顺序排序。