Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何跟踪列更新?_Sql_Sql Server - Fatal编程技术网

Sql 如何跟踪列更新?

Sql 如何跟踪列更新?,sql,sql-server,Sql,Sql Server,我正在使用SQL Server存储用户上传的歌曲 每首歌曲都有一个id(简单的自动递增编号)和一个名称 我想使用URL重写来查询一些歌曲,如下所示: 问题是,我还想让用户更改他们的歌曲名称,但仍然使用旧的URL 我想创建另一个包含旧名称的表,然后在两个表中检查一些歌曲名称,这是一个好的解决方案吗?更好的方法可能是创建一个包含URL及其关联歌曲的URL表: SongID: URL: 1 song_name 1 song_name_change 2

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

每首歌曲都有一个id(简单的自动递增编号)和一个名称

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

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


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

更好的方法可能是创建一个包含URL及其关联歌曲的URL表:

SongID:   URL:
1         song_name 
1         song_name_change
2         other_song_title
这种方法将:

  • 根据需要为每首歌曲存储尽可能多的URL
  • 简化查询
  • 通过在数据库中存储URL格式的字符串,可能会加快查询速度(您提到您只是在存储歌曲id和名称,所以我假设您在查询中动态地将所有标题(如“song name”)格式化为“song_name”)

  • 除了现有的
    歌曲
    表外,我还将:

    • 创建一个包含列的表
      alias
      • 别名
        -将包含歌曲名,包括原始歌曲名和修改歌曲名
      • target
        -歌曲的id,参考
        歌曲
    • (可选)将列
      main_alias
      添加到
      songs
      表中;它将引用主别名(即上次编辑的别名),以便您可以使用旧别名重定向用户或通过其id转到歌曲
    然后,你可以通过

    • URL/[song\u id]
      -按id查找歌曲+将URL重写为
      主别名
    • URL/old_song\u name
      -按别名查找歌曲+将URL重写为
      主别名
    • URL/new\u song\u name
      -同上
    • URL/甚至更新的歌曲名
      -同上

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

    创建带有字段的表
    歌曲名

    • 身份证
    • 歌曲id(歌曲
      表的键)
    • 名称(歌曲名称,可能是唯一的)
    • 创建日期(创建此名称的日期时间)
    如果您从链接中获得歌曲的名称,您可以在此表中找到它,这样您就可以在
    songs
    表中找到歌曲。实际歌曲名称将是
    song\u names
    表中的歌曲名称,带有给定的
    song\u id
    和最近的
    creation\u date

    为什么不添加一个(原始)URL列?如果用户在坚持使用自己喜欢的歌曲名称之前将歌曲名称更改了100次,您想让100个URL访问该歌曲吗?