如何跟踪列更新?

时间:2010-06-29 13:17:24

标签: sql sql-server

我正在使用SQL Server存储用户上传的歌曲。

每首歌都有一个id(简单的自动增量编号)和一个名字。

我想使用URL重写来查询某些歌曲,如下所示:

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

问题是我还想让用户更改他们的歌曲名称并仍然使用旧的URL。

我想创建另一个包含旧名称的表,然后在两个表中检查一些歌名,这是一个很好的解决方案吗?

3 个答案:

答案 0 :(得分:1)

更好的方法可能是创建一个包含URL和它所依赖的歌曲的URL表:

SongID:   URL:
1         song_name 
1         song_name_change
2         other_song_title

这种方法会:

  1. 根据需要为每首歌曲存储尽可能多的网址
  2. 简化您的查询
  3. 通过在您的数据库中存储URL格式的字符串来潜在地加速您的查询(您提到您只是存储歌曲ID和名称,所以我假设您正在将所有标题格式化为'歌曲名称'到'Song_name “在查询中即时启动”

答案 1 :(得分:0)

除了现有的songs表,我会:

  • 使用列创建表alias
    • alias - 包含歌曲名称,原创和修改
    • target - 该歌曲的ID,songs table
    • 的引用
  • 可选地,将列main_alias添加到songs表;它将引用主别名(即最后编辑的别名),以便您可以使用旧别名重定向人或通过其ID转到歌曲。

然后,您可以通过

访问该歌曲
  • URL/[song_id] - 按ID找到歌曲 +将网址重写为main alias
  • URL/old_song_name - 按别名查找歌曲 +将网址重写为main alias
  • URL/new_song_name - 与上述相同
  • URL/even_newer_song_name - 与上述相同

总而言之,您可以指向同一首歌的无限数量的名称

答案 2 :(得分:0)

使用字段

创建表格song_names
  • ID
  • song_id(songs表的关键字)
  • 名称(歌曲的名称,也许是唯一的)
  • creation_date(创建此名称时的日期时间)

如果您从链接获得该歌曲的名称,您可以在此表格中找到它,以便您可以在songs表格中找到一首歌曲。实际歌曲名称将是song_names表格中具有给定song_id和最近creation_date的歌曲名称。