Как да съхранявате подреден списък в базата данни

Как да съхранявате подреден списък в базата данни

От време на време ми пристигне по пощата забавни въпроси. Последно за съхранение на поръчаното списъка в базата данни.

Ако операцията е доста чести и могат да мамят, за да се съхранява като десетична. В този случай, когато вмъкнете или преместване на снимки между две други просто трябва да ъпгрейд на поръчката директно прехвърляеми записи.

Ако се преместите картината C и го поставя между снимка А и Б. снимка поръчате стойността е изчислена като

UPD. поради ограниченията на точност трябва да се провери, дали е годен в друга база стойност. Ако не - да разчита на поръчката. Дори въпреки факта, че ние не сме от Централна изхвърлят, честотата им е намалял в най-лошия случай с един порядък.

Алтернативно, в случай на интегрална тежести елементи могат да използват училище BASIC'ovskim трик - прираста на тегло десетки елементи 10, 20, 30, и др ..

Тогава централните тегла на други елементи ще бъдат необходими рядко (само ако "пространство" между две конкретни елементи от ляво), и дори ако е необходимо - това не е задължително всички.

Трябва да се има предвид, че ако за поръчка = Id и без пропуски между елементите, B.order - A.order == 1, а 1 е много лошо няколко пъти разделени на две, дори десетичен (н, 6) край бързо, така че да не се забъркваш с около фракции Можете да използвате реда число = номер * 1024 (достатъчно за 10 движения "вътре"), понякога preschityvat ред.

oWeRQ. Добър въпрос. На знака след десетичната паузи, в случая на една и съща MySQL, 13 знака след десетичната запетая. Това е достатъчно за 13-разделения.

MT. Това ще усложни алгоритъма, макар и с десетична, ние също рано или късно upremsya.