powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Система приоритетов
63 сообщений из 63, показаны все 3 страниц
Система приоритетов
    #34238649
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, всезнающий Олл!
Помогите с простой задачкой, никак не могу придумать стоящее решение.
Все просто: каталог есть айтемов, нужно создать систему приоритетов для них на уровне БД.
То есть табличка из трех полей: id, item, prior.
Первое что приходит в голову это ORDER BY prior, где prior уникальное. Но как тогда заставить все это вставить запись в середину таблицы и при этом не перешерстить половину записей?
Заранее благодарен!
...
Рейтинг: 0 / 0
Система приоритетов
    #34238686
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какое СУБД Вы используете? Для большинства СУБД нет понятия "середина/начало/конец таблицы" (таблица - множество записей). Т.е. при вставке записи никто/ничто не будет "шерстить половину записей" (структура индексов - древовидная, глубина примерно одинакова для всех записей).
Осмысленным может быть, например, "середина/начало/конец выборки с таким-то ORDER BY..."
...
Рейтинг: 0 / 0
Система приоритетов
    #34238694
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mephПервое что приходит в голову это ORDER BY prior, где prior уникальное.
Или проблема в другом? в том, что при одинаковых значениях prior теряется однозначность?
...
Рейтинг: 0 / 0
Система приоритетов
    #34238700
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае конкретизировать СУБД нет смысла. Возможно Вы неправильно меня поняли. Под емким понятием "шерстить" я имел в виду тот факт, что, возможно, прийдется изменять поле prior в половине строк таблицы. Как избежать этого? Какой использовать алгоритм для поля prior, чтобы затрачивать как можно меньше обращений к базе?
...
Рейтинг: 0 / 0
Система приоритетов
    #34238703
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LRИли проблема в другом? в том, что при одинаковых значениях prior теряется однозначность?
Естественно, что prior должно быть уникально для однозначного формирования упорядоченного списка
...
Рейтинг: 0 / 0
Система приоритетов
    #34238740
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> нужно создать систему приоритетов для них на уровне БД

Задачу полностью сформулируйте.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238742
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навскидку, пошел бы путем разрешения коллизии одинаковых значений prior - добавил бы еще одно поле (с автоматически генерируемым значением при вставке а возможно и обновлении - identity или timestamp или просто дата-время или другое но такое, чтобы пара значений prior + еще_одно_поле было уникальным), которое бы и использовал в
ORDER BY prior, еще_одно_поле asc|desc
...
Рейтинг: 0 / 0
Система приоритетов
    #34238745
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Можно уточнить?
Имеется ввиду, что нужно хранить в базе упорядоченный список с поддержкой операций
- Вставить после
- Вставить до
с указанием элемента. Конкретные значения prior не важны. Приоритет должен быть уникальным.
Сразу вопрос: как вы будете использовать значение приоритета? Вым нужен будет порядковый номер элемента в списке. Или только ответ на вопрос, какой элемент приоритетней?
...
Рейтинг: 0 / 0
Система приоритетов
    #34238753
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пояснию, что хотел сказать автор топика:

Есть таблица

Строка Приоритет
1 1
2 2
3 3
4 4
5 5

А теперь добавим строку между 2 и 3, какое значение указать? 2 или 3 или 2,5?
Самый простой способ это проапдейтить поле Приоритет увеличив его на единицу
в тех строках, где приоритет более 2, т.е. 3 строки (больше половины всех записей)
...
Рейтинг: 0 / 0
Система приоритетов
    #34238774
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
?Можно уточнить?
Имеется ввиду, что нужно хранить в базе упорядоченный список с поддержкой операций
- Вставить после
- Вставить до
с указанием элемента. Конкретные значения prior не важны. Приоритет должен быть уникальным.
Сразу вопрос: как вы будете использовать значение приоритета? Вым нужен будет порядковый номер элемента в списке. Или только ответ на вопрос, какой элемент приоритетней?
нужна одна операция всего лишь: выборка и вывод элементво по приоритету.
Думаю, что если это реализовать, то остальное будет не проблема
...
Рейтинг: 0 / 0
Система приоритетов
    #34238778
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickПояснию, что хотел сказать автор топика:

