我在这里遇到了一些设计问题。我是一个新手,所以我需要一些帮助。 由于公司合并,一切都必须在其中一个系统中进行;我应该在另一家公司为我们的客户映射一个新的客户。
当我获得新的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
答案 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)
)