2016-05-30 9 views
0

ここにデザイン問題が少しあります。これは初心者の私のようなものなので、私はいくつかの助けが必要です。 会社のマージのため、すべてがシステムのいずれかになければなりません。私の顧客を他の会社の新しい顧客IDとマッピングすることになっていました。マッピングテーブルを設計するにはどうすればいいですか?

私が新しいcustomerIDのImを取得すると、それが一意であり、同じものが私たちの既存のcustomerIDに確実に適用されるはずです。 1つのレコードのみで、第二に、私は列NewCustIDが一意になりたい - - 1つのレコードだけで

Current customerID: CurCustID 
New customer ID: NewCustID 

まず、私は、データベースが列CurCustID内のすべてのCurCustIDが一意であることを確認したいと思います。 第3回私は、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

お客様のテーブルを2つマージする必要がある場合は、新しく追加された会社の顧客をお客様のテーブルに連れて行くことをお勧めします。 新しい会社の顧客を既存の顧客に移すときに重複する可能性があるため、古いIDを新しいIDで更新することを検討する必要があります(このIDを参照するすべての子テーブルでこのIDを変更する必要があります) 。 –

+0

@Shukri Gashi。残念ながらこれは法的問題のために不可能です:-( –

答えて

1

これらのすべてのことを実行するために3つのテーブルを作成する必要があるようです。新しい顧客IDが新規テーブルとマッピングテーブルでどのように生成されるかは、新しいルールが割り当てられる方法に関する自宅のルールに応じて自動化することができます。おそらく、プロセスをより使いやすくするためにコードやSPを作成したいと思うかもしれません。しかし、テーブルレベルではこれを強制する方法の1つになります。

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

これは実際に私の最初のアプローチでしたが、これが問題を解決する方法であると私は思っています。フィールド(ルックアップ関数のような)? –

関連する問題