Есть таблица

Строка Приоритет
1 1
2 2
3 3
4 4
5 5

А теперь добавим строку между 2 и 3, какое значение указать? 2 или 3 или 2,5?
Самый простой способ это проапдейтить поле Приоритет увеличив его на единицу
в тех строках, где приоритет более 2, т.е. 3 строки (больше половины всех записей)
Идея правильная у Вас, но боюсь, что реализация такая неуместна. Как Вы сами видите, Ваш вариант не работает. Конечно же апдейтить все поля с большим/меньшим приоритетом при добавлении одного лишь элемента это не выход.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238784
Фотография www.dkoh.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238788
Фотография Old Nick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я привел не решение, а пояснил вопрос автора топика.

Я такое решение использую, но только когда колчиество записей на экран входит

А вообще с проблемой автора топика я не сталкивался, видимо криво не проектировал ещё
...
Рейтинг: 0 / 0
Система приоритетов
    #34238833
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
www.dkoh.netExample
Prvaja zapis' vstavljaetsja s prioritetom ravnym polovine maximal'nogo znachenija polja
...
S Novym Godom.
Такой вариант был рассмотрен давно, но в несколько иной интерпритации: просто делать равные промежутки между записямии перемещать записи в пределах этих промежутков. Но Вы сами понимаете, что этот метод будет работать до некоторого момента, пока все не завалится окончательно. Да и об отимальности тут говорить не приходится...Спасибо за вариант, ждем еще предложений. Вас также с наступившим!
...
Рейтинг: 0 / 0
Система приоритетов
    #34238837
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Old NickА вообще с проблемой автора топика я не сталкивался, видимо криво не проектировал ещё
Спасибо за участие, но зачем же обижаться? И где тут кривизна проетирования? Это тривиальная задача: вывести записи в определенном порядке, а не подряд :) Ну и некоторый механизм регулирования этого порядка.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238859
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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" и т.д., т.е. к "строке сверху" добавляем символ - максимальный из возможных в данном месте для сортировки. Сортировка по строковому типу даст нужный порядок.
В таком случае ограничение останется только на размер строкового поля. Ряд символов конечно же целесообразно расширить.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238866
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> И где тут кривизна проетирования?

В неестественности задачи. Очень напоминает удаление гланд через задний проход.
...
Рейтинг: 0 / 0
Система приоритетов
    #34238942
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 wrote:
> > И где тут кривизна проетирования?
>
> В неестественности задачи. Очень напоминает удаление гланд через задний
> проход.
Очень напоминает user defined sorting
ну нравится юзверю, чтобы после "промокашки" в каталоге были "букашки",
а потом решил он между "промокашками" и "букашками" вставить
"арбузики"... А потом решил пересортировать.... Чего бы и нет?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Система приоритетов
    #34238957
миллионер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сколько миллионов записей предполагается в каталоге?
...
Рейтинг: 0 / 0
Система приоритетов
    #34238967
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Чего бы и нет?

Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности. Как справедливо заметил Old Nick, нафиг не упиралось такое ранжирование для количества элементов большего, чем умещается на одном экране. Не очевидно?
...
Рейтинг: 0 / 0
Система приоритетов
    #34239107
Aleah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621 Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности.

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

guest_20040621
Как справедливо заметил Old Nick, нафиг не упиралось такое ранжирование для количества элементов большего, чем умещается на одном экране.

Мне, предположим, вообще не понятно, почему именно ограничение размером экрана? и почему от этого должно быть легче - система приоритетов все равно одна должна быть, а не на каждый экран своя. а если надо в список в файл вывести, например?

