Ок. Дабы не дискутировать начнём сначала на примере должностей.
1. Есть база "должности" в которой
каждому порядковому номеру соответствует та или иная должность.
2. С течением времени должности имеют свойство добавляться или "ликвидироваться", в связи с чем происходит изменение порядкового номера для действующей должности. Должности которые "ликвидированы" остаются в базе. Т.е. происходит смещение в нумерации для действующих должностей.
Теперь идём далее.
Зная, что каждому порядковому номеру соответствует та или иная должность оператор просто вводит её номер и при помощи поиска на вводе создаёт связь лица с данной должностью.
Вопрос: Как нужно поступить с должностями, которые ликвидированы и находятся в базе? Какую формулу нужно использовать для пересчета порядковых номеров, зная тот факт, что в базе существует поле "дата ликвидации"?
Вот мне и пришла мысль добавить порядковому номеру ликвидирован ной должности индекс, а для действующих должностей производить пересчет.

Например было 1,2,3,4,5,6,7,8,9,10, а с появлением ликвидированых должностей стало 1,2,3А,3,4,5,6А,7А,6,7,8 и т.д.