2010-06-29 72 views
0

我正在使用SQL Server來存儲用戶上傳的歌曲。如何跟蹤列更新?

每首歌都有一個id(簡單的自動遞增數字)和一個名字。

我想用URL重寫來查詢一些歌曲,像這樣:

http://wwww.mysite.com/song/song_name

的問題是,我也希望允許用戶更改他們的歌曲名稱仍然使用舊的URL。

我想創建另一個表將包含舊名稱,然後檢查兩個表中的一些歌名,是一個很好的解決方案嗎?

+0

爲什麼不直接添加(原始)URL列? 如果用戶在他堅持使用他喜歡的名稱之前更改了他的歌曲名稱100次,那麼您希望這首歌曲可以通過100個URL訪問? – 2010-06-29 13:30:01

回答

1

更好的方法可能是創建一個包含URL和它綁在歌單URL表:

SongID: URL: 
1   song_name 
1   song_name_change 
2   other_song_title 

這種方法會:

  1. 商店每首歌曲數目的網址因爲你需要
  2. 簡化你的查詢
  3. 潛在地加快你的查詢通過存儲URL格式的字符串你的數據庫(你提到你只是存儲的兒子摹ID和名稱,所以我假設你格式化像「歌曲名」到「SONG_NAME」上即時查詢)
0

此外,對於現有的songs表我將所有的標題:

  • 創建表alias的列
    • alias - 將包括歌曲名稱,原始和改進
    • target - 歌曲的ID,參照songs
  • 可選地,將列main_alias添加到songs表;它會引用主別名(即最後編輯的別名),以便在您可以使用舊別名重定向人或通過其ID進入歌曲時。 查找歌曲ID +重寫URL到main alias
  • URL/old_song_name - -

然後,你可以通過

  • URL/[song_id]訪問首由別名查找歌曲 +重寫URL來main alias
  • URL/new_song_name - 同上
  • URL/even_newer_song_name - 同上

總而言之,你可以有指向同一首歌名的數量不受限制。

0

與領域

  • ID
  • song_id(關鍵songs表)
  • 名稱(這首歌的名字,也許是唯一的)
  • CREATION_DATE(日期時間創建表song_names創建這個名字的時候)

如果您從鏈接中獲得歌曲的名稱,可以在此表中找到它,所以你可以在songs表中找到一首歌。實際歌曲名稱將在song_names表中給出,其中song_id和最近的creation_date