在保持旧的 id 系统的同时将几个重叠的 id 系统统一为一个统一的系统的最佳方法是什么。
我的网站上有几个不同的 id...(例如 /publisher/1234 和 /designer/1234) 我想将这些 id 统一到一个新系统中,但想保留旧系统的功能。
在保持旧的 id 系统的同时将几个重叠的 id 系统统一为一个统一的系统的最佳方法是什么。
我的网站上有几个不同的 id...(例如 /publisher/1234 和 /designer/1234) 我想将这些 id 统一到一个新系统中,但想保留旧系统的功能。
桥牌桌
column newId
column oldId
@Steven A. Lowe 的回答肯定是最简单、对现有应用程序影响最小的。
只是为了微笑和咯咯笑,让我们假设您可能还想对模式进行其他更改(新表、新列)。
在组合任何东西之前,我会仔细查看表格 - 确保表格所代表的实体/关系是清晰和规范的。如果publisher
和designer
真的是同一个东西,同一个实体,那么可能需要一个将两者结合起来的新表。
因此,使用新的唯一 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,但这里描述的两种可能就足够了。