Schema design for storing item combination with order
The design doesn't seem awful, but I think you could solve your update issue by changing how you are assigning a priority number. Instead of using 1, 2, 3, 4, ..., you could use a higher range between the values, such as 10, 20, 30, 40, .... You might find you need an even larger set like 50, 100, 150, 200, ....

By increasing the range, you have some flexibility when a user changes the ordering of a given item. Instead of having to update all of the records, you could now use an available number between the existing two and save yourself the headache. For example:

AAA -&gt; 10
BBB -&gt; 20
CCC -&gt; 30


We want to move CCC to be the second item (in between AAA and BBB), so we change 30 to 15. So now:

AAA -&gt; 10
CCC -&gt; 15
BBB -&gt; 20


Of course, you'll still have to re-assign all the priorities if the user changes too many of the items, as you'll eventually run out of empty numbers. When you're doing your selection, just remember to order by the priority.