1

在保持旧的 id 系统的同时将几个重叠的 id 系统统一为一个统一的系统的最佳方法是什么。

我的网站上有几个不同的 id...(例如 /publisher/1234 和 /designer/1234) 我想将这些 id 统一到一个新系统中,但想保留旧系统的功能。

4

2 回答 2

1

桥牌桌

column newId
column oldId
于 2008-10-31T00:25:01.100 回答
1

@Steven A. Lowe 的回答肯定是最简单、对现有应用程序影响最小的。

只是为了微笑和咯咯笑,让我们假设您可能还想对模式进行其他更改(新表、新列)。

在组合任何东西之前,我会仔细查看表格 - 确保表格所代表的实体/关系是清晰和规范的。如果publisherdesigner真的是同一个东西,同一个实体,那么可能需要一个将两者结合起来的新表。

因此,使用新的唯一 ID 创建新表。然后有几种方法可以将此 id 关联回原始表。构建“历史”(它的来源和旧 ID)将需要几列,最好是在一个单独的表中(因为它们真的不是“关于”新表,对吧?),但他们可以包含在新表定义中。

就像是

new table
   column newId
   .
   .
   .
   column oldTableName
   column oldId

或者

new table
   column newId
   .
   .
   .

join table
   column newId
   column oldTableName
   column oldId

然后,您可以创建一个或多个视图,将旧表结构呈现给现有应用程序。

create view oldTable id, [...] as
   select oldId, newTable.col1, newTable.col2
    where oldTableName = 'oldTable

还有其他方法可以合并 id,但这里描述的两种可能就足够了。

于 2008-10-31T00:56:13.453 回答