powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Двузначное отношение. Посоветуйте структуру таблиц
15 сообщений из 15, страница 1 из 1
Двузначное отношение. Посоветуйте структуру таблиц
    #35179572
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача такая: документы вступают между собой в отношения (заменяют, отменяют, дополняют друг друга и т.д.). Первоначальное решение – 3 таблицы
ДОКУМЕНТЫ
- номер документа
- и т.д.

ТИПЫ ОТНОШЕНИЙ ДОКУМЕНТОВ
- номер отношения документов
- название (замена, дополнение, отмена)
- и т.д.

ОТНОШЕНИЯ ДОКУМЕНТОВ
- код отношения документов
- код "младшего" документа (замененный, дополненный, отмененный)
- код "старшего" документа (заменяющий, дополняющий, отменяющий)
- и т.д.

Предполагалось, что GUI выглядеть будет примерно так:
Отношение Документ Статус Документ Статус
Дополнение Док Младший Док1 Старший
(Т.е. Док1 дополняет Док или Док дополнен Док1, как угодно)

Но народ хочет видеть так: "Док1 дополняет Док" или "Док дополнен Док1"

Варианты действий:
1. В таблицу ТИПЫ ОТНОШЕНИЙ ДОКУМЕНТОВ вносить не одну запись, обозначающую тип отношений документов, а две. Но тогда при внесении в ОТНОШЕНИЯ ДОКУМЕНТОВ надо будет вносить 2 записи с кодами "дополняет" и "дополнен" (денормализация?). Зато легко будет искать документы, состоящие в определенном отношении.
2. В таблицу ТИПЫ ОТНОШЕНИЙ ДОКУМЕНТОВ внести еще 2 поля для старшей и младшей семантических конструкций исходного типа
3. Самый изящный. Синтаксическое преобразование исходного типа в зависимости от того, какой статус имеет выбранный документ, но я так не умею.

Посоветуйте, пожалуйста.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35179740
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ответить просто - то в данном слкчае дублирование нужно вводить как раз наоборот для симметричных отношений.
Если Документ1 дополняет Документ0. То это несимметричное отношение.
Если хотите серьезней - должна быть разработана алгебра документов.
Например для отношение дополняет

Документ1:0 = дополняет (Документ1, Документ0)

должно быть обратное отношение дополнен

Документ1:0 = дополненн (Документ0, Документ1)

Или же

Документ0 = отменятет(Документ0, Документ1) и отменяет (Документ1, Документ2) = восстанавливает (Документ0. Документ2)
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35180362
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Номер 2 и не мучайтесь
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35180412
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КД
У меня есть некоторые сомнения в том, что я правильно понял все изложенное, но есть ощущение, что правилен номер 2. Посмотрите, как рисуются связи в любой ER-ке: для каждого конца связи задается обозначение этого конца (дополняет-дополнен в вашем случае). Именно это Вам и нужно; учитывая специфику, я придумывал бы что-нибудь типа

Активная формаПассивная форма%1:s дополняет %0:s%0:s дополнен %1:s
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35183556
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
2 apapacy
То, что описанное мной – несимметричные отношения, это ясно. Я вот как раз и спрашивал как мне эти отношения спроектировать с учетом особенных пожеланий их отображения. А где тут алгебра?
2 softwarer
Да, по-моему, Вы все правильно поняли. Так что просто по статусу старшинства выбранного документа в данном отношении берем либо одну либо вторую семантические формы и прилепляем второй документ из этой пары.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35183805
apapacy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КДВсем спасибо!
2 apapacy
То, что описанное мной – несимметричные отношения, это ясно. Я вот как раз и спрашивал как мне эти отношения спроектировать с учетом особенных пожеланий их отображения. А где тут алгебра?


Согласен. С алгеброй загнул. Здесь идет речь скорее о кольце. Просто если операции несимметричные речь илет о существовании обратных операций. Например документ А изменяет документ Б и документ Б изменен документом А.

