Die zweite Lösung, die Sie vorschlagen, ist im Wesentlichen eine verknüpfte Liste. Verknüpfte Listen, die auf Datenbankebene implementiert werden, sind normalerweise keine gute Idee. Zum Abrufen einer Liste von n
Elemente, benötigen Sie n
Datenbankzugriff (oder komplizierte Abfragen). In Bezug auf die Leistung ist das Abrufen einer Liste in O(n) furchtbar ineffizient.
In normalem Code werden verknüpfte Listen verwendet, um eine bessere Einfügeleistung im Vergleich zu Arrays zu erzielen (keine Notwendigkeit, alle Elemente zu verschieben). In Ihrer Datenbank ist das Aktualisieren aller Elemente mit nur 2 Abfragen nicht so kompliziert:
UPDATE item.order = item.order + 1 FROM item WHERE order > 3
INSERT INTO item (order, ...) VALUES (3, ...)
Ich erinnere mich, eine wiederverwendbare App gesehen zu haben, die all das und eine nette Verwaltungsschnittstelle implementiert hat, aber ich kann sie gerade nicht finden ...
Zusammenfassend lässt sich sagen, dass Sie auf jeden Fall Lösung Nr. 1 verwenden und von Lösung Nr. 2 Abstand nehmen sollten, es sei denn, Sie haben einen sehr guten Grund, dies nicht zu tun!