синхронизировать структуру и синхронизировать несколько клиентских таблиц с одной серверной таблицей - PullRequest
0 голосов
/ 27 августа 2018

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

Я пытался выполнить синхронизацию без первичного ключа, но, похоже, для работы каркаса синхронизации необходим ключ.

Или я лучше всего сделаю несколько таблиц на сервере, а затем создаю представление дляобъединить данные без столбца первичного ключа?

1 Ответ

0 голосов
/ 27 августа 2018

Простой способ избежать таких дубликатов - использовать:

  1. естественный ключ
  2. PK, предоставляющий услугу (вам понадобится какой-либо поставщик номеров)
  3. не рекомендуется: случайно сгенерированный PK (вместо обычного +1) (гид работает иногда, но очень сложно)

Естественный ключ отличается от автоматическогосгенерированное число: это часто внутреннее свойство «вещи», которую вы пытаетесь сохранить.Подумайте о чем-то вроде номерного знака на автомобиле.

Используя это свойство, вы можете гарантировать, что при наличии этого ключа у вас будет та же запись.

Имейте в виду, что естьвсегда некоторые исключения, даже с номерными знаками.


На данный момент:

Возможно, вы сможете сбросить insert identity и переназначить некоторые числа.Но это нарушит связь между сервером и клиентом PK (ваш сервер будет иметь совершенно другое PK, чем клиенты).Со временем это может вызвать сильную головную боль.

Другой способ - использовать составной ключ:

Используйте PK, но добавьте столбец, например ClientID или ClientLocation.создайте составной ПК из обоих (не уверен, что автоматическая нумерация примет это).Это может быть самый простой вариант.

Для последнего в этом примере вы видите, что комбинированный ключ уникален:

//Client 1)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust1
      2      cust1
      3      cust1
//etc
//Client 2)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust2
      2      cust2
      3      cust2
//etc

//Server)
|---composite PK---|
|  ID  | ClientID  |
|------|-----------|
      1      cust1
      1      cust2
      2      cust1
      2      cust2
      3      cust1
//etc
...