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