2015-05-07 170 views
0

我正在練習python燒瓶,我打算創建一個非常簡單的音樂網站,現在正在創建數據庫。創建數據庫。需要設計幫助

我是新來的數據庫,所以我只是想幫忙看看錶和關係是否正確。

我還會在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) 
+0

您的playlist_songs可能需要訂購? –

+0

我很高興所有的歌曲都只是爲了添加到播放列表中,所以我只是在每次添加歌曲時將歌曲ID添加到該列中? 只是想我會如何加載他們到一個頁面? – Shane

+0

看起來很好。是的,你會存儲多首歌曲ID,但是我希望每行只有一個。我通常添加日期戳和一些簡單的審計列,如CreatedBy,CreatedDate,UpdateBy,UpdateDate,LastLogin等。但是,這並不重要。 – Mackan

回答

3

根據要求,我添加了一些基於您的問題和意見的集體信息。

您的設計看起來不錯。按照Rowland的建議,它可能會使用訂單欄。有些東西要訂購。如果您選擇不添加此項,則歌曲將以某種隨機順序返回播放列表,或者您可以通過SongId列進行訂購,並至少保證(播放列表中)具有相同的順序。但它不會改變。

你問數據是如何進入到表:

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)並按順序添加。