2010-06-29 104 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