Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Задача показалась интересной / 17 сообщений из 17, страница 1 из 1
18.11.2015, 11:57
    #39106402
freeElk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Добрый день всем!
Возникла задача.

Дано список документов и адресатов.
Каждый документ должен быть отправлен по email каждому адресату один раз.
Некоторые документы уже отправлены, о чем есть запись в журнале.
Необходимо отправить остальные.
При этом необходимо использовать минимальное количество писем.
...
Рейтинг: 0 / 0
18.11.2015, 12:04
    #39106416
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Ну, раз тебе эта лаба кажется интересной - поздравляю.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.11.2015, 12:07
    #39106419
freeElk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Dimitry Sibiryakov,

это не лаба. на самом деле, это реальная задача.
у меня есть живые бухгалтера и накладные )))
...
Рейтинг: 0 / 0
18.11.2015, 12:10
    #39106423
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
freeElkэто не лаба. на самом деле, это реальная задача.
у меня есть живые бухгалтера и накладные )))
Живые бухгалтера и накладные не рассылают все документы всем получателям. И уж тем более у
них не стоит требование делать это "минимальным количеством писем".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.11.2015, 12:19
    #39106440
freeElk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Dimitry Sibiryakov,
Почему же. специально для тебя, конкретика.
Смотри, есть список бухгалтеров кредиторской группы, которые должны проверять входящие рассчеты корректировок от контрагентов перед их регистрацией в налоговой.
При этом точно нельзя сказать, какие бухгалтера сегодня работают с тем или иным контрагентом. Поэтому рассылка идет всем ответственным бухгалтерам, а отвечает тот, кто сегодня занимается с данным контрагентом.
Документы выгружаются из регистрационной системы по мере поступления, скажем один раз в день и рассылаются. Сейчас это делается вручную.
Если ты считаешь данный процесс не идеальным, советуй.
Я тоже не считаю, но се ля ви.
...
Рейтинг: 0 / 0
18.11.2015, 12:31
    #39106462
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
freeElkу меня есть живые бухгалтера и накладные )))
Тогда это работа бухгалтера. И не стоит у человека отнимать его кусок хлеба.
...
Рейтинг: 0 / 0
18.11.2015, 12:32
    #39106464
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
freeElkконкретика.
Как-то эта конкретика сильно отличается от изначальной постановки. Если рассылка идёт по
внутренней электронной почте, то не может быть получателя, которому какой-то документ не
ушёл: он либо отправлен всем, либо вообще не отправлен. Задача минимизации количества
писем тоже не стоит: один документ - одно письмо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.11.2015, 12:40
    #39106485
Гхостик
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
for c in (
  select r.id, r.email, listagg(d.id,',') within group (order by d.id) d
  from doc d, recipient r
  where not exists (select null from doc_send s where s.doc = d.id and s.recipient = r.id)
  group by r.id, r.email
) loop
    utl_mail.send(sender     => 'bot',
                  recipients => c.email,
                  subject    => 'docs',
                  message    => c.d);
  insert into doc_send (doc, recipient)
    select t.column_value, c.id
    from table(split_strings(c.d,','));
end loop;


split_strings предлагаю написать самостоятельно. Заполнение doc_send можно перенести по месту обработки, а не отправки.
...
Рейтинг: 0 / 0
18.11.2015, 12:51
    #39106502
freeElk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Dimitry Sibiryakov,
Да, ты прав в том, что я несколько ультрировал ситуацию, превратив ее в академическую.
Просто стало интересно, как ее решить именно такую правильно с точки зрения теории.
...
Рейтинг: 0 / 0
18.11.2015, 12:54
    #39106508
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
freeElkстало интересно, как ее решить именно такую правильно с точки зрения теории.

Согласно ТЗ.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.11.2015, 13:16
    #39106545
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
freeElkДа, ты прав в том, что я несколько ультрировал ситуацию, превратив ее в академическую.
Просто стало интересно, как ее решить именно такую правильно с точки зрения теории.
Да как бы очевидно. В конкретной постановке - послать одно письмо, список адресатов = "все бухгалтера", список аттачей = "все файлы". В общей - если считается, что каждый документ должен быть послан какому-то своему списку получателей - составить матрицу "что кому", редуцировать в ней совпадающие строки и совпадающие столбцы, посмотреть, чего меньше - строк или столбцов - и соответственно отправить письмом либо отдельно каждую строку (этот документ всем подписанным получателям) либо каждый столбец (этому получателю все подписанные документы).
...
Рейтинг: 0 / 0
18.11.2015, 13:30
    #39106574
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
softwarer В общей - если считается, что каждый документ должен быть послан какому-то своему списку получателей - составить матрицу "что кому", редуцировать в ней совпадающие строки и совпадающие столбцы, посмотреть, чего меньше - строк или столбцов - и соответственно отправить письмом либо отдельно каждую строку (этот документ всем подписанным получателям) либо каждый столбец (этому получателю все подписанные документы).

Это не даст минимума писем (непонятно кому и зачем может понадобиться экономить на кол-ве email-ов, но постановка есть постановка).
...
Рейтинг: 0 / 0
18.11.2015, 13:42
    #39106592
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Кот МатроскинЭто не даст минимума писем
У меня тоже было такое впечатление, но прикинув варианты, я не смог его обосновать. Дальше можно собрать ещё большие "суперпакеты n*m", но за счёт мелких остатков "васе нужно дослать пару документов" у меня выходило то же общее количество. Всё, конечно, в уме за пол-минуты.
...
Рейтинг: 0 / 0
18.11.2015, 14:12
    #39106635
Кот Матроскин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
softwarerКот МатроскинЭто не даст минимума писем
У меня тоже было такое впечатление, но прикинув варианты, я не смог его обосновать. Дальше можно собрать ещё большие "суперпакеты n*m", но за счёт мелких остатков "васе нужно дослать пару документов" у меня выходило то же общее количество. Всё, конечно, в уме за пол-минуты.

Хм, да, мой кейс дает меньше писем, но один и тот же документ одному и тому же получателю доходит несколько раз.
Так что исходную задачу с ограничениями Ваш алгоритм, наверно, решает.
...
Рейтинг: 0 / 0
18.11.2015, 14:43
    #39106691
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
Кот Матроскин, да, мне тоже кажется, что дальнейшее уменьшение количества писем может идти только за счёт избыточности - либо слать документ тому, кому он не нужен, либо что-то подобное.
...
Рейтинг: 0 / 0
18.11.2015, 14:46
    #39106700
freeElk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
В реальной ситуации я не заморачивался уменьшением почтового траффика.
Посылаю каждому бухгалтеру отдельное письмо со списком документов.
Вариант одно письмо - один документ имеет свои плюсы. Но увеличивает время обработки писем бухгалтером.

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

послать одно письмо, список адресатов = "все бухгалтера", список аттачей = "все файлы".

Таблица документов всегда может содержать как отправленные, так и неотправленные документы. Она пополняется другим процессом. Я вышел из ситуации при помощи журнала отправленных. Может я неправильно вижу задачу?
...
Рейтинг: 0 / 0
20.11.2015, 12:13
    #39108799
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача показалась интересной
уже отправляли тут
http://www.sql.ru/forum/1182894/spor-pro-ocherednik
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Задача показалась интересной / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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