|
|
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, всезнающий Олл! Помогите с простой задачкой, никак не могу придумать стоящее решение. Все просто: каталог есть айтемов, нужно создать систему приоритетов для них на уровне БД. То есть табличка из трех полей: id, item, prior. Первое что приходит в голову это ORDER BY prior, где prior уникальное. Но как тогда заставить все это вставить запись в середину таблицы и при этом не перешерстить половину записей? Заранее благодарен! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 17:27 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Какое СУБД Вы используете? Для большинства СУБД нет понятия "середина/начало/конец таблицы" (таблица - множество записей). Т.е. при вставке записи никто/ничто не будет "шерстить половину записей" (структура индексов - древовидная, глубина примерно одинакова для всех записей). Осмысленным может быть, например, "середина/начало/конец выборки с таким-то ORDER BY..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 17:50 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
mephПервое что приходит в голову это ORDER BY prior, где prior уникальное. Или проблема в другом? в том, что при одинаковых значениях prior теряется однозначность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 17:54 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
В данном случае конкретизировать СУБД нет смысла. Возможно Вы неправильно меня поняли. Под емким понятием "шерстить" я имел в виду тот факт, что, возможно, прийдется изменять поле prior в половине строк таблицы. Как избежать этого? Какой использовать алгоритм для поля prior, чтобы затрачивать как можно меньше обращений к базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 17:57 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
LRИли проблема в другом? в том, что при одинаковых значениях prior теряется однозначность? Естественно, что prior должно быть уникально для однозначного формирования упорядоченного списка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:00 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> нужно создать систему приоритетов для них на уровне БД Задачу полностью сформулируйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:20 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Навскидку, пошел бы путем разрешения коллизии одинаковых значений prior - добавил бы еще одно поле (с автоматически генерируемым значением при вставке а возможно и обновлении - identity или timestamp или просто дата-время или другое но такое, чтобы пара значений prior + еще_одно_поле было уникальным), которое бы и использовал в ORDER BY prior, еще_одно_поле asc|desc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:21 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Можно уточнить? Имеется ввиду, что нужно хранить в базе упорядоченный список с поддержкой операций - Вставить после - Вставить до с указанием элемента. Конкретные значения prior не важны. Приоритет должен быть уникальным. Сразу вопрос: как вы будете использовать значение приоритета? Вым нужен будет порядковый номер элемента в списке. Или только ответ на вопрос, какой элемент приоритетней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:23 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Пояснию, что хотел сказать автор топика: Есть таблица Строка Приоритет 1 1 2 2 3 3 4 4 5 5 А теперь добавим строку между 2 и 3, какое значение указать? 2 или 3 или 2,5? Самый простой способ это проапдейтить поле Приоритет увеличив его на единицу в тех строках, где приоритет более 2, т.е. 3 строки (больше половины всех записей) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:27 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
?Можно уточнить? Имеется ввиду, что нужно хранить в базе упорядоченный список с поддержкой операций - Вставить после - Вставить до с указанием элемента. Конкретные значения prior не важны. Приоритет должен быть уникальным. Сразу вопрос: как вы будете использовать значение приоритета? Вым нужен будет порядковый номер элемента в списке. Или только ответ на вопрос, какой элемент приоритетней? нужна одна операция всего лишь: выборка и вывод элементво по приоритету. Думаю, что если это реализовать, то остальное будет не проблема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:45 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Old NickПояснию, что хотел сказать автор топика: Есть таблица Строка Приоритет 1 1 2 2 3 3 4 4 5 5 А теперь добавим строку между 2 и 3, какое значение указать? 2 или 3 или 2,5? Самый простой способ это проапдейтить поле Приоритет увеличив его на единицу в тех строках, где приоритет более 2, т.е. 3 строки (больше половины всех записей) Идея правильная у Вас, но боюсь, что реализация такая неуместна. Как Вы сами видите, Ваш вариант не работает. Конечно же апдейтить все поля с большим/меньшим приоритетом при добавлении одного лишь элемента это не выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:48 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Example Prvaja zapis' vstavljaetsja s prioritetom ravnym polovine maximal'nogo znachenija polja, naprimer pust' max znachenie dlja Priority budet 2 000 000 000 togda Item_ID,Priority 0,1 000 000 000 1.Dobavljaem zapis' s prioritetom bol'she chem u Item_ID(0). Priority= Item_ID(0).Priority+(Max.znachenie polja- Item_ID(0).Priority)/2 t.e Item_ID(1).Priority = 1 000 000 000 + (2 000 000 000 - 1 000 000 000)/2 = 1 500 000 000 2.Dobavljaem zapis' s prioritetom bol'she Item_ID(0) , no men'she Item_ID(1). Nahodim naibol'shee znachenie Priority mezhdu zadannymi granicami. V nashem sluche eto budet 1 000 000 000 . t.e Item_ID(2).Priority = 1 000 000 000 + (1 500 000 000 - 1 000 000 000)/2 = 1 250 000 000 Nu i tak dalee. U etogo podhoda ets' ochevidnye ogranichenija, no on prost v realizacii. Izvinite za sumburnoe objasnenie. S Novym Godom. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:53 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Я привел не решение, а пояснил вопрос автора топика. Я такое решение использую, но только когда колчиество записей на экран входит А вообще с проблемой автора топика я не сталкивался, видимо криво не проектировал ещё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 18:55 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
www.dkoh.netExample Prvaja zapis' vstavljaetsja s prioritetom ravnym polovine maximal'nogo znachenija polja ... S Novym Godom. Такой вариант был рассмотрен давно, но в несколько иной интерпритации: просто делать равные промежутки между записямии перемещать записи в пределах этих промежутков. Но Вы сами понимаете, что этот метод будет работать до некоторого момента, пока все не завалится окончательно. Да и об отимальности тут говорить не приходится...Спасибо за вариант, ждем еще предложений. Вас также с наступившим! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 19:27 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Old NickА вообще с проблемой автора топика я не сталкивался, видимо криво не проектировал ещё Спасибо за участие, но зачем же обижаться? И где тут кривизна проетирования? Это тривиальная задача: вывести записи в определенном порядке, а не подряд :) Ну и некоторый механизм регулирования этого порядка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 19:31 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Old NickА теперь добавим строку между 2 и 3, какое значение указать? 2 или 3 или 2,5? вариант 2,5 www.dkoh.netU etogo podhoda ets' ochevidnye ogranichenija, no on prost v realizacii. его можно слегка переиначить(технически) - сделать поле prior строковым типом, и тогда между "2" и "3" указывать "29", между "2" и "29" - "28", а между "29" и "3" - "299" и т.д., т.е. к "строке сверху" добавляем символ - максимальный из возможных в данном месте для сортировки. Сортировка по строковому типу даст нужный порядок. В таком случае ограничение останется только на размер строкового поля. Ряд символов конечно же целесообразно расширить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 19:48 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> И где тут кривизна проетирования? В неестественности задачи. Очень напоминает удаление гланд через задний проход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 19:52 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 wrote: > > И где тут кривизна проетирования? > > В неестественности задачи. Очень напоминает удаление гланд через задний > проход. Очень напоминает user defined sorting ну нравится юзверю, чтобы после "промокашки" в каталоге были "букашки", а потом решил он между "промокашками" и "букашками" вставить "арбузики"... А потом решил пересортировать.... Чего бы и нет? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 20:40 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Сколько миллионов записей предполагается в каталоге? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 20:53 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> Чего бы и нет? Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности. Как справедливо заметил Old Nick, нафиг не упиралось такое ранжирование для количества элементов большего, чем умещается на одном экране. Не очевидно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2007, 21:09 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности. я так полагаю, что не от хорошой жизни и не программеры эту систему приоритетов придумали, а заказчику она понадобилась. т.е., вероятно, это не косяк проектировки, а требования заказчика. тем более, что ни вы, ни я этого проекта целиком не видели. guest_20040621 Как справедливо заметил Old Nick, нафиг не упиралось такое ранжирование для количества элементов большего, чем умещается на одном экране. Мне, предположим, вообще не понятно, почему именно ограничение размером экрана? и почему от этого должно быть легче - система приоритетов все равно одна должна быть, а не на каждый экран своя. а если надо в список в файл вывести, например? P.S. а какова табличка по размеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 00:56 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621> И где тут кривизна проетирования? В неестественности задачи. Очень напоминает удаление гланд через задний проход. задача то естественна, весь Activity Management пестрит такими задачами :) Все в строго заданном порядке, никаких сортировок по условиям и т.п. meph, все способы имеют свои ограничения. Мы пересчитываем. Правда работаем с иерархическими структурами и пересчитывается только один уровень. Для больших линейных списков это конечно не выход. Но к сож. в рсубд записи - куча, а не упорядоченный список. На объектных субд было получше в этом плане. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 10:49 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Табличка небольшая будет - тысяч на десять, но так как использовать этот механизм предпологается в разных проектах, то возможно и до 100 000 дотянет. Все же 50 000 апдейтов делать не очень хочется. Хотелось бы сделать, так чтобы потом система не легла в один прекрасный момент. Для тех кому слишком интересно зачем такое понадобилось, самый просто пример: каталог товаров, где владелец может некоторые товары выводить в начале. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 12:48 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
mephкаталог товаров, где владелец может некоторые товары выводить в начале. мы присваиваем в подобных случаях товару категорию (типа ABC).. порядок внутри категории в этом случае не столь важен, главное чтобы товары А были вверху списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 13:25 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
iscrafmмы присваиваем в подобных случаях товару категорию (типа ABC).. порядок внутри категории в этом случае не столь важен, главное чтобы товары А были вверху списка. Вот это уже ближе. Осталось только придумаьт такой механизм, который был бы применим для ВСЕХ товаров, а не для пары-тройки самых важных. Например, чтобы была возможность сегодня выводить колбасу за сыром, но перед рыбой, а завтра все в обратном порядке. з.ы. думаю все уже давно поняли, что требуется получить на выходе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 13:48 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
mephВсе же 50 000 апдейтов делать не очень хочется. Хотелось бы сделать, так чтобы потом система не легла в один прекрасный момент. Ну так чем не подходят предложенные варианты? 1) дополнительное поле (в этом случае не вижу ограничений) 2) prior - строкового/символьного типа, правда здесь я перемудрил автормежду "2" и "3" указывать "29", между "2" и "29" - "28", а между "29" и "3" - "299" и т.д. конечно же, выбирать следует символ со "средним для сортировки" значением между предыдущим и последующим элементом, т.е. между "2" и "3" указывать "25", между "2" и "25" - "23"(или "22"), ну и между "29" и "3" - "295" и т.д. Диапазон символов расширить, т.е. помимо "1-9" использовать другие, тогда на одну символьную позицию "втиснется" несколько сотен элементов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 13:53 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
mephОсталось только придумаьт такой механизм, который был бы применим для ВСЕХ товаров, а не для пары-тройки самых важных. Например, чтобы была возможность сегодня выводить колбасу за сыром, но перед рыбой, а завтра все в обратном порядке. вычисляем коэффициент эффективности, который учитывает рентабельность, скорость выбытия и т.д. и по которому товары ранжируются (разбиваются на категории). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 14:02 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
LR Ну так чем не подходят предложенные варианты? 1) дополнительное поле (в этом случае не вижу ограничений) Вот с этого места поподробнее пожалуйста. А насчет символьного поля у меня есть сомнения...насчет оптимальности и удобства использования такого подохода. Расскажите о том, как Вы предлогаете использовать допольнительное поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 15:16 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> я так полагаю, что не от хорошой жизни и не программеры эту систему приоритетов > придумали, а заказчику она понадобилась Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование. > задача то естественна Арбузы после помидоров - естественно? > весь Activity Management Вы действительно не видите разницы? > каталог товаров, где владелец может некоторые товары выводить в начале Более тупое решение этой задачи, чем Вами предложенное, придумать imho невозможно. Ничего личного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 15:26 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование. Значит заказчик - программер. Хотя мне такие встречались конечно, но один или два. Не помню точно. guest_20040621 Арбузы после помидоров - естественно? Да. Если сегодня день распродажи арбузов. guest_20040621 > весь Activity Management Вы действительно не видите разницы? Не улавливаю. guest_20040621 > каталог товаров, где владелец может некоторые товары выводить в начале Более тупое решение этой задачи, чем Вами предложенное, придумать imho невозможно. Ничего личного. Эт не я предложил. Вольфредо Паррето. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 16:19 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
meph LR Ну так чем не подходят предложенные варианты? 1) дополнительное поле (в этом случае не вижу ограничений) Вот с этого места поподробнее пожалуйста. А насчет символьного поля у меня есть сомнения...насчет оптимальности и удобства использования такого подохода. Расскажите о том, как Вы предлогаете использовать допольнительное поле. Для решения такой задачи на 100 тыс. mephОсталось только придумаьт такой механизм, который был бы применим для ВСЕХ товаров, а не для пары-тройки самых важных. Например, чтобы была возможность сегодня выводить колбасу за сыром, но перед рыбой, а завтра все в обратном порядке. дополнительное поле наверное не поможет, разве что долнительное поле prior для категории/группы/вида наименований, т.е. ORDER BY категория.prior, наименование.prior А мне почему-то (от рыбы, колбасы и сыра:) померещилась другая задача - "временно акцентировать" какой-то товар, "пристегнуть" его вверх списка (акции там разные, распродажи) prior - постоянный, штатный приоритет prior_tmp - временный (для акцентирования товара) ORDER BY <если prior_tmp!=null тогда 0 иначе prior>, prior_tmp - одновременно акцентированного товара не может быть много, значения prior_tmp могут задаваться "вручную" пользователем, в случае автоматизации "шерстить" придется немного, где prior_tmp!=null - предусмотреть действие "удаления всех акцентуаций" - если есть необходимость, предусмотреть действие "перевода временного приоритета в постоянный" - тяжелое, но осознанное действие для всего множества, в результате "временный" порядок становится "постоянным" (а prior_tmp для всех элементов =null) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 16:22 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> Да. Если сегодня день распродажи арбузов. Огорошили. От Вас не ожидал. ОК, вопрос: распродажа арбузов предполагает появление новых свойств у арбузов? Каких именно? > Не улавливаю. Жаль. > Эт не я предложил. Вольфредо Паррето. Ага. Взял и предложил ранжировать весь ассортимент супермаркета. Самому не смешно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 20:59 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Огорошили. От Вас не ожидал. у меня сегодня настроение такое. guest_20040621 ОК, вопрос: распродажа арбузов предполагает появление новых свойств у арбузов? Каких именно? Распродажа арбузов появление новых свойств конечно не предполагает, она предполагает изменение некоторых существующих. Ребята мерчендайзеры вываливают их на видное место (меня свойство Размещение), в прайсах они выставляются на первые позиции, чтобы мозолить глаза покупателю и т.д. guest_20040621 Ага. Взял и предложил ранжировать весь ассортимент супермаркета. Самому не смешно? Предложил само ранжирование, а ранжируют все что попадается под руку. Даже в ночных клубах фейс-контроль работает по принципу Парето. 20% запущенных в клуб девушек с хорошей внешностью привлекают выручку 80% клиентов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 21:32 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 > я так полагаю, что не от хорошой жизни и не программеры эту систему приоритетов придумали, > а заказчику она понадобилась Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование. Любопытно... вы с такой уверенностью говорите, как будто этот проект видели... А у меня на руках БД, в которой как раз было аналогичное требование ЗАКАЗЧИКА (оттого в эту тему и заглянул). Нужно было, чтобы записи из списка специальных кодов выводились в некoтором порядке, который (порядок) никакой "формулой" не описывался. Другой разговор, что записей там немного: около 5000 и впридачу они разбиты на 50 подгрупп (в рамках каждой группы свой приoритет). Да и порядок меняется редко, поэтому очень просто всю табличку (точнее, группу) прошерстить (чтобы прибавить единичку к приоритету). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 21:50 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
iscrafmПредложил само ранжирование, а ранжируют все что попадается под руку. Даже в ночных клубах фейс-контроль работает по принципу Парето. 20% запущенных в клуб девушек с хорошей внешностью привлекают выручку 80% клиентов. :) а если запускать 50% девушек с хорошей внешностью? клиенты разорятся? Никак для себя не уясню - это (попытки применения принципа Паретто, ABC-анализ) "дань моде" или уже "норма жизни" современных ИС? Кстати, в одной статье, посвященной техноценозу (http://www.kudrinbi.ru/ когда-то кто-то здесь давал ссылку), русский профессор Кудрин опубликовал несколько другое соотношение, не такое "универсальное" как у Паретто, но, как я понял, основанное на хорошей статистике: 5-10% особей-изделий относится к "ноевым" кастам (уникальным, редким), что составляет 40-60% видового состава - объема словаря ну и 40-60% всех особей-изделий попадают в "саранчевые" касты (массовые), что составляет 5-10% общего числа видов Это я к тому, что, возможно, специальные исследования "фейс-контроля в ночных клубах" дадут совершенное другой результат(выручка зависит от других факторов) или другое соотношение (не 20-80, и в каждом клубе - свое), imho естественно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 22:19 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> предполагает изменение некоторых существующих Например? Типа косточки при разрезании начинают разбегаться? > Ребята мерчендайзеры вываливают их на видное место (меня свойство Размещение) Это не свойство арбузов. Полагаю, им абсолютно фиолетово, кто, когда и куда их положил. Они от перемещения не становятся менее арбузами или более арбузами. Еще наводящий вопрос: какая сущность изменяет свое состояние при перемещении арбузов. > в прайсах они выставляются на первые позиции Быть на первой позиции прайс-листа - это тоже не свойство арбузов. > Предложил само ранжирование И? Прочтите, пожалуйста, наводящие вопросы и предложите свой вариант ответа на вопрос: "как сформировать витрину товаров?". > вы с такой уверенностью говорите, как будто этот проект видели Нет, этот не видел. Но видел кучу других задач, сформулированных и решенных не менее тупым образом. > А у меня на руках БД, в которой как раз было аналогичное требование ЗАКАЗЧИКА Заказчик никак, никоим образом не может иметь возможность формулировать требования к структуре базы данных. > Нужно было, чтобы записи из списка специальных кодов выводились в некoтором > порядке, который (порядок) никакой "формулой" не описывался. Ну, во-первых, коды - это не товарная номенклатура. Из кодов витрину для визуального выбора не формируют. А во-вторых, Вы задачу полностью опишите, - будет понятно, правильно она была решена или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 23:10 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 Это не свойство арбузов. Полагаю, им абсолютно фиолетово, кто, когда и куда их положил. Они от перемещения не становятся менее арбузами или более арбузами. Еще наводящий вопрос: какая сущность изменяет свое состояние при перемещении арбузов. Вы вынуждаете много текста писать, не хочется. Возможно карточка учета наличия арбузов или что-то в этом роде, а не сам арбуз как дар природы . Думаю можно обойтись без таких подробностей. ок? Тем более, что суть задачи и ее решения от этого не меняется. guest_20040621 И? оказалось очень удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2007, 23:33 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> карточка учета наличия арбузов или что-то в этом роде, а не сам арбуз как дар природы Я бы не назвал это карточкой учета, ну да ладно. Последний наводящий вопрос: для какой цели Вы предлагаете завести у сущности некий дополнительный атрибут, который на самом деле никакого отношения к этой сущности не имеет? > оказалось очень удобно Сделайте над собой усилие, чуть подробнее: что удобно? ;) На самом деле ранжирование здесь абсолютно ни при делах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 02:00 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621 На самом деле ранжирование здесь абсолютно ни при делах. Ну почему же. Автору нужно некоторые позиции показывать в заголовке списка. Как вариант - ранжирование по категориям. В этом случае список номенклатуры упорядочивается по категории. Наиболее важные позиции будут в начале списка. Нормальный вариант для разгребания завалов, часто применяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 14:20 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> Ну почему же. По определению. Типичный случай кривой постановки задачи и кривой ее реализации. Что есть витрина? Выбранный по некоторым критериям товар. Может витрина формироваться динамически? Может. Может быть персональной? Может. Может зависеть от каких-то дополнительных внешних факторов? Может; и как правило зависит. Так для чего здесь может в принципе пригодиться ранжирование всей номенклатуры товаров? Правильно, ни для чего. > показывать в заголовке списка Для этого и нужно иметь дополнительные атрибуты списка, а не дополнительные атрибуты товаров. > Как вариант - ранжирование по категориям. У-у-у... давайте не будем лезть в дебри. Если простая задача вызывает столько проблем, я себе представляю, что может получиться, если рассматривать еще и классификацию. Классификация сама по себе - одна из наиболее сложных задач для проектирования. > Нормальный вариант для разгребания завалов, часто применяется. Частота применения ничего не говорит о "нормальности" применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 15:56 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621Что есть витрина? Выбранный по некоторым критериям товар. Может витрина формироваться динамически? Может. Может быть персональной? Может. Может зависеть от каких-то дополнительных внешних факторов? Может; и как правило зависит. Так для чего здесь может в принципе пригодиться ранжирование всей номенклатуры товаров? Правильно, ни для чего. я не знаю что Вы понимаете под "витриной товаров" и откуда она вообще взялась, поэтому развить мысль тяжеловато. Разговор идет о том, как упорядочить список товаров. guest_20040621 > показывать в заголовке списка Для этого и нужно иметь дополнительные атрибуты списка, а не дополнительные атрибуты товаров. возможно. с этим никто и не спорит. guest_20040621 > Как вариант - ранжирование по категориям. У-у-у... давайте не будем лезть в дебри. Если простая задача вызывает столько проблем, я себе представляю, что может получиться, если рассматривать еще и классификацию. Классификация сама по себе - одна из наиболее сложных задач для проектирования. да каких проблем? Где Вы их видите? guest_20040621 > Нормальный вариант для разгребания завалов, часто применяется. Частота применения ничего не говорит о "нормальности" применения. Вы не применяете, пожалуйста. Кто-то применяет. Не вижу ничего в этом плохого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 16:46 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> откуда она вообще взялась Автор треда соизволил таки исходную задачу сформулировать. Оттуда и взялась. > Не вижу ничего в этом плохого. Я тоже. ;) Каждый волен рыть себе яму самостоятельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 17:06 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621Я тоже. ;) Каждый волен рыть себе яму самостоятельно. уважаемый guest_20040621 не могли бы вы предложить правильный, с вашей точки зрения, подход к решению данной задачи? Просто, даже любопытно стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 18:39 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Не вижу ничего в этом плохого. Я тоже. ;) Каждый волен рыть себе яму самостоятельно. значит респект и продолжаем копать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2007, 23:10 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
С проблемой топика сталкивался, но у меня к счастью база небольшая, меняется строго 1 человеком и делается именно апдейт prior. Ну и само собой поменять и удалить приоритеты можно. guest_20040621Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности. Не согласен. В моём (да и не только) случае эти правила "экзотической сортировки" были бы крайне громоздки и излишни - при таких-то значениях поля А сортируем так, при остальных эдак... Поэтмоу я ввёл ordered (по топику prior) и сам выбераю что в каком порядке выводить. Конечно это лишний аттрибут, к сущности отношения не имеющий, но удобный очень. Поиск решения, лучшего чем апдейты половины записей тема безусловно интересная )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2007, 12:31 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
LR конечно же, выбирать следует символ со "средним для сортировки" значением между предыдущим и последующим элементом, т.е. между "2" и "3" указывать "25", между "2" и "25" - "23"(или "22"), ну и между "29" и "3" - "295" и т.д. С таким подходом могут возникнуть проблемы. Допустим, что каждый следующий элемент вставляется перед предыдущим. Тогда, если используем только цифры - без увеличения длины строки вставим только 3 элемента (25-22-21), после чего понадобится новый разряд. Если использовать другие символы (возьмем один байт, 255 символов) - то удастся вставить 7 элементов и потом - новый разряд. Для нескольких тысяч элементов картина получается невеселая. Конечно, условие типа того что следующий элемент вставляется перед предыдущим на практике встретится вряд ли, но хочется все-таки универсальное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2007, 13:09 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
УриЕсли использовать другие символы (возьмем один байт, 255 символов) - то удастся вставить 7 элементов и потом - новый разряд. Да, действительно, фигово получается... Пока что единственным очевидно "правильным" решением для большого количества элементов выглядит наличие классификатора c приоритетом групп/подгрупп и относительно небольшим количеством элементов в подгруппе. Возможно ли сделать подобный "классификатор" для упорядочивания, который бы поддерживался системой автоматически, без вмешательства пользователя, и был бы "дешевле перенумерования хвоста списка"? Т.е. некая дополнительная саморегулируемая иерархическая структура... х.з., тут, наверное, придется экспериментировать (макс.колич. элементов в группе, постоянное или зависит от общего количества (процент), и т.п.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2007, 19:09 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
2 LR: Перенумеровывайте не хвост, а голову.(сортируйте не по возрастанию, а у по убыванию) Толкотня будет вверху списка, перенумерацию делайте с небольшим шагом, вставка будет частенько без подвижки происходить, а как вырастет максимальное значение выше заданного предела - полную перенумерацию учините("сборку мусора" произведите) Если использовать BIGINT - перенумерация потребуется нескоро и будет происходить нечасто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 10:22 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
LRПока что единственным очевидно "правильным" решением для большого количества элементов выглядит наличие классификатора c приоритетом групп/подгрупп и относительно небольшим количеством элементов в подгруппе. guest_20040621 дело говорит (между строк :)). Вы заходите в супер-маркет и не хотите видеть все товары сразу. Для этого вы что? Ранжируете их? - есть товары для беременных - есть товары для начальников - есть товары для "арбузников" У всех ранжирование разное, и не стоит при приходе нового арбуза переранжировать весь супер-маркет. ЗЫ. IMHO когда появятся нормальные свойства товаров, а не только одно (с именем - "Важный"), тогда появятся и варианты решения задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 16:23 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за участие! Многие из Вас задаются постановкой задачи, ее сутью, а хотелось бы услышать решение... Я с Вами согласен, когда вы заходите в магазин вы вначале находите нужный вам отдел, а вот там уже выставлены рекламные товары и только после них все остальные товары этого отдела. Реализация от этого не изменится особо: если придумать как сделать механизм выставления\изменения приоритетов, то перенести на множество отделов не составит труда. На данном этапе из приемлимых вариантов я вижу только решение, которое позволяет добавлять в конец товар и менять местами товары, но но вставлять товар в середину(ну не позволяет религия для половины записей менять приор только из-за одного изменения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:01 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
meph(ну не позволяет религия для половины записей менять приор только из-за одного изменения). Дырки оставляйте и меняйте приор в малой окрестности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:40 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
> вначале находите нужный вам отдел, а вот там уже выставлены рекламные товары > и только после них все остальные товары этого отдела Ну и в чем проблема реализовать такую структуру данных? Словами все уже написано. Для простого случая: create table promo_action ( ... time_start time_end ... ); create table promo_list ( ... rel_commodity_id, rel_promo_action_id, -- есть желание ранжировать - без проблем. Но здесь, а не все товары подряд. Imho и здесь ранжирование нафиг не нужно. ... ); Нужен таргетинг по отделам - добавить. Нужно типизировать акции - добавить. Нужна связь акций с вендорами - добавить. Нужен план акций - добавить. Нужен план скидок - добавить. > Реализация от этого не изменится особо Принципиально изменится. > для половины записей Мне 72 кеглем написать, что ранжировать все товары - глупость? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2007, 17:54 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
по поводу "заказчик дурак и сам не знает, чего хочет" БД. Список районов. (правда- всего 10 штук). Районы должны быть упорядочены "именно так" (тыкая пальчиком в бумазьку). "пачему?" Потому что отчеты сдаются в горисполком, где их подкладывают под другие отчеты, которые упорядочены именно так - и так их удобно сравнивать. Почему отчеты в горисполкоме упорядочены "именно так" - а хрен его знает :-( зы у меня, кста, и иконки на десктопе, и "квик лаунч", и "старт меню" упорядочены не по алфавиту, а "как мне нравицо". так шта - случаи разные бывают, иногда - такие зобавные, и фраза "да вам это не нада!!!!" - несколько резковата... ззы упорядочить список деталей согласно прилагаемому классификатору... млин... для самолёта... Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 15:51 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
а если сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 18:54 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Согласен, что если начать обсуждать умственные способности заказчика - остаться без заказа. Если заказ есть, надо делать. У меня тоже такая проблема стоит, только с подразделениями в фирме. Вот хочет руководство чтобы подразделения во всех отчетах печатались именно в таком порядке, по алфавиту их совсем не устраивает. Их конечно не больше 200 и мне подойдет метод апдейта кучи записей при вставке/удалении/перемещении одной. Но чисто теоритически очень интересует.. а как быть то? Есть вариант когда в таблице храним ссылку на предыдущий элемент (получется как бы дерево, только с одним единственным путем) и при изменеии надо будет менять максимум 3 записи... Но тогда все это отсортировать проблемно получается на MS SQL до 2005. А вот в 2005 MSSQL как и в Oracle уже есть возможность раскрутить это "псевдо дерево" в любую сторону. Вот такие мысли.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2007, 21:49 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Добавьте целочисленное поле order, присваивайте ордера через 10 -ку или сотню и вся проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 00:18 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
H.A.M.а если сделать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Я тоже это хотел предложить. Но как потом сортировать по этому полю? В Оракле можно через connect by, а если у автора другая СУБД? Писать процедуру рекурсивного заполнения другого поля, которое и использовать прямо для сортировки? Вызывать ее из триггеров? Что при этом будет с производительностью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 11:26 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
H.A.M. wrote: > а если сделать так: > > table goods: > id name > *1* arbuz > *2* salo > *3* miaso > > table priors: > id nextid > *1* *2* > *2* *3* > *3* NULL > > dobavit': > + *4* kivi posle arbuza > > table priors: > id nextid > *1* *4* > *2* *3* > *3* NULL > *4* *2* > > ну список короче, можно и predid добавить... ??? Лучше иметь достаточно редкий гемор с update толпы записей, чем постоянный гемор с "раскручиванием" списка при выборках. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 12:51 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
Ну да, без connect by трудновато будет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 15:19 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
К решению со списком: при условии, что prior не участвует в критериях выборки, сортировать можно на клиенте. Другой вариант: организовать дерево, тогда для выборки придетсчя писать несколько запросов или использовать рекурсивный запрос: несколько громоздко, но, в целом, работать будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 19:40 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
А да кстати - сортируй на клиенте если скбд не позволяет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 03:12 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
locky Я лучше один раз напишу систему и забуду про неё, пусть она без моего участия работает, чем помнить что каждые n-месяцев надо запускать какой-то там апдейт, который чего-то там пересчитывает. Хотя конечно это дело личных предпочтений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 08:03 |
|
||
|
Система приоритетов
|
|||
|---|---|---|---|
|
#18+
smeh wrote: > Я лучше один раз напишу систему и забуду про неё, > пусть она без моего участия работает, > чем помнить что каждые n-месяцев надо запускать какой-то там апдейт, > который чего-то там пересчитывает. пересчет вроде как логичнее делать сразу после изменения данных.. Тем паче - лучше сосчитать один раз (при изменении), чем считать 300 раз при выборе.... Хотя да, дело вкуса... :-) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 14:46 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1544799]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
102ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 545ms |

| 0 / 0 |
