2013-03-15 6 views
0

Скажем, таблица имеет первичный ключ (CustId) типа int или longint. Мы хотели бы очертить эту таблицу в объединенной таблице в зависимости от того, является ли OrderId нечетным или четным. т.е.Создание федерации Azure SQL, отложенной последней цифрой INT/LONGINT?

'первичный ключ' FEDERATED = (Fed_key, CustId), где OrderId имеет тип int или longint и Fed_key = 0, если CustID == даже, если 1 CustID == нечетным.

Например:

CustId = 1234 => Federated 'primary key' = (0,1234) 

CustId = 6789 => Federated 'primary key' = (1,6789) 

В основном это дает нам 2 членов федерации (AKA перегородками). Позже мы можем сгруппировать Fed_key в (1,3,5), (2,4,6) и (7,8,9,0) для дополнительных разделов. Мы не думаем, что нам понадобится более 5 разделов.

Вопрос: Как выразить вышеуказанную логику Azure SQL? Я думаю, это нужно было бы сделать во время создания федерации или создания объединенной таблицы.

ответ

0

Сначала мы перешли от идентификатора INT/LONGINT к идентификаторам GUID/uniqueidentifiers для первичного ключа без осколков. GUID создаются в уровне приложения. В самом ядре приложения мы выбираем последний кусок руководства и определяем partitionId.

Теперь PartitionId, CustId является основным первичным ключом Федерации, и приложение представляет это для уровня базы данных во время любой транзакции. Это было проверено на работу.

0

из документации (link):

Колонна федерации не может быть сохраняется или не сохраняется вычисляемый столбец.

Кроме того, если клиент имеет несколько заказов, вы действительно хотите запросить х членов федерации, чтобы получить все заказы?

+0

Вы правы, я заметил неправильную колонку. Длинный день. Он окутан CustId. – DeepSpace101