Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Производные объекты / 5 сообщений из 5, страница 1 из 1
31.08.2006, 15:45
    #33955872
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производные объекты
Кто как решает следующую задачу?

В базе данных хранится документ. Время от времени пользователь создаёт новую редакцию этого документа. Редакция документа создаётся так: пользователь создаёт копию документа, изменяет некоторые части этой копии, сохраняет модифициованную копию документа в БД. В итоге в БД храниться множество редакций документа.
Проблема возникает когда пользователь обнаруживает ошибку в первой редакции документа, и эта ошибка уже продублирована во всех следующих редакциях.
Требуется после исправления ошибки в первой редакции документа автоматически исправить и все последующие редакции.
Документ не атомарный, т.е. его можно разделить на независимые атомарные с точки зрения изменений части. Т.е. любое изменение атомарной части документа можно расценивать как изменение всей этой части и только её.

Как вариант, можно для каждой части документа сохранить ссылку на источник и по этим ссылкам трассировать распространение ошибки. Какие ещё варианты?

Можно усложнить задачу - ввести зависимости между частями документа. Т.е. исправление части документа может отразится на других частях документа.
...
Рейтинг: 0 / 0
31.08.2006, 15:47
    #33955877
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производные объекты
По идее, имхо, исправление ошибки такое же изменение редакции документа. Смысл тогда хранить редакции если их можно "задним числом" править?
...
Рейтинг: 0 / 0
31.08.2006, 16:24
    #33956052
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производные объекты
iscrafmПо идее, имхо, исправление ошибки такое же изменение редакции документа. Смысл тогда хранить редакции если их можно "задним числом" править?

Смысл в том чтобы каждая редакция документа в БД была актуальной.
В данном случае в БД хранятся не первичные документы, а их копии. Ошибка может возникнуть, например, во время заведения редакции первичного документа в БД.
...
Рейтинг: 0 / 0
01.09.2006, 11:41
    #33957883
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производные объекты
Для каждого атома иметь два поля, только одно из которых может быть заполнено:
ссылка на атом-прототип,
значение атома.
Вариант - документ имеет единую ссылку на предшествующую версию документа, а атомы - признак "задан ссылкой/ задан значением".
...
Рейтинг: 0 / 0
01.09.2006, 11:54
    #33957948
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производные объекты
ModelRДля каждого атома иметь два поля, только одно из которых может быть заполнено :
ссылка на атом-прототип,
значение атома.
Вариант - документ имеет единую ссылку на предшествующую версию документа, а атомы - признак "задан ссылкой/ задан значением".

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

Возможно, имеет смысл выполнять не копирование, а копирование с модификацией и соханять в системе операции, которые нужно выполнить, чтобы получить из редакции n редакцию n+1. Тогда, исправляем редакцию n, а редакцию n+1 пересоздаём повторным выполнением сохранённых операций.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Производные объекты / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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