Вы можете добавить код заказа в таблицу AssociateItem. Затем вы можете получить товары, заказанные по этому номеру заказа.
, например
TABLE AssociateItem(UserId, ItemId, SortNumber)
SELECT * FROM User U
INNER JOIN AssociateItem AI ON U.UserId = AI.UserID
INNER JOIN Item I ON AI.ItemId = I.ItemId
ORDER BY AI.SortNumber
Беспорядочная часть возникает, когда вы хотите переместить элементы, так как вы хотите, чтобы числа были синхронизированы.
Если SortNumber является целым числом, вам нужно обновить все номера сортировки следующих элементов до числа +1.
Возможно, вы сможете обмануть и избежать всех этих обновлений, используя действительные числа и ранжируя новый элемент в средней точке между предыдущим и следующим номером SortNumbers.
например. Если вы хотите вставить что-то в позицию 2 последовательности 0,1,2,3
, вы можете присвоить ей число 0,5, давая 0, 0.5, 1, 2, 3
Если затем вы хотите вставить что-то новое в позицию 2, вы можете назначить его как 0,25, давая 0, 0.25, 0.5, 1, 2, 3
и т. Д. Очевидно, это перестанет работать в точке, когда у вас недостаточно точности, чтобы правильно представить число, но это подойдет для небольших списков.