Поддержание порядка сортировки строк таблицы базы данных - PullRequest
10 голосов
/ 29 декабря 2008

Скажем, у меня есть таблица базы данных, содержащая информацию о новостной статье в каждой строке. В таблице есть целочисленный столбец «сортировка», определяющий порядок представления статей на веб-сайте. Как лучше всего реализовать и поддерживать этот порядок сортировки.

Проблема, которую я хочу избежать, состоит в том, чтобы статьи были пронумерованы как 1,2,3,4, .., 100, и когда статья № 50 внезапно становится интересной, ей присваивается номер сортировки, равный 1, а затем все статьи между ними должны количество сортировки увеличено на единицу.

Конечно, установка начальных чисел сортировки на 100 200 300 400 и т. Д. Оставляет некоторое пространство для перемещения, но в какой-то момент он сломается.

Есть ли правильный способ сделать это, может быть, совершенно другой подход?


Добавлена-1 :

Все заголовки статей отображаются в виде списка, связанного с содержимым, поэтому да, все отсортированные элементы отображаются одновременно.

Добавлен-2

Элемент не обязательно перемещен в начало списка; любой элемент может быть размещен в любом месте упорядоченного списка.

Ответы [ 12 ]

0 голосов
/ 29 декабря 2008

Все заголовки статей отображаются в виде списка, связанного с содержимым, поэтому да, все отсортированные элементы отображаются одновременно.

0 голосов
/ 29 декабря 2008

Использовать нисходящий порядок сортировки, то есть верхний номер сортировки показан сверху.

Если старая статья должна быть размещена в верхней части списка, просто установите для столбца Сортировка значение МАКС. (Сортировка) +1. Нет необходимости перенумеровывать всю таблицу.

Обновление после ваших комментариев:

Изменить порядок сортировки с плавающей точкой. Если порядок сортировки статьи перераспределяется между двумя другими статьями, новое значение сортировки устанавливается на ((Сортировка предыдущей статьи) + (Сортировка следующей статьи)) / 2. В противном случае установите Сортировку на MAX + 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...