如何设计映射表?

时间:2016-05-30 12:40:14

标签: sql sql-server mapping

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

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

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

1 个答案:

答案 0 :(得分:3)

似乎你必须创建3个单独的表来强制执行所有这些操作。如何在新的和映射表中生成新的客户ID可以自动执行,具体取决于您的房屋规则如何分配新的客户ID。您可能希望创建代码或SP以使该过程更加用户友好,为欺骗性oldcustids吐出错误等,但在表级别,这将是强制执行它的一种方法。

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)
)