2012-04-23 67 views
0

我正在開發一個小型音樂網站。我是前端開發人員,在數據庫方面的知識並不多。我想出了這個網站的數據庫設計。你能建議改進嗎?如何改進數據庫設計?

幾個問題,我可能也一樣是...

  • 怎麼改,支持超過藝術家更是一首歌?
  • 是正常的有專輯中的歌曲表或它必須是一個單獨的表?我不認爲我有關於我想存儲的專輯的其他信息,但是在歌曲表中放入專輯會不切實際嗎?

非常感謝。

enter image description here

回答

2

我的頭頂部,我可能會像這樣的東西去:

enter image description here

這個數據模型具有以下特點:

  • 沒有一個多到歌曲與藝術家之間的多種關係(由中間的「鏈接」表格實現:SONG_ARTIST)。
  • 相冊是在單獨的表中。如果所有你想要的都是專輯名稱,這並不是特別重要,但我想你以後會想要更多的字段。
  • SONG_NAME和ALBUM_NAME在其各自表格中的而不是鍵 - 可能有多個共享相同名稱的歌曲(或專輯)。
  • 在另一方面,GENRE_NAME是(候補)鍵。
  • 值得懷疑的是ARTIST_NAME是否應該是備用鍵。我選擇在我的模特里這樣做,但這需要你「發明」那些在現實生活中碰巧擁有相同名字的藝術家的區別名。也許更好的方法是要求出生日期或地點,儘管這也有其潛在的問題...
  • PLAYLIST_NAME包含在播放列表的主鍵中,因此單個用戶可以有多個播放列表。由於PLAYLIST沒有「子」關係,所以不需要引入諸如「PLAYLIST_ID」的代理鍵。
  • 不是簡單的密碼,而是PASSWORD_HASH和PASSWORD_SALT(阻止"rainbow" attacks)。
  • 命名約定對實體名稱使用單數,這更符合可以找到的建議here
+0

非常感謝! – lawphotog 2012-04-24 07:52:45

1

有關的歌曲多的藝術家,你可以有一個單獨的表,其中每行有對歌曲的藝術家的songID & artistID,所以一首歌W的ID /多位藝術家將有一行/每首歌手的歌曲ID。典型的N對N關係結構。

至於把專輯(大概是名字)放在歌曲表中,如果你沒有關於專輯的任何其他信息,那麼它在自己的表中看起來會很傻。但是,只要您有任何專輯專有信息而不是名稱(例如,專輯的發行日期可能與其單曲歌曲的發行日期不同;同時,一首歌曲可能會出現在多個專輯中),您可以遇到麻煩。

1

如果你想有多個藝術家一首歌曲需要歌手和歌曲之間的另一個表,其中包含一首歌曲,一個藝術家ID。

我也建議爲專輯製作自己的表格,如果您實際上沒有任何內容存儲它,因爲編輯標題的名稱會非常容易,您可以在一個地方。我可以想像,這將是野趣到的圖像還可以存儲到相冊;)

而且它通常總是用一個整數作爲主鍵,雖然用戶名是唯一的。

+0

謝謝:) ...... – lawphotog 2012-04-23 19:06:47