如何设计映射table?

How to design a mapping table?

我在这里遇到了一些设计问题。我是这方面的新手,所以我需要一些帮助。 由于公司合并,所有内容都必须进入其中一个系统;我应该将我们的客户映射到另一家公司的新客户 ID。

当我获得新的客户 ID 时,我应该确保它是唯一的,我们现有的客户 ID 也是如此。

Current customerID: CurCustID
New customer ID:    NewCustID

首先,我希望数据库确保 CurCustID 列中的每个 CurCustID 都是唯一的 - 只有一条记录,其次我希望 NewCustID 列是唯一的 - 只有一条记录。 第三,我希望 CurCustID 和 NewCustID 的行组合只接受唯一数据。

如果你能帮助我,我将不胜感激,另一方面,如果我的方法是不好的做法并且有最佳实践方法,请告诉我。

USE [Database]
GO

/****** Object:  Table [dbo].[TblMapning]    Script Date: 05/30/2016 14:30:21 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[TblMapning](
[CurCustID] [varchar](255) NOT NULL,
[NewCustID] [varchar](255) NOT NULL,
PRIMARY KEY CLUSTERED 
(
[CurCustID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY =     OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

 GO

SET ANSI_PADDING OFF
GO

似乎您必须创建 3 个单独的 table 来执行所有这些操作。如何在新的和映射 table 中生成新客户 ID 可以根据您关于如何分配新客户 ID 的内部规则自动执行。您可能希望创建代码或 SP 以使流程更加用户友好,为受骗的老客户吐出错误等,但在 table 级别,这将是一种强制执行的方法。

CREATE TABLE [dbo].[Tbloldcustids](
CustID [varchar](255) NOT NULL
PRIMARY KEY (CustID)
)
CREATE TABLE [dbo].[Tblnewcustids](
CustID [varchar](255) NOT NULL
PRIMARY KEY (CustID)
)
CREATE TABLE [dbo].[TblMapping](
[CurCustID] [varchar](255) NOT NULL,
[NewCustID] [varchar](255) NOT NULL
PRIMARY KEY (CurCustID,NewCustID)
)