Дальше операции с документами могут быть выстроены в цепочки
Например Документ А изменен Документом Б с получением Документа А'.
Теперь Документ С отменяет Документ Б - получаем из Документа А' Документ А.
Ну то есть как бы мы определяем лперации над документами. И правила для этих операций.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35183917
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боюсь, реализация всех правил, которые можно придумать, займет у меня остаток жизни. Обойдутся. Сделаю по минимуму: чтобы нельзя было для документа дважды загнать одно и тоже отношение, и хватит с них. Я не коробочный документооборот делаю, слава богу.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35183993
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может оказаться осмысленным добавить еще одно поле свободного ввода в таблицу ОТНОШЕНИЯ ДОКУМЕНТОВ для ситуации: документ Б отменяет "параграфы 1, 2.1., 5" документа А
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35184968
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevМожет оказаться осмысленным добавить еще одно поле свободного ввода в таблицу ОТНОШЕНИЯ ДОКУМЕНТОВ для ситуации: документ Б отменяет "параграфы 1, 2.1., 5" документа А
Мм... сомневаюсь. Это получается memo-поле, с которым ни хрена не сделаешь. Скорее осмысленно, например, трехоперандное отношение - документ Б отменяет редакцию А-1 и вводит редакцию А-2.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186147
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, ребята, это уже чересчур. Пусть юзера сами разбираются кто там чего. А то точно до седых волос три таблицы и две формы буду разрабатывать.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186229
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer drevМожет оказаться осмысленным добавить еще одно поле свободного ввода в таблицу ОТНОШЕНИЯ ДОКУМЕНТОВ для ситуации: документ Б отменяет "параграфы 1, 2.1., 5" документа А
Мм... сомневаюсь. Это получается memo-поле, с которым ни хрена не сделаешь. Скорее осмысленно, например, трехоперандное отношение - документ Б отменяет редакцию А-1 и вводит редакцию А-2.


не сработает в случае "документ Б приостанавливает действие статьи 138 бис документа А до 01.02.09"

мемо-поле для простоты, чтоб не потерять информацию

2 КД:

Случай просто интересный:)
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186268
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevне сработает в случае "документ Б приостанавливает действие статьи 138 бис документа А до 01.02.09"
При желании - сработает. Для этого нужно статью 138бис в новой редакции сформулировать как ".... с 01.02.09 стороны обязаны...." ;-)

Разумеется, усложнять можно сколько угодно. Я к тому, что при простом мемо получается чрезмерное упрощение - это сводит БД просто к свалке документов, не имеющих никакого значения с точки зрения бизнес-логики. По сути почтовая система. Я как-то привык ориентироваться на более сложные ИС.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186285
drev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer drevне сработает в случае "документ Б приостанавливает действие статьи 138 бис документа А до 01.02.09"
При желании - сработает. Для этого нужно статью 138бис в новой редакции сформулировать как ".... с 01.02.09 стороны обязаны...." ;-)

Разумеется, усложнять можно сколько угодно. Я к тому, что при простом мемо получается чрезмерное упрощение - это сводит БД просто к свалке документов, не имеющих никакого значения с точки зрения бизнес-логики. По сути почтовая система. Я как-то привык ориентироваться на более сложные ИС.

Более сложная по хорошему предполагает собой структурирование документов, что бы их части являлись логическими единицами.

Новая редакция - вещь опасная. Особенное если размеры документов велики, а изменения маленькие и их много.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186293
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drevБолее сложная по хорошему предполагает собой структурирование документов, что бы их части являлись логическими единицами.
Конечно. И "дополнительное соглашение к договору" и прочие подобные документы - это в принципе набор изменений к имеющимся записям.
...
Рейтинг: 0 / 0
Двузначное отношение. Посоветуйте структуру таблиц
    #35186720
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По мне, так бодяга с редакциями документов хорошо реализована в БД Консультант+. Сразу видно, что документ имеет более поздние редакции и в чём состоят изменения.

Думаю, можно выделить два способа изменения документов. 1. Выпуск новой редакции документа в том числе инкрементной (например корректурные правки). 2. Выпуск другого документа, который как то изменяет смысл данного документа, но не меняет его буквально (например приказ о принятии или отмене документа).

В первом случае мы трассируем версии документа, при этом имеем записи для каждой версии и записи о переходах. При чём в случае инкрементных изменений мы имеем запись-исходную редакцию документа, запись-документ на основании которого создана новая редакция, запись-новая редакцая документа и запись-связь между этими тремя объектами. Если документ очень большой, а изменения вносятся часто, то придётся подумать о структуре документа, чтобы трассировать не весь документ, а его структурные элементы с последующей сборкой на уровне презентации.

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


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