В нашем веб-приложении есть модуль, в который мы вводим документ. Это обычный документ, в котором вы можете вводить разные абзацы один за другим.
например.
Название документа
абзац 1.
абзац 2.
пункт 3.
Документ может иметь несколько версий, например версии 1.0, 1.2, 2.0 и т. Д.
Как это работает, вы берете документ версии 1.0, добавляете / удаляете или изменяете некоторые абзацы и сохраняете его как новую версию.
Для этого у меня есть
1) Таблица документов с (идентификатор_документа (PK), имя_документа, версия)
2) таблица абзацев с (para_Id (PK), para_data)
3) справочная таблица абзаца документа с (document_Id (PK) и para_Id (PK))
Для каждой версии документа в таблицу документов добавляется новая запись, поэтому будет создан новый идентификатор_документа (PK).
Итак, таблицы будут выглядеть следующим образом
document_Id версия документа name_
1 Документ 1 1.0
2 Документ 1 1.2
3 Документ 1 1,5
para__d пункт_data
10 Параграф 1
20 Параграф 2
30 Параграф 3
40 Параграф 4
50 Параграф 5
60 Параграф 6
Таблица ссылок на абзацы документов
document_Id абзац_Id
1 10
1 20
1 30
Итак, наш документ 1 с именем «Документ 1» и версией (1.0) состоит из трех параграфов.
Когда мы создаем новую версию этого документа, произносим то же имя Документ 1, и версия увеличивается до 1.2.
В этой новой версии мы удаляем первые два абзаца из документа старой версии и добавляем два новых абзаца.
Итак, теперь наш новый документ состоит из трех параграфов (один из старой версии и два недавно добавленных).
При создании новой версии документа обратите внимание, что старый идентификатор абзаца также изменяется. то есть из старого документа абзацы с идентификатором 10, 20 удаляются, а абзацы с идентификатором 30 становятся 40 в новых версиях.
Новый идентификатор создается таким образом, что к старому документу все еще можно получить доступ, и в нем есть ссылка на абзац с идентификатором 30, и можно изменять содержимое старого абзаца при создании новой версии документа.
Итак, теперь мне нужно сравнить две версии документа.
Как сравнить две версии, т.е. как узнать, какие абзацы были только что изменены в более новой версии или какие были добавлены заново или какие были удалены из более старых версий, поскольку новые идентификаторы создаются каждый раз, и нет способа сопоставить идентификаторы абзаца от версии к версии.
Также обратите внимание, что может быть несколько версий одного и того же документа, и мне нужно будет сравнить любые версии, скажем, от 1.0 до 10.5 и т. Д.
Любая помощь будет оценена.
Спасибо