P.S. а какова табличка по размеру?
...
Рейтинг: 0 / 0
Система приоритетов
    #34239207
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> И где тут кривизна проетирования?

В неестественности задачи. Очень напоминает удаление гланд через задний проход.
задача то естественна, весь Activity Management пестрит такими задачами :) Все в строго заданном порядке, никаких сортировок по условиям и т.п.

meph, все способы имеют свои ограничения. Мы пересчитываем. Правда работаем с иерархическими структурами и пересчитывается только один уровень. Для больших линейных списков это конечно не выход. Но к сож. в рсубд записи - куча, а не упорядоченный список. На объектных субд было получше в этом плане.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239244
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Табличка небольшая будет - тысяч на десять, но так как использовать этот механизм предпологается в разных проектах, то возможно и до 100 000 дотянет. Все же 50 000 апдейтов делать не очень хочется. Хотелось бы сделать, так чтобы потом система не легла в один прекрасный момент.
Для тех кому слишком интересно зачем такое понадобилось, самый просто пример: каталог товаров, где владелец может некоторые товары выводить в начале.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239266
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mephкаталог товаров, где владелец может некоторые товары выводить в начале.
мы присваиваем в подобных случаях товару категорию (типа ABC).. порядок внутри категории в этом случае не столь важен, главное чтобы товары А были вверху списка.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239278
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iscrafmмы присваиваем в подобных случаях товару категорию (типа ABC).. порядок внутри категории в этом случае не столь важен, главное чтобы товары А были вверху списка.
Вот это уже ближе. Осталось только придумаьт такой механизм, который был бы применим для ВСЕХ товаров, а не для пары-тройки самых важных. Например, чтобы была возможность сегодня выводить колбасу за сыром, но перед рыбой, а завтра все в обратном порядке.
з.ы. думаю все уже давно поняли, что требуется получить на выходе...
...
Рейтинг: 0 / 0
Система приоритетов
    #34239284
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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" использовать другие, тогда на одну символьную позицию "втиснется" несколько сотен элементов...
...
Рейтинг: 0 / 0
Система приоритетов
    #34239293
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mephОсталось только придумаьт такой механизм, который был бы применим для ВСЕХ товаров, а не для пары-тройки самых важных. Например, чтобы была возможность сегодня выводить колбасу за сыром, но перед рыбой, а завтра все в обратном порядке.

вычисляем коэффициент эффективности, который учитывает рентабельность, скорость выбытия и т.д. и по которому товары ранжируются (разбиваются на категории).
...
Рейтинг: 0 / 0
Система приоритетов
    #34239342
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LR
Ну так чем не подходят предложенные варианты?
1) дополнительное поле (в этом случае не вижу ограничений)

Вот с этого места поподробнее пожалуйста.
А насчет символьного поля у меня есть сомнения...насчет оптимальности и удобства использования такого подохода.
Расскажите о том, как Вы предлогаете использовать допольнительное поле.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239349
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> я так полагаю, что не от хорошой жизни и не программеры эту систему приоритетов
> придумали, а заказчику она понадобилась

Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование.

> задача то естественна

Арбузы после помидоров - естественно?

> весь Activity Management

Вы действительно не видите разницы?

> каталог товаров, где владелец может некоторые товары выводить в начале

Более тупое решение этой задачи, чем Вами предложенное, придумать imho невозможно. Ничего личного.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239388
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование.

Значит заказчик - программер. Хотя мне такие встречались конечно, но один или два. Не помню точно.

guest_20040621
Арбузы после помидоров - естественно?

Да. Если сегодня день распродажи арбузов.

guest_20040621
> весь Activity Management

Вы действительно не видите разницы?

Не улавливаю.

guest_20040621
> каталог товаров, где владелец может некоторые товары выводить в начале

