Допустим, у меня есть таблица Product
в базе данных торгового сайта для хранения описания, цены и т. Д. Продуктов магазина. Каков наиболее эффективный способ сделать так, чтобы мой клиент мог повторно заказать эти продукты?
Я создаю столбец Order
(целое число), чтобы использовать его для сортировки записей, но это вызывает у меня некоторые проблемы с производительностью из-за примитивных методов, которые я использую для изменения порядка каждой записи после той, которую мне действительно нужно изменить. Пример:
Id Order
5 3
8 1
26 2
32 5
120 4
Теперь, что я могу сделать, чтобы изменить порядок записи с ID=26
на 3?
Я создал процедуру, которая проверяет, есть ли запись в целевом порядке (3) и обновляет порядок строки (ID = 26), если нет. Если в целевом порядке есть запись, процедура выполняется сама, отправляя идентификатор этой строки с target order + 1
в качестве параметров.
Это приводит к обновлению каждой записи после той, которую я хочу изменить, чтобы освободить место:
Id Order
5 4
8 1
26 3
32 6
120 5
Так что бы сделал умный человек?
- Я использую SQL Server 2008 R2.
Изменить:
Мне нужно, чтобы столбец заказа элемента был достаточным для сортировки без дополнительных ключей. Один столбец заказа должен указывать уникальное место для его записи.
В дополнение ко всему, мне интересно, могу ли я реализовать что-то вроде связанного списка: столбец «Далее» вместо столбца «Заказ» для сохранения идентификатора следующего элемента. Но я понятия не имею, как написать запрос, который получает записи в правильном порядке. Если у кого-то есть идеи по поводу этого подхода, пожалуйста, поделитесь.