
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.08.2006, 15:45
|
|||
|---|---|---|---|
Производные объекты |
|||
|
#18+
Кто как решает следующую задачу? В базе данных хранится документ. Время от времени пользователь создаёт новую редакцию этого документа. Редакция документа создаётся так: пользователь создаёт копию документа, изменяет некоторые части этой копии, сохраняет модифициованную копию документа в БД. В итоге в БД храниться множество редакций документа. Проблема возникает когда пользователь обнаруживает ошибку в первой редакции документа, и эта ошибка уже продублирована во всех следующих редакциях. Требуется после исправления ошибки в первой редакции документа автоматически исправить и все последующие редакции. Документ не атомарный, т.е. его можно разделить на независимые атомарные с точки зрения изменений части. Т.е. любое изменение атомарной части документа можно расценивать как изменение всей этой части и только её. Как вариант, можно для каждой части документа сохранить ссылку на источник и по этим ссылкам трассировать распространение ошибки. Какие ещё варианты? Можно усложнить задачу - ввести зависимости между частями документа. Т.е. исправление части документа может отразится на других частях документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2006, 15:47
|
|||
|---|---|---|---|
Производные объекты |
|||
|
#18+
По идее, имхо, исправление ошибки такое же изменение редакции документа. Смысл тогда хранить редакции если их можно "задним числом" править? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.08.2006, 16:24
|
|||
|---|---|---|---|
Производные объекты |
|||
|
#18+
iscrafmПо идее, имхо, исправление ошибки такое же изменение редакции документа. Смысл тогда хранить редакции если их можно "задним числом" править? Смысл в том чтобы каждая редакция документа в БД была актуальной. В данном случае в БД хранятся не первичные документы, а их копии. Ошибка может возникнуть, например, во время заведения редакции первичного документа в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2006, 11:41
|
|||
|---|---|---|---|
Производные объекты |
|||
|
#18+
Для каждого атома иметь два поля, только одно из которых может быть заполнено: ссылка на атом-прототип, значение атома. Вариант - документ имеет единую ссылку на предшествующую версию документа, а атомы - признак "задан ссылкой/ задан значением". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.09.2006, 11:54
|
|||
|---|---|---|---|
Производные объекты |
|||
|
#18+
ModelRДля каждого атома иметь два поля, только одно из которых может быть заполнено : ссылка на атом-прототип, значение атома. Вариант - документ имеет единую ссылку на предшествующую версию документа, а атомы - признак "задан ссылкой/ задан значением". Работать со ссылками не удобно, поскольку эти самые ссылки приходится каждый раз разрешать на значения атомов, отсюда желание создавать копию всего документа, а затем вносить изменения в неё. Возможно, имеет смысл выполнять не копирование, а копирование с модификацией и соханять в системе операции, которые нужно выполнить, чтобы получить из редакции n редакцию n+1. Тогда, исправляем редакцию n, а редакцию n+1 пересоздаём повторным выполнением сохранённых операций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=32&tablet=1&tid=1545070]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 457ms |

| 0 / 0 |
