2016-05-30 5 views
0

У меня есть проблема с дизайном здесь. Я вроде начинающий в этом, поэтому мне нужна помощь. Из-за слияния компании, где все должно идти в одной из систем; Я должен был отображать наших клиентов с новым клиентом в другой компании.Как создать таблицу отображения?

Когда я получаю новый идентификатор клиента, я должен убедиться, что он уникален и то же самое касается нашего существующего идентификатора клиента.

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

Если вам нужно объединить две таблицы клиентов, я думаю, что лучше всего принести клиентам новую добавленную компанию в таблицу ваших клиентов. Поскольку у вас могут быть дубликаты при переносе новых клиентов компании на существующий, вы должны рассмотреть возможность обновления старого идентификатора с новым (чтобы сделать его уникальным), но вы должны изменить этот идентификатор во всех его дочерних таблицах, где этот идентификатор ссылается , –

+0

@Shukri Gashi. К сожалению, это невозможно из-за юридических вопросов :-( –

ответ

1

Похоже, что вам нужно будет создать 3 отдельные таблицы, чтобы обеспечить соблюдение всех этих вещей. Как новые идентификаторы клиентов генерируются в новых таблицах отображения и могут быть автоматизированы в зависимости от ваших домашних правил для назначения новых. Вероятно, вы захотите создать код или 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) 
) 
+0

Это был мой первый подход. Кажется, теперь это способ решить проблему. Есть ли способ сделать выбор из другой таблицы через поле (например, функция поиска)? –

Смежные вопросы