Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Генерации последовательности внутри группы (dependent sequence)  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Здравствуйте!

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

Варианты, которые вижу я:
1. Создать последовательность для каждого магазина
+ табличку для кого какая (ну или имя генерить по определенным правилам) и использовать объект sequence.

2. Создать табличку

| Магазин | Следующее значение | Шаг|

ну если будут локи на использовании для особо активных магазинов можно симитировать кэш и создать несколько следующих значений. То что последовательность будет немного непоследовательна в этом случае не страшно - главное значения генерятся и они уникальны в рамках одного магазина.

Как то оба варианта не нравятся.
В первом смущает - непонятное и теоретически большое кол-во последовательностей.
Во втором - немного напоминает костыль, особенно, если использовать вариант с кэшем.

Может быть есть какой-то годный классический вариант как это сделать?
2 ноя 16, 18:36    [19852352]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
Nimua, SEQUENCE + динамика ?
2 ноя 16, 18:48    [19852406]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
Извините, а в чем смысл для каждого магазина создавать свой сиквенс? Сквозная нумерация рулит, если потом магазины соберетесь объединить.
2 ноя 16, 18:52    [19852419]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Простите не могу поменять это - то есть нумерацию в группе на сквозную.
Мне нужно сделать в именно группе.
2 ноя 16, 22:00    [19852868]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
buser,

Да первый вариант - динамически создавать sequence и использовать потом динамический sql. Немного смущает, что наверное изначально большое колво sequence не планировалось в MS SQL Server. Я поищу есть ли какие-нибудь ограничение по кол-ву. Пока ничего такого не нашла.
2 ноя 16, 22:02    [19852875]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1767
Nimua,

Извините, не понял одного нюанса - Вы для каждого магазина заводите свою таблицу или у Вас данные всех магазинов в одной таблице?
Если первый вариант - то да, создавать свою последовательность для каждой таблицы. Ещё один вариант - сделать ключ составным - (столбец id товара и столбец с id магазина).
Если второй вариант - используйте автоматическую нумерацию строк и добавьте столбец с номером магазина (составной ключ), к которому относится строка с товаром.
2 ноя 16, 22:24    [19852927]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
DaniilSeryi,

Для всех магазинов одна таблица - и надо сделать нумерацию внутри магазина - не сквозную.
Спасибо.
2 ноя 16, 23:27    [19853094]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1767
Nimua
DaniilSeryi,

Для всех магазинов одна таблица - и надо сделать нумерацию внутри магазина - не сквозную.
Спасибо.


Как Вам такое решение - создать три таблицы - товары, магазины, товары по магазинам?
Товар
1
2
3
4

Магазин
1
2

Магазин Товар
1 1
1 3
2 2
2 4
2 ноя 16, 23:50    [19853143]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
DaniilSeryi,

Для моего случая к сожалению не очень работает.
Извините, наверное надо прояснить - пример про магазин наверное неудачен. Не могу написать конкретную ситуацию, я не могу изменить решение - могу варьировать только реализвацию. Решение - одна таблица внутри нее список главное поле (магазин) и внутри каждой группы должен быть список (товар).
Реализацию как генерить номер для последовательности внутри группы я могу варьировать.
Я понимаю желанию решить задачу по-другому - чтобы не надо было делать внутренюю последовательность, но вопрос в том как ее сделать :)
3 ноя 16, 12:48    [19854995]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
Верблюд
Member

Откуда: Яженичеловек!!!
Сообщений: 65007
Nimua,

это называется "автоматизация бардака". удачи вам в ваших начинаниях.
3 ноя 16, 14:56    [19855847]     Ответить | Цитировать Сообщить модератору
 Re: Генерации последовательности внутри группы (dependent sequence)  [new]
aleks2
Guest
Nimua
Здравствуйте!

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

Варианты, которые вижу я:
1. Создать последовательность для каждого магазина
+ табличку для кого какая (ну или имя генерить по определенным правилам) и использовать объект sequence.

2. Создать табличку

| Магазин | Следующее значение | Шаг|

ну если будут локи на использовании для особо активных магазинов можно симитировать кэш и создать несколько следующих значений. То что последовательность будет немного непоследовательна в этом случае не страшно - главное значения генерятся и они уникальны в рамках одного магазина.

Как то оба варианта не нравятся.
В первом смущает - непонятное и теоретически большое кол-во последовательностей.
Во втором - немного напоминает костыль, особенно, если использовать вариант с кэшем.

Может быть есть какой-то годный классический вариант как это сделать?



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

1. IDENTITY для фсех.
2. Если до усрачки хочется "для каждого магазина формировать свой перечень" - дополнительное поле "свой перечень" с заполнением -по умолчанию null + процедура, которая время от времени заполняет пустые поля "свой перечень" ну... чем душеньке угодно.
5 ноя 16, 13:16    [19860432]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить