powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вставка с сохранением порядка
4 сообщений из 29, страница 2 из 2
Вставка с сохранением порядка
    #35209786
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevГоспода, а может быть подойдет решение со строкой:

1, 2,3,4 , 5

разбиваем участок 2 на 2 под-участка

1, 2.1, 2.2, 3, 4, 5

и т.д.

Сортировать неудобно.
Если
1
2.1
2.2
3

Сортируются просто, то

1
10
2

При обычной строковой сортировке выстраиваются не так как нужно, а выдумывать хитрые сортировки как то не хочется. Хранить историю изменений участка не требуется и вредно, поскольку для этого гребуется дополнительное пространство в БД. Достаточно просто столкнуться с ограничением на длину строки.
...
Рейтинг: 0 / 0
Вставка с сохранением порядка
    #35210746
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно что надумал автор топика
...
Рейтинг: 0 / 0
Вставка с сохранением порядка
    #35212270
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей КамимураА что если использовать для нумерации простые дроби такое как: 1/2 3/4...и т.д, а числитель и знаменатель хранить в разных(2-х) полях
Пример:
1. ввел два участка: А(0) и В(1)
2. теперь надо ввести участок С наприсем между А и В
высчитываем дробь С=0+1/2=1/2
получаем А(0), с(1/2), В(1)
3. А теперь надо ввести 3 участка D, E, F например между С и В
новый_дроб_номер=B+(B-C)/(кол_во_ввод_участвок+1)*поряд_номер_новых_участков // D-1, E-2, F-3
Считаем:
D=1/2+(1-1/2)/(3+1)*1=5/8
E=1/2+(1-1/2)/(3+1)*2=6/8
F =1/2+(1-1/2)/(3+1)*3=7/8
Итого получаем
A(0), C(1/2), D(5/8), E(6/8), F(7/8), B(1)
вообщем такая идея...
З.Ы. а в таблице можно создать 3-е результирующие поле типа DOUBLE равное отношению числ/знам,
и собственно по иму сортировать

З.З.Ы правда надо реализовать некоторые элемен функции по работе с простыми дробями, но это будет дешевле чем перебор/измен всех записей
мож пойдет такой вариант......

А что если кит на слона нападет?

Вы все равно не решите проблемы переполнения, тоесть падения точности. Хоть 3, хоть 10 полей все равно в этой задаче эквивалентны перечислимому типу большой длины. И кол-во вставок до перетряски всегда будет линейно зависить от числа использованых битов с коофициентом 1.
...
Рейтинг: 0 / 0
Вставка с сохранением порядка
    #35213612
badmintonist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabКороче нумеруйте интервалы целыми числами с большим шагом, чтобы зарезервировать место для дальнейших вставок, по мере надобности перенумеровывайте. Перенумеровывать скорее всего придётся не часто, если вообще придётся, а запросы к таким данным будут простые и эффективные.+1
Вполне себе стандартный подход, первичный ключ для ссылок на сущность и некое числовое поле для сортировки с большим шагом, чтобы можно было промежуточные значения поставить если понадобится вставить запись в середку :)

авторЕще одно соображение :) вы имеете дело с дорогой, а она конечна и имеет длину, так что можете в качестве этого числа взять например километр на котором начинается секция (неплохо будет определить правило откуда дорога начинается, с какой стороны ее нулевая отметка), если секции меньше километра то можно за минимальную единицу взять или 100 или 10 или 1 метр это зависит от того какая детализация нужна
...
Рейтинг: 0 / 0
4 сообщений из 29, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Вставка с сохранением порядка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]