Как сохранить упорядоченную таблицу с Core Data (или SQL) с помощью вставок / удалений?

Этот вопрос находится в контексте Core Data, но если я не ошибаюсь, это в равной степени применимо и к более общему случаю SQL.

Я хочу сохранить упорядоченную таблицу с использованием Core Data, с возможностью для пользователя:

  • переупорядочивать строки
  • вставлять новые строки в любом месте
  • удалять любые существующая линия

Какая модель данных лучше всего подходит для этого? Я вижу два пути:

1) Смоделировать его как массив: добавить свойство int position к моей сущности

2) Смоделировать его как связанный список: я добавляю два one-to отношения «один-один», next и previous из моей сущности к себе

1) позволяет легко сортировать, но болезненно вставлять или удалять, так как вам необходимо обновить положение всех объектов, которые идут после

2) позволяет легко вставлять или удалять, но очень трудно сортировать. На самом деле, я не не думаю, что я знаю, как выразить дескриптор сортировки (SQL ORDER BY ) для этого случая.

Теперь я могу представить вариант 1):

3) добавить int упорядочив свойство для объекта, но вместо того, чтобы считать его по одному, сделайте так, чтобы оно считалось 100 на 100 (например). Тогда вставка так же проста, как поиск любого числа между порядком предыдущего и следующего существующих объектов. Дорогое перенумерация должна происходить только после заполнения 100 лунок. Если сделать это свойство float, а не int, это сделает его еще лучше: почти всегда можно найти новый float на полпути между двумя поплавками.

Я на правильном пути с решением 3), или есть что-то умнее?

7
задан Jean-Denis Muys 5 September 2010 в 07:31
поделиться