вычисляемые столбцы, как увеличить подмножество - PullRequest
1 голос
/ 09 февраля 2010

То, что я хочу сделать, это иметь такую ​​структуру таблицы:

TypeID   int       not null (foreign key)
ItemID   int       (computed value +1 for each value with same TypeId) 
Data     string

, например

TypeId  ItemId  Data 
1       1       "some data"
1       2       "some data"
2       1       "some data"
3       1       "some data"
3       2       "some data"

Если я вычислю столбцы в качестве ключа, у меня будут проблемы с параллелизмом, а не со столбцами идентификаторов?

Ответы [ 2 ]

2 голосов
/ 09 февраля 2010

Я согласен с Алексом, что ваш вычисляемый столбец может быть воспроизведен с нативной аналитической функциональностью (ROW_NUMBER, RANK, DENSE_RANK), а не как вычисляемый столбец, который, вероятно, потребует использования CLR или просто будет лучше с триггером для заполнения itemid столбец в нужном вам порядке.

Я рекомендую иметь столбец itemid в качестве столбца идентификаторов. То, что вы хотите, звучит как суррогатный ключ, фальшивый ключ (не путать с естественными и искусственными ключами), который вы можете использовать, чтобы ссылаться и отображать для пользователей, не отдавая моделирования данных. Что мне до сих пор не нравится в подходе к вашей ситуации, так это то, что для его использования вам по-прежнему требуются две части данных для получения уникальной строки / записи - typeid и суррогатный ключ.

2 голосов
/ 09 февраля 2010

Столбец ItemId, кажется, является результатом ROW_NUMBER OVER(PARTITION BY TypeID) (см. документы ) - так вы это вычисляете?Как таковой, он не очень подходит как часть ключа из-за проблем параллелизма (две транзакции вставляют строки с одинаковым TypeID, как вы упомянули).Но какое это имеет отношение к «как увеличить подмножество»?Какое подмножество чего?А какой у тебя вопрос?Почему бы просто не сделать что-то еще ключом (обычно искусственный столбец автоинкремента)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...