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

start [/forum/topic.php?desktop=1&fid=32&tid=1545070]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 478ms |

| 0 / 0 |
