|
версионность документов
|
|||
---|---|---|---|
#18+
Здравствуйте. озадачился собственно сабжем. Именно версионность. а не логирование изменений. вроде все на первый взгляд просто. для однотабличного документа. делаем таблицу ревизий. в другую таблицу выносим неверсионируемые данные (nonversioned) , во вторую версионируемые (versions). ну и собственно в nonversioned указывает ИД текущей версии. а в versions сами данные версии и ссылку на версию, к которой они относятся. А вот если двухтабличный документа. где есть шапка и тело. для шапки так же делаем версионность по вышеописанной схеме. ну и вроде как так же для тела. те будет 4 таблицы. две для шапки и две для тела. Но возникает такой вопрос. есть документ. у него тело содержит допустим 1000 позиций. Создаем ему версию. меняется что то в шапке. да хотя бы банальное примечание. В таблицах шапки создаем версию. а как быть с телом? теоретически если поменялось примечание в шапке, то в позициях ничего не менялось. Я правильно понимаю, что все же придется скопировать в таблицах тела все 1000 записей и сопоставить их с новой версией шапки? И далее делаем изменение данных двух записей тела. как быть с неизменившимися записями тела документа? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 23:46 |
|
версионность документов
|
|||
---|---|---|---|
#18+
И далее. у этого версионированного документа есть дочерние. допустим спецификация - договор. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2017, 23:51 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVL, Если отвлечься от заголовков и шапок, вопрос сводится к такому. Вот у тебя, скажем, огромный текстовый файл, и ты хочешь вести его версии. Первый вариант - копировать весь файл целиком для каждой версии: file_001.txt, file_002.txt и т.д. Преимущества - просто и надежно. Недостатки - пропадает место. Если версий от силы десяток, как это бывает с бумажными документами, вполне применимо. Второй вариант - писать диффы. То ли от первоначальной версии вести, и суммированием диффов собирать текущее состояние, то ли, наоборот, вести текущую версию файла, а историю изменений помнить диффами, и при необходимости собирать через них любую промежуточную версию вплоть до превоначальной. Преимущества и недостатки обратные - сложно, зато экономично. Если это исходники линукса, которые правит весь мир - другого выхода нет. Собственно, и в базе данных надо выбрать один из этих подходов. А затем уже думать над реализацией в БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 09:20 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVLЯ правильно понимаю, что все же придется скопировать в таблицах тела все 1000 записей и сопоставить их с новой версией шапки? И далее делаем изменение данных двух записей тела. как быть с неизменившимися записями тела документа? Здесь может помочь идея, что "версия документа" - это отдельная сущность (не шапка документа, а вообще отдельная таблица). А всякие записи документов (шапка, детали, детали деталей) могут относиться не к одной, а ко многим версиям, если они в ходе этих версий не менялись. То есть "детали-версии" должна быть N-N таблица. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 09:51 |
|
версионность документов
|
|||
---|---|---|---|
#18+
Альтернатива — версии задавать не номером ревизии, а интервалом дат, в котором действуют определенные данные. Правда это не версионность, а историчность, и у нее свои особенности. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 10:18 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVL, Cane Cat Fisher описал оба варианта правильно. Большинство выбирает 2 вариант. Ну а реализация уже зависит от СУБД и кривизны рук разработчика. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 11:07 |
|
версионность документов
|
|||
---|---|---|---|
#18+
Alibek B.Альтернатива — версии задавать не номером ревизии, а интервалом дат, в котором действуют определенные данные. Правда это не версионность, а историчность ... и именно поэтому она не покрывает всех кейсов версионности. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2017, 11:32 |
|
версионность документов
|
|||
---|---|---|---|
#18+
собственно такую схему нарисовал -- хранятся версии документов по типам. непосредственно номера Код: sql 1. 2. 3. 4. 5. 6.
-- общие шапки ВСЕХ документов Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Собственно в DOCS хранятся все заголовки всех типов документов. на каждый документ вне зависимости от количества версий одна запись Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Этих таблиц много по количеству типов документов. на один документ в DOCS может быть несколько записей в DOCS1. по количеству версий. текущая версия в этой таблице - docs1.docs_id = docs.C and docs1.docs_ver_id = docs.docs_ver_id собственно вроде и все. а дочерние документы линкуются к docs. а текущая версия подгребается по docs1.docs_id = docs.C and docs1.docs_ver_id = docs.docs_ver_id. проблем с изменением родительского документа при наличии дочернего нет. ну только предупредить пользователя чтоб обратил внимание. Может что то и избыточно. например если без версий получал все документы одного типа так Код: sql 1.
теперь так Код: sql 1. 2. 3.
слегка непривычно и можно временами путаться ))) ну и надо наверно в триггерах на DOCS1 сделать проверки чтоб не торнули запись из DOCS не того типа ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 21:17 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVL, Честно говоря, как-то мудрено вышло. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 22:41 |
|
версионность документов
|
|||
---|---|---|---|
#18+
У Вас как-то странно сделано, Версии - родительская таблица к Документам, хотя должно быть наоборот. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2017, 23:39 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVL, Мне на скорую руку что-то такое представилось. Поможет? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2017, 12:14 |
|
версионность документов
|
|||
---|---|---|---|
#18+
Doc_header это для чего таблица? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 11:36 |
|
версионность документов
|
|||
---|---|---|---|
#18+
maslinka, фиксированная часть документа, значение не зависит от версии. В общем случае - бессмысленная часть, ибо константным значением может быть лишь ПК, и то не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 14:38 |
|
версионность документов
|
|||
---|---|---|---|
#18+
ёёёёё фиксированная часть документа, значение не зависит от версии. В общем случае - бессмысленная часть, ибо константным значением может быть лишь ПК, и то не всегда. Без идентификационной части документа возникает вопрос - версия чего, просто сама по себе в воздухе? Второй вопрос, точнее первый - зачем раскопали тему 2017 года? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 14:45 |
|
версионность документов
|
|||
---|---|---|---|
#18+
iOracleDev Без идентификационной части документа возникает вопрос - версия чего, просто сама по себе в воздухе? ПК не меняется. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 14:54 |
|
версионность документов
|
|||
---|---|---|---|
#18+
ёёёёё ПК не меняется. :) Да да, пользователям так важно знать id непонятно чего ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 14:57 |
|
версионность документов
|
|||
---|---|---|---|
#18+
iOracleDev ёёёёё фиксированная часть документа, значение не зависит от версии. В общем случае - бессмысленная часть, ибо константным значением может быть лишь ПК, и то не всегда. Без идентификационной части документа возникает вопрос - версия чего, просто сама по себе в воздухе? Второй вопрос, точнее первый - зачем раскопали тему 2017 года? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 14:59 |
|
версионность документов
|
|||
---|---|---|---|
#18+
iOracleDev ёёёёё ПК не меняется. :) Да да, пользователям так важно знать id непонятно чего ... Пользователи ни при чем. Программисты - при чем. Если пользователь изменит наименование файла, файл останется тем же самым? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:00 |
|
версионность документов
|
|||
---|---|---|---|
#18+
maslinka опираюсь на эту схему. Ну и зря. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:00 |
|
версионность документов
|
|||
---|---|---|---|
#18+
ёёёёё maslinka, фиксированная часть документа, значение не зависит от версии. В общем случае - бессмысленная часть, ибо константным значением может быть лишь ПК, и то не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:01 |
|
версионность документов
|
|||
---|---|---|---|
#18+
ёёёёё Пользователи ни при чем. Программисты - при чем. Если пользователь изменит наименование файла, файл останется тем же самым? Нормальные программисты начинают не с фантазий, а с конкретной постановки задачи. Если у файла есть версионность, то его наименование будет постоянным, новое наименование - новый файл со своей версионностью, но на самом деле все будет зависеть от постановки задачи, в противном случае сферического коня в вакууме можно крутить как хочешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:04 |
|
версионность документов
|
|||
---|---|---|---|
#18+
iOracleDev все будет зависеть от постановки задачи Премия Тьюринга? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:07 |
|
версионность документов
|
|||
---|---|---|---|
#18+
maslinka не поняла. можете тогда всю схему пояснить, пожалуйста? Вам задачу поставили, что нужно сделать понимаете? Как вариант 1. Документ (идентификационная часть) -> Версия (+ изменяемая часть шапки) -> Состав документа (один -> ко многим) для каждой новой версии состав дублируется. 2. Документ -> Версия Документ -> Версия состава -> Состав документа Табличка связи Версия - Версия состава, id документа лучше протаскивать насквозь до таблички связи, можно для разных версий документа подставлять разные версии состава документа, не дублируя каждый раз состав. 3. ... 4. ... и так далее, будут конкретные требования можно думать, иначе можно нафантазировать что угодно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 15:14 |
|
версионность документов
|
|||
---|---|---|---|
#18+
AndrewVL, а тебе версии зачем? В СУБД они используются в основном для обеспечения конкурентного доступа к данным которые изменяются в данный момент времени. И для откатов. И еще очень редко для ретроспективных просмотров дейтсвий и аудита. У тебя есть юзкейс когда пользователь сознательно пошел в систему смотреть версию документа за прошлый год? Почему я спрашиваю. На коробочном уровне MS-Office документы и так себя версионируют. Программисты уже лет 20 хранят код под git, svn, mercurial что тоже само по себе версионирует все. Может тебе вообще не нужна DBMS? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2019, 23:07 |
|
|
start [/forum/topic.php?fid=32&msg=39532027&tid=1539885]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 244ms |
total: | 388ms |
0 / 0 |