Найдено результатов: 2

Представление порядка в реляционной базе данных

У меня есть коллекция объектов в базе данных. Картинки в фотогалерее, товар в каталоге, главы в книге и т. д. Каждый объект представлен в виде строки. Я хочу иметь возможность произвольно упорядочивать эти изображения, сохраняя этот порядок в базе данных, чтобы при отображении объектов они были в правильном порядке.

Например, предположим, что я пишу книгу,и каждая глава-это объект. Я пишу свою книгу и размещаю главы в следующем порядке:

Введение, доступность, форма и Функция, Ошибки, Последовательность, Заключение, Индекс

Он отправляется в Редактор и возвращается со следующим предложенным порядком:

Введение, Форма, Функция, Доступность, Последовательность, Ошибки, Заключение, Индекс

Как я могу хранить этот заказ в базе данных надежным и эффективным способом?

У меня были следующие идеи, но я не в восторге от них:

  1. Массив. Каждая строка имеет порядок ID, когда порядок изменяется (через удаление с последующей вставкой), порядок IDs обновляются. Это упрощает поиск, так как это просто ORDER BY , но кажется, что его легко сломать.

    // REMOVAL
    UPDATE ... SET orderingID=NULL WHERE orderingID=removedID
    UPDATE ... SET orderingID=orderingID-1 WHERE orderingID > removedID
    // INSERTION
    UPDATE ... SET orderingID=orderingID+1 WHERE orderingID > insertionID
    UPDATE ... SET orderID=insertionID WHERE ID=addedID

  2. Связанный список. Каждая строка имеет столбец для идентификатора следующей строки в заказе. Обход кажется дорогостоящим здесь, хотя может каким-то образом использовать ORDER BY , о котором я не думаю.

  3. Разнесенный массив. Установите orderingID (как используется в #1), чтобы быть большим, так что первый объект 100, Второй 200 и т.д. Затем, когда происходит вставка, вы просто помещаете ее в (objectBefore + objectAfter)/2 . Конечно, это должно было бы быть перебалансировано время от времени, поэтому у вас нет вещей слишком близко друг к другу (даже с поплавками, вы в конечном итоге столкнетесь с ошибками округления).

Ни один из них не кажется мне особенно элегантным. У кого-нибудь есть лучший способ сделать это?

sql   database   django   django-models    

550   11   17:20, 13th August, 2020


Указание перечисления mySQL в модели Django

Как мне определить и использовать ENUM в модели Django?

python   mysql   django   django-models   enums    

583   8   21:40, 9th August, 2020