2016-05-30 57 views
0

我在這裏有一點設計問題。我有一個新手,所以我需要一些幫助。 由於公司合併,一切都必須在其中一個系統中進行;我應該把我們的客戶與另一家公司的新客戶進行映射。如何設計映射表?

當我得到新的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

如果您必須合併兩張客戶表,我認爲最好的做法是將新增公司的客戶帶入客戶表。 由於您在將新公司客戶遷移到現有客戶時可能有重複項,因此您必須考慮更新舊ID(以使其唯一),但必須在引用此ID的所有子表中更改此ID 。 –

+0

@Shukri Gashi。不幸的是,這是不可能的,由於法律問題:-( –

回答

1

好像你必須創建3個單獨的表來執行所有這些事情。如何在新的和映射表中生成新的客戶ID可以自動取決於您的家庭規則如何分配新的ID。您可能想要創建代碼或SP,以使該過程更加用戶友好,吐出錯誤等等,但在桌面級別,這將是執行該過程的一種方式。

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

這實際上是我的第一種方法。現在看來,這是解決問題的方式。是否有任何方法可以通過其他表格進行選擇一個字段(如查找功能)? –