Более тупое решение этой задачи, чем Вами предложенное, придумать imho невозможно. Ничего личного.
Эт не я предложил. Вольфредо Паррето.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239391
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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)
...
Рейтинг: 0 / 0
Система приоритетов
    #34239654
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Да. Если сегодня день распродажи арбузов.

Огорошили. От Вас не ожидал.

ОК, вопрос: распродажа арбузов предполагает появление новых свойств у арбузов? Каких именно?

> Не улавливаю.

Жаль.

> Эт не я предложил. Вольфредо Паррето.

Ага. Взял и предложил ранжировать весь ассортимент супермаркета. Самому не смешно?
...
Рейтинг: 0 / 0
Система приоритетов
    #34239703
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Огорошили. От Вас не ожидал.

у меня сегодня настроение такое.

guest_20040621
ОК, вопрос: распродажа арбузов предполагает появление новых свойств у арбузов? Каких именно?

Распродажа арбузов появление новых свойств конечно не предполагает, она предполагает изменение некоторых существующих. Ребята мерчендайзеры вываливают их на видное место (меня свойство Размещение), в прайсах они выставляются на первые позиции, чтобы мозолить глаза покупателю и т.д.


guest_20040621
Ага. Взял и предложил ранжировать весь ассортимент супермаркета. Самому не смешно?
Предложил само ранжирование, а ранжируют все что попадается под руку. Даже в ночных клубах фейс-контроль работает по принципу Парето. 20% запущенных в клуб девушек с хорошей внешностью привлекают выручку 80% клиентов.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239729
Aleah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621
> я так полагаю, что не от хорошой жизни и не программеры эту систему приоритетов придумали,
> а заказчику она понадобилась

Как раз программеры. Вряд ли заказчик мог придумать настолько идиотское требование.


Любопытно... вы с такой уверенностью говорите, как будто этот проект видели... А у меня на руках БД, в которой как раз было аналогичное требование ЗАКАЗЧИКА (оттого в эту тему и заглянул). Нужно было, чтобы записи из списка специальных кодов выводились в некoтором порядке, который (порядок) никакой "формулой" не описывался. Другой разговор, что записей там немного: около 5000 и впридачу они разбиты на 50 подгрупп (в рамках каждой группы свой приoритет). Да и порядок меняется редко, поэтому очень просто всю табличку (точнее, группу) прошерстить (чтобы прибавить единичку к приоритету).
...
Рейтинг: 0 / 0
Система приоритетов
    #34239750
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmПредложил само ранжирование, а ранжируют все что попадается под руку. Даже в ночных клубах фейс-контроль работает по принципу Парето. 20% запущенных в клуб девушек с хорошей внешностью привлекают выручку 80% клиентов.
:) а если запускать 50% девушек с хорошей внешностью? клиенты разорятся?
Никак для себя не уясню - это (попытки применения принципа Паретто, ABC-анализ) "дань моде" или уже "норма жизни" современных ИС?

Кстати, в одной статье, посвященной техноценозу (http://www.kudrinbi.ru/ когда-то кто-то здесь давал ссылку), русский профессор Кудрин опубликовал несколько другое соотношение, не такое "универсальное" как у Паретто, но, как я понял, основанное на хорошей статистике:
5-10% особей-изделий относится к "ноевым" кастам (уникальным, редким), что составляет 40-60% видового состава - объема словаря
ну и
40-60% всех особей-изделий попадают в "саранчевые" касты (массовые), что составляет 5-10% общего числа видов

Это я к тому, что, возможно, специальные исследования "фейс-контроля в ночных клубах" дадут совершенное другой результат(выручка зависит от других факторов) или другое соотношение (не 20-80, и в каждом клубе - свое), imho естественно :)
...
Рейтинг: 0 / 0
Система приоритетов
    #34239784
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> предполагает изменение некоторых существующих

Например? Типа косточки при разрезании начинают разбегаться?

> Ребята мерчендайзеры вываливают их на видное место (меня свойство Размещение)

Это не свойство арбузов. Полагаю, им абсолютно фиолетово, кто, когда и куда их положил. Они от перемещения не становятся менее арбузами или более арбузами. Еще наводящий вопрос: какая сущность изменяет свое состояние при перемещении арбузов.

> в прайсах они выставляются на первые позиции

Быть на первой позиции прайс-листа - это тоже не свойство арбузов.

> Предложил само ранжирование

И?

Прочтите, пожалуйста, наводящие вопросы и предложите свой вариант ответа на вопрос: "как сформировать витрину товаров?".

> вы с такой уверенностью говорите, как будто этот проект видели

Нет, этот не видел. Но видел кучу других задач, сформулированных и решенных не менее тупым образом.

> А у меня на руках БД, в которой как раз было аналогичное требование ЗАКАЗЧИКА

Заказчик никак, никоим образом не может иметь возможность формулировать требования к структуре базы данных.

> Нужно было, чтобы записи из списка специальных кодов выводились в некoтором
> порядке, который (порядок) никакой "формулой" не описывался.

Ну, во-первых, коды - это не товарная номенклатура. Из кодов витрину для визуального выбора не формируют. А во-вторых, Вы задачу полностью опишите, - будет понятно, правильно она была решена или нет.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239804
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Это не свойство арбузов. Полагаю, им абсолютно фиолетово, кто, когда и куда их положил. Они от перемещения не становятся менее арбузами или более арбузами. Еще наводящий вопрос: какая сущность изменяет свое состояние при перемещении арбузов.

Вы вынуждаете много текста писать, не хочется. Возможно карточка учета наличия арбузов или что-то в этом роде, а не сам арбуз как дар природы . Думаю можно обойтись без таких подробностей. ок? Тем более, что суть задачи и ее решения от этого не меняется.


guest_20040621
И?

оказалось очень удобно.
...
Рейтинг: 0 / 0
Система приоритетов
    #34239972
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> карточка учета наличия арбузов или что-то в этом роде, а не сам арбуз как дар природы

Я бы не назвал это карточкой учета, ну да ладно. Последний наводящий вопрос: для какой цели Вы предлагаете завести у сущности некий дополнительный атрибут, который на самом деле никакого отношения к этой сущности не имеет?

> оказалось очень удобно

Сделайте над собой усилие, чуть подробнее: что удобно? ;) На самом деле ранжирование здесь абсолютно ни при делах.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240208
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621 На самом деле ранжирование здесь абсолютно ни при делах.
Ну почему же. Автору нужно некоторые позиции показывать в заголовке списка. Как вариант - ранжирование по категориям. В этом случае список номенклатуры упорядочивается по категории. Наиболее важные позиции будут в начале списка. Нормальный вариант для разгребания завалов, часто применяется.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240270
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ну почему же.

По определению. Типичный случай кривой постановки задачи и кривой ее реализации. Что есть витрина? Выбранный по некоторым критериям товар. Может витрина формироваться динамически? Может. Может быть персональной? Может. Может зависеть от каких-то дополнительных внешних факторов? Может; и как правило зависит. Так для чего здесь может в принципе пригодиться ранжирование всей номенклатуры товаров? Правильно, ни для чего.

> показывать в заголовке списка

Для этого и нужно иметь дополнительные атрибуты списка, а не дополнительные атрибуты товаров.

> Как вариант - ранжирование по категориям.

У-у-у... давайте не будем лезть в дебри. Если простая задача вызывает столько проблем, я себе представляю, что может получиться, если рассматривать еще и классификацию. Классификация сама по себе - одна из наиболее сложных задач для проектирования.

> Нормальный вариант для разгребания завалов, часто применяется.

Частота применения ничего не говорит о "нормальности" применения.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240300
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621Что есть витрина? Выбранный по некоторым критериям товар. Может витрина формироваться динамически? Может. Может быть персональной? Может. Может зависеть от каких-то дополнительных внешних факторов? Может; и как правило зависит. Так для чего здесь может в принципе пригодиться ранжирование всей номенклатуры товаров? Правильно, ни для чего.

я не знаю что Вы понимаете под "витриной товаров" и откуда она вообще взялась, поэтому развить мысль тяжеловато. Разговор идет о том, как упорядочить список товаров.

guest_20040621
> показывать в заголовке списка

Для этого и нужно иметь дополнительные атрибуты списка, а не дополнительные атрибуты товаров.

возможно. с этим никто и не спорит.


guest_20040621
> Как вариант - ранжирование по категориям.

У-у-у... давайте не будем лезть в дебри. Если простая задача вызывает столько проблем, я себе представляю, что может получиться, если рассматривать еще и классификацию. Классификация сама по себе - одна из наиболее сложных задач для проектирования.

да каких проблем? Где Вы их видите?


guest_20040621
> Нормальный вариант для разгребания завалов, часто применяется.
Частота применения ничего не говорит о "нормальности" применения.
Вы не применяете, пожалуйста. Кто-то применяет. Не вижу ничего в этом плохого.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240314
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> откуда она вообще взялась

Автор треда соизволил таки исходную задачу сформулировать. Оттуда и взялась.

> Не вижу ничего в этом плохого.

Я тоже. ;) Каждый волен рыть себе яму самостоятельно.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240363
Aleah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_20040621Я тоже. ;) Каждый волен рыть себе яму самостоятельно.

уважаемый guest_20040621 не могли бы вы предложить правильный, с вашей точки зрения, подход к решению данной задачи? Просто, даже любопытно стало.
...
Рейтинг: 0 / 0
Система приоритетов
    #34240535
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Не вижу ничего в этом плохого.

Я тоже. ;) Каждый волен рыть себе яму самостоятельно.
значит респект и продолжаем копать :)
...
Рейтинг: 0 / 0
Система приоритетов
    #34240961
Frankie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С проблемой топика сталкивался, но у меня к счастью база небольшая, меняется строго 1 человеком и делается именно апдейт prior. Ну и само собой поменять и удалить приоритеты можно.

guest_20040621Ну потому что глупость невероятная. Экзотическую сортировку если и делать, то используя правила, а не уникальные последовательности.
Не согласен. В моём (да и не только) случае эти правила "экзотической сортировки" были бы крайне громоздки и излишни - при таких-то значениях поля А сортируем так, при остальных эдак... Поэтмоу я ввёл ordered (по топику prior) и сам выбераю что в каком порядке выводить. Конечно это лишний аттрибут, к сущности отношения не имеющий, но удобный очень.

Поиск решения, лучшего чем апдейты половины записей тема безусловно интересная ))
...
Рейтинг: 0 / 0
Система приоритетов
    #34241037
Ури
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR
конечно же, выбирать следует символ со "средним для сортировки" значением между предыдущим и последующим элементом, т.е. между "2" и "3" указывать "25", между "2" и "25" - "23"(или "22"), ну и между "29" и "3" - "295" и т.д.


С таким подходом могут возникнуть проблемы. Допустим, что каждый следующий элемент вставляется перед предыдущим. Тогда, если используем только цифры - без увеличения длины строки вставим только 3 элемента (25-22-21), после чего понадобится новый разряд.
Если использовать другие символы (возьмем один байт, 255 символов) - то удастся вставить 7 элементов и потом - новый разряд. Для нескольких тысяч элементов картина получается невеселая. Конечно, условие типа того что следующий элемент вставляется перед предыдущим на практике встретится вряд ли, но хочется все-таки универсальное решение.
...
Рейтинг: 0 / 0
Система приоритетов
    #34241437
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
УриЕсли использовать другие символы (возьмем один байт, 255 символов) - то удастся вставить 7 элементов и потом - новый разряд.
Да, действительно, фигово получается...

Пока что единственным очевидно "правильным" решением для большого количества элементов выглядит наличие классификатора c приоритетом групп/подгрупп и относительно небольшим количеством элементов в подгруппе.
Возможно ли сделать подобный "классификатор" для упорядочивания, который бы поддерживался системой автоматически, без вмешательства пользователя, и был бы "дешевле перенумерования хвоста списка"? Т.е. некая дополнительная саморегулируемая иерархическая структура... х.з., тут, наверное, придется экспериментировать (макс.колич. элементов в группе, постоянное или зависит от общего количества (процент), и т.п.)
...
Рейтинг: 0 / 0
Система приоритетов
    #34242019
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 LR: Перенумеровывайте не хвост, а голову.(сортируйте не по возрастанию, а у по убыванию) Толкотня будет вверху списка, перенумерацию делайте с небольшим шагом, вставка будет частенько без подвижки происходить, а как вырастет максимальное значение выше заданного предела - полную перенумерацию учините("сборку мусора" произведите)
Если использовать BIGINT - перенумерация потребуется нескоро и будет происходить нечасто.
...
Рейтинг: 0 / 0
Система приоритетов
    #34243368
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRПока что единственным очевидно "правильным" решением для большого количества элементов выглядит наличие классификатора c приоритетом групп/подгрупп и относительно небольшим количеством элементов в подгруппе.

guest_20040621 дело говорит (между строк :)).
Вы заходите в супер-маркет и не хотите видеть все товары сразу.
Для этого вы что? Ранжируете их?
- есть товары для беременных
- есть товары для начальников
- есть товары для "арбузников"

У всех ранжирование разное, и не стоит при приходе нового арбуза переранжировать весь супер-маркет.

ЗЫ. IMHO когда появятся нормальные свойства товаров, а не только одно (с именем - "Важный"), тогда появятся и варианты решения задачи.
...
Рейтинг: 0 / 0
Система приоритетов
    #34243531
meph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за участие!
Многие из Вас задаются постановкой задачи, ее сутью, а хотелось бы услышать решение...
Я с Вами согласен, когда вы заходите в магазин вы вначале находите нужный вам отдел, а вот там уже выставлены рекламные товары и только после них все остальные товары этого отдела. Реализация от этого не изменится особо: если придумать как сделать механизм выставления\изменения приоритетов, то перенести на множество отделов не составит труда.
На данном этапе из приемлимых вариантов я вижу только решение, которое позволяет добавлять в конец товар и менять местами товары, но но вставлять товар в середину(ну не позволяет религия для половины записей менять приор только из-за одного изменения).
...
Рейтинг: 0 / 0
Система приоритетов
    #34243690
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
meph(ну не позволяет религия для половины записей менять приор только из-за одного изменения).

Дырки оставляйте и меняйте приор в малой окрестности
...
Рейтинг: 0 / 0
Система приоритетов
    #34243730
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> вначале находите нужный вам отдел, а вот там уже выставлены рекламные товары
> и только после них все остальные товары этого отдела

Ну и в чем проблема реализовать такую структуру данных? Словами все уже написано. Для простого случая:

create table promo_action (
...
time_start
time_end
...
);

create table promo_list (
...
rel_commodity_id,
rel_promo_action_id,
-- есть желание ранжировать - без проблем. Но здесь, а не все товары подряд. Imho и здесь ранжирование нафиг не нужно.
... );

Нужен таргетинг по отделам - добавить. Нужно типизировать акции - добавить. Нужна связь акций с вендорами - добавить. Нужен план акций - добавить. Нужен план скидок - добавить.

> Реализация от этого не изменится особо

Принципиально изменится.

> для половины записей

Мне 72 кеглем написать, что ранжировать все товары - глупость?
...
Рейтинг: 0 / 0
Система приоритетов
    #34246089
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу "заказчик дурак и сам не знает, чего хочет"
БД. Список районов. (правда- всего 10 штук).
Районы должны быть упорядочены "именно так" (тыкая пальчиком в
бумазьку). "пачему?" Потому что отчеты сдаются в горисполком, где их
подкладывают под другие отчеты, которые упорядочены именно так - и так
их удобно сравнивать. Почему отчеты в горисполкоме упорядочены "именно
так" - а хрен его знает :-(

зы у меня, кста, и иконки на десктопе, и "квик лаунч", и "старт меню"
упорядочены не по алфавиту, а "как мне нравицо".
так шта - случаи разные бывают, иногда - такие зобавные, и фраза "да вам
это не нада!!!!" - несколько резковата...

ззы упорядочить список деталей согласно прилагаемому классификатору...
млин... для самолёта...

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Система приоритетов
    #34246760
H.A.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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 добавить... ???
...
Рейтинг: 0 / 0
Система приоритетов
    #34247062
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, что если начать обсуждать умственные способности заказчика - остаться без заказа.
Если заказ есть, надо делать.
У меня тоже такая проблема стоит, только с подразделениями в фирме. Вот хочет руководство чтобы подразделения во всех отчетах печатались именно в таком порядке, по алфавиту их совсем не устраивает.
Их конечно не больше 200 и мне подойдет метод апдейта кучи записей при вставке/удалении/перемещении одной.
Но чисто теоритически очень интересует.. а как быть то?

Есть вариант когда в таблице храним ссылку на предыдущий элемент (получется как бы дерево, только с одним единственным путем)
и при изменеии надо будет менять максимум 3 записи...

Но тогда все это отсортировать проблемно получается на MS SQL до 2005.
А вот в 2005 MSSQL как и в Oracle уже есть возможность раскрутить это "псевдо дерево" в любую сторону.

Вот такие мысли....
...
Рейтинг: 0 / 0
Система приоритетов
    #34247199
Добавьте целочисленное поле order, присваивайте ордера через 10 -ку или сотню и вся проблема.
...
Рейтинг: 0 / 0
Система приоритетов
    #34247972
Shr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H.A.M.а если сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
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 добавить... ???
Я тоже это хотел предложить. Но как потом сортировать по этому полю? В Оракле можно через connect by, а если у автора другая СУБД? Писать процедуру рекурсивного заполнения другого поля, которое и использовать прямо для сортировки? Вызывать ее из триггеров? Что при этом будет с производительностью?
...
Рейтинг: 0 / 0
Система приоритетов
    #34248378
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Система приоритетов
    #34249148
H.A.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, без connect by трудновато будет...
...
Рейтинг: 0 / 0
Система приоритетов
    #34250032
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
К решению со списком: при условии, что prior не участвует в критериях выборки, сортировать можно на клиенте.
Другой вариант: организовать дерево, тогда для выборки придетсчя писать несколько запросов или использовать рекурсивный запрос: несколько громоздко, но, в целом, работать будет.
...
Рейтинг: 0 / 0
Система приоритетов
    #34250405
H.A.M.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А да кстати - сортируй на клиенте если скбд не позволяет :)
...
Рейтинг: 0 / 0
Система приоритетов
    #34250516
Фотография smeh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky
Я лучше один раз напишу систему и забуду про неё,
пусть она без моего участия работает,
чем помнить что каждые n-месяцев надо запускать какой-то там апдейт,
который чего-то там пересчитывает.

Хотя конечно это дело личных предпочтений...
...
Рейтинг: 0 / 0
Система приоритетов
    #34251897
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smeh wrote:
> Я лучше один раз напишу систему и забуду про неё,
> пусть она без моего участия работает,
> чем помнить что каждые n-месяцев надо запускать какой-то там апдейт,
> который чего-то там пересчитывает.
пересчет вроде как логичнее делать сразу после изменения данных..
Тем паче - лучше сосчитать один раз (при изменении), чем считать 300 раз
при выборе....
Хотя да, дело вкуса... :-)
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
63 сообщений из 63, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Система приоритетов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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