Другими словами, пользователь может упорядочить элементы в произвольном порядке и чтобы заказ сохранялся в базе данных?
Как отмечает один из комментаторов, в базе данных нет встроенного порядка строк. Любому поиску, которому нужны строки в определенной последовательности, необходимо указать желаемую последовательность с помощью предложения ORDER BY.
Для того, что вы предлагаете, вместо того, чтобы включать столбец для хранения информации о заказе непосредственно в вашей таблице данных, я бы предложил таблицу соединения один-на-один с двумя столбцами - одна из которых является первичным ключом для строки и секунда, используемая для хранения целого числа, которое содержит последовательность пользователя. Это позволяет изменять последовательность, не изменяя сами строки (сохраняя кеши и т. Д.). Например, таблица, как:
CREATE TABLE UserSequence(
key INT UNSIGNED,
sequence INT UNSIGNED)
Если в колонке «ключ» является внешним ключом для первичного ключа таблицы держит ваши строки данных.
Если вы используете довольно большие цифры для последовательности (например, порядковый номер x 1000), вы оставите пространство для пользователей, чтобы создавать новые элементы (или изменять порядок существующих элементов) с приоритетом где-то посередине последовательности без перенумерации всех строк.
Последовательность поиска - это простой вопрос о соединении таблицы UserSequence в вашем запросе и ORDER BY в столбце последовательности.
Также обратите внимание, что вы могли бы установить ограничение уникальности в столбце последовательности, что позволит БД рассказать вам, когда вам нужно отступить и перечислить элементы в соответствии с выбранным вами значением для шага (например, 1000) а не вставки средней последовательности (где, например, значение последовательности выбирается через что-то вроде prev + (next - prev)/2
). Также рекомендуется ограничение внешнего ключа на столбец key
.
Реляционные db не имеют порядка по умолчанию для строк .. вы можете перенести заказ, который вы предпочитаете с помощью order_name в select – scaisEdge