Хранение документов в базе

Юрий

Guest
Хранение документов в базе

Суть проблемы в следующем.

В базе есть несколько взаимосвязанных таблиц : главная таблица и таблицы-справочники. На их основе собирается некоторый документ "А" и выдается менеджеру. Менеджер может и должен редактировать этот документ.

Иногда на основе этой базы формируется еще один тип документа "В" (число его модифицированных копии может быть разным). После того как он был сформирован необходимо сохранить его так, чтобы впоследствии всегда можно было к нему вернуться и посмотреть его данные.

Как реализовать сохранение документа "В", который всегда формируется на основе данных из "А". Причем изменение данных в "А" не должно менять данные в сохраненном "В".

(Вариант дубликата таблиц не рассматривается, ищется более простой способ).

P.S.: есть еще вариант- сгенерировать объект, представляющий собой документ "В" и сериализовать его в базу.
 

Aknichy

Новичок
распечатать и положить на полку :)
а если серьезно
почему бы для документов В не создать таблицу (одну), куда запихивается его содержание? разбить на поля - если надо эти поля обновлять (пересобирать документ) из техже табиц-справочников?
 

Юрий

Guest
Автор оригинала: Aknichy
распечатать и положить на полку :)
а если серьезно
почему бы для документов В не создать таблицу (одну), куда запихивается его содержание? разбить на поля - если надо эти поля обновлять (пересобирать документ) из техже табиц-справочников?
Документ очень большой.... не корректно дублировать данные
 

Gremboloid

инженера Гр...
Ты хочешь сделать что-то наподобии хранения истории измениний в документе?
Я у себя делал так:

id докунента
id документа родителя
id того кто изменял
timedate создания документа.
text сам документ

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

Юрий

Guest
Автор оригинала: Gremboloid
Ты хочешь сделать что-то наподобии хранения истории измениний в документе?
Я у себя делал так:

id докунента
id документа родителя
id того кто изменял
timedate создания документа.
text сам документ

Таким образом храню и основной документ и всегда знаю историю измененений, а вывожу только последний по дате создания.
Документ "В" не должен изменяться. Он доступен только в режиме просмора и грубо говоря представляет собой некоторый временной слепок документа "А" .
 

Gremboloid

инженера Гр...
Re: Хранение документов в базе

Автор оригинала: Юрий
Как реализовать сохранение документа "В", который всегда формируется на основе данных из "А". Причем изменение данных в "А" не должно менять данные в сохраненном "В".
тогда попробуй точнее сформулировать вопрос. Мне пока не понятно, что ты хочешь сделать.
 

svetasmirnova

маленький монстрик
А почему бы не подсмотреть как сделано в cvs, svn или wakkawiki?
Ещё можно хранить diff документов A и B. Тем более что надо хранить не всю историю, а только 2 последних.
 

Юрий

Guest
Gremboloid

"число его модифицированных копии может быть разным"
грубо говоря слепки документа "А", сделанные в разное время.

А история мне не нужна или я не понимаю, что вы хотите сказать.


Gremboloid
P.S.: хистори у меня организована также как ты предлагаешь для документа "А"....
 

Gremboloid

инженера Гр...
угу. Есть хистори для "А" надо организовать (в той-же таблице) хранение документа "В", собранного на основе "А.

Я пока могу предложить только один вариант:
Надо добавить еще одно поле в таблицу которое будет указывать на то что это документ "В" и оно будет хранить id родителя документа "А" или id версии документа "А".

IMHO это может привести к перегрузке таблицы атрибутами.
 

Юрий

Guest
Упс.
text - текст документа???

Если так, то у меня документ это не текст (как в блокноте), а набор взаимосвзязанных данных (они отображаются в инпутах, селектах и т.д.)

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

Еще в начале писал про этот способ, но не будет ли это громоздко?
 

Gremboloid

инженера Гр...
думаю не будет,хотя тут тебе виднее.

а под text можно понимать и текстовое поле и твою конструкцию содержащую статью.
 

Юрий

Guest
Автор оригинала: Gremboloid

а под text можно понимать и текстовое поле и твою конструкцию содержащую статью.
Тогда сериализация объекта?! Есть еще какие-то мнения?

-~{}~ 14.12.05 10:21:

При сериализации потреяются возможности выборки документа "В" по его полям путем "select ..."
 

Navarro

Новичок
А может стоит просто сохранять документ в файл с рандомным названием (либо уникальным специфическим именем), а в табличке хранить название документа, id автора, и время модификации.
Зачем нагружать базу лишней статикой к тому же еще и большой?
 
Сверху