|
|
|
Типичные решения для внутренней почты
|
|||
|---|---|---|---|
|
#18+
Вопрос не касается java напрямую, но, думаю, здесь есть люди с нужным опытом. Вопрос, собственно, в чем. Нужно привязать к системе внутреннюю почту. Стандартные функции: отправить письмо, входящие, исходящие, удаленные, рассылки по нескольким адресатам. Вопрос, которые возникает, как лучше всего реализовывать удаление письма клиентом? Т.е. не как удалить письмор само по себе, а как правильно спроектировать структуру данных так, чтобы можно было реализовать удаление. Допустим, человек отправляет письмо другому человеку. Понятное дело, чтобы не было дублирования данных, хранить это писбмо нужно в единственном экзмепляре. Просто для одного оно в списке взордящих, а ждя другого в списке исходящих. Но когда один из участинков, решает удалить письмо, то у него оно должно удалиться, а у второго остаться. С двумя участниками, когда можно отправлять только от одного к другому, можно решить добавлением каких-нибудь булевых полей deletedFrom, deletedTo, например. И на основании этих полей можно понять, кто из них удалил этот письмо, и кому его не нужно показывать. Но вот вопрос, что делать, когда нужно организовать рассылку? Тут число таких полей непредсказуемо. А хранить отдельно для каждого участника свою копию - опять же, возникает избыточность. Что, если рассылка по 100 юзерам. Получаем лишних 99 писем дублированных. Оно понятно, что в современном мире на такую избыточность можно забить в угоду удобству управления всем этим, но все же, как обычно такие задачи решаются? Единственное, что приходит на ум, чтобы не было избыточности, хранить какие то пары значений вида {юзер - удалено ли} с каждым письмом. Но как-то кривовато выглядит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 16:55:32 |
|
||
|
Типичные решения для внутренней почты
|
|||
|---|---|---|---|
|
#18+
1) Избыточность != плохо. 2) Если все же хотите, что бы письмо было уникально на уровне системы, то очевидно надо поддерживать список ссылающихся на него юзеров. То есть это будет Msg1: Usr1, Usr4, Usr20 Msg2: Usr1, Usr2 и т.д. При удалении пользователя из системы, вы удаляете все его вхождения по письмам. При удалении пользователем письма, удаляете соответствующее соответствие Msg-Usr. Если получилось письмо, на которое больше никто не ссылается - тут уж думайте сами, что хотите делать: удалить его полностью, или же сохранять по всяким legal-соображениям. Вообще очень мутно ваша затея выглядит. 90%, что это переизобретение велосипеда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:01:47 |
|
||
|
Типичные решения для внутренней почты
|
|||
|---|---|---|---|
|
#18+
авторВообще очень мутно ваша затея выглядит. 90%, что это переизобретение велосипеда. Велосипед в каком плане: есть решения, чтобы не было избыточности, или не париться о ней вообще, и делать как удобно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:04:20 |
|
||
|
Типичные решения для внутренней почты
|
|||
|---|---|---|---|
|
#18+
kiR@ch... Единственное, что приходит на ум, чтобы не было избыточности, хранить какие то пары значений вида {юзер - удалено ли} с каждым письмом. Мухи отдельно от котлет: таблица Пользователь (UserId, ...) таблица Письмо (MsgId, ...) таблица Очередь (UserId, MsgId, Type, ...) Type -> входящее, исходящее, удаленное и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:12:48 |
|
||
|
Типичные решения для внутренней почты
|
|||
|---|---|---|---|
|
#18+
kiR@chВелосипед в каком плане: есть решения, чтобы не было избыточности, или не париться о ней вообще, и делать как удобно? в плане внутренней почты. весьма вероятно, что есть уже готовое. возможно даже не одно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2012, 17:35:48 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37820052&tid=2131677]: |
0ms |
get settings: |
11ms |
get forum list: |
31ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
341ms |
get tp. blocked users: |
1ms |
| others: | 1429ms |
| total: | 1891ms |

| 0 / 0 |
