powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / История изменений и ErWin
25 сообщений из 25, страница 1 из 1
История изменений и ErWin
    #33843000
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попытаюсь сформулировать вопрос.
Извиняюсь за пространность.
Есть подход, сформулированный аналитиками на картинке в виде кропа логической модели erwin (см.)

То есть, статические атрибуты Персоны принадлежат непосредственно сущности Персона, динамические вынесены в отдельные исторические таблицы с датами начала и конца периода актуальности. (Вопрос о том, что статические атрибуты Персоны, представленные на картинке, на самом деле не статические, пока не обсуждается, хотя и закономерен).
Причем для атрибута Гражданство (вернее там 2 атрибута - Вид Гражданства и Страна) заведена отдельная историческая сущность, для ФИО+ИНН - отдельная.
И так далее.
А вот у сущности Связь с документами (1:M) история ведется прямо внутри.

Соответственно на исторические записи по их UID-у могут ссылаться другие неисторические сущности. Например, Медкарта ссылается на историческую запись Персоны, дабы всегда можно было достать ФИО Персоны на тот момент времени на который она была заведена.

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

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

Второй вариант известен - хранить в Персоне ВСЕ атрибуты, а в ОДНОЙ исторической сущности снимать слепки записей из Персоны. Мне он кажется более разумным. Но меня больше интересует именно подход с хранением ссылок на исторические сущности - насколько он разумен.

Есть и третий вариант: одна сущность, для нее - одна историческая таблица-копия, в модели не указываемая вообще (но будет сгенерирована так как у сущности указан параметр UDP: IsHistorical). А ссылки хранятся "стандартным образом" - не на исторические, а на обычные сущности (Медкарта указывает на Персону) и только при построении запроса от клиента определяется что пользователь хочет вывести историческую запись, после чего делается соединение с Историей Персоны с учетом попадания в интервал дат.

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

Спасибо за внимание.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33843419
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО оба два имеют право быть в одной модели, ибо обслуживают разные ситуации. Разумеется можно попытаться их (ситуации) максмально унифицировать ко второму (ссылки только на сущность) случаю как более простому. Однако первый вариант жестко ограничивает удаление исторических записей и имеет поэтому самостоятельную ценность.
Запросы же наверняка потребуются разные, даже при явной ссылке на историческую запись может потребоваться джойн по некоторой дате медкарты с данными истории персоны.

Третий суть условность модели. Если бы еще erwin умел красить сущности по их UDP...:).

По гражданству . Это само по себе М:М, так что историю имеет вид гражданства: Страна+Персона+Дата -> Вид. При этом пара Страна+Персона сама по себе не обладает значимыми атрибутами.
Я бы изобразил на модели это понятие, но не стал бы генерировать таблицу, пометив сущность Страна+Персона как только логическую. Для корретного переноса ссылок использовал идентифицирующие связи к Страна и Персона.

Связь с документами (1:M) . Не ясно, что значит "история ведется прямо внутри"? не видно нам истории. Например, у документа будет продлен срок действия. Если имеется ввиду, что будет создана там же запись с новым UID Документа, то как понять, что это две записи про один документ?

Последнее. В логической модели с суррогатными ключами крайне важно указать альтернативные бизнес-ключи.

Успехов!
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33843543
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У меня вопрос о разумности такого подхода в физической модели

Реализация истории изменений данных без реализации истории изменений метаданных - есть упрощенная реализация. Нужно по крайней мере видеть техническое задание, чтобы сказать, во-первых, насколько эта упрощенная реализация ему соответствует, во-вторых, как именно должна регистрироваться история изменений, в-третьих, как она должна быть отражена в модели (моделях) проекта.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844152
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> У меня вопрос о разумности такого подхода в физической модели

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

Действительно, система основана на ядре с метаданными. Действительно, история изменения метаданных "заложена но потом отложена", что упрощает реализацию.
С "видеть ТЗ" сейчас проблематично, историю сейчас видно только в первой редакции логической модели, в документах она упомянута пока что не слишком. Однако этой упрощенной реализации, видимо, вполне достаточно, история ведется лишь по нескольким необходимым сущностям, малоподверженным структурным изменениям.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844207
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRИМХО оба два имеют право быть в одной модели, ибо обслуживают разные ситуации. Разумеется можно попытаться их (ситуации) максмально унифицировать ко второму (ссылки только на сущность) случаю как более простому. Однако первый вариант жестко ограничивает удаление исторических записей и имеет поэтому самостоятельную ценность.
Запросы же наверняка потребуются разные, даже при явной ссылке на историческую запись может потребоваться джойн по некоторой дате медкарты с данными истории персоны.


Действительно, здесь заложено некое "упрощение". Ориентация на разовый запрос с выводом данных Персоны на момент создания медкарты. Но если нужно вывести, скажем, всю цепочку изменений данных персоны с момента создания - уже сложнее.


Разумеется можно попытаться их (ситуации) максмально унифицировать ко второму (ссылки только на сущность) случаю как более простому.


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


По гражданству . Это само по себе М:М, так что историю имеет вид гражданства: Страна+Персона+Дата -> Вид. При этом пара Страна+Персона сама по себе не обладает значимыми атрибутами.
Я бы изобразил на модели это понятие, но не стал бы генерировать таблицу, пометив сущность Страна+Персона как только логическую. Для корретного переноса ссылок использовал идентифицирующие связи к Страна и Персона.


Правильно заметили, но с гражданством кстати здесь принята упрощенная модель, то есть Вид гражданства (росс., иностр., двойн...) плюс Страна в случае наличие граджанства иностранного государства.


Связь с документами (1:M) . Не ясно, что значит "история ведется прямо внутри"? не видно нам истории. Например, у документа будет продлен срок действия. Если имеется ввиду, что будет создана там же запись с новым UID Документа, то как понять, что это две записи про один документ?


Хм, верно, похоже, надо было другую сущность в пример...


Последнее. В логической модели с суррогатными ключами крайне важно указать альтернативные бизнес-ключи.


Оно понятно. Или Вы имеете в виду цветом в ErWin ?

p.s. Я почему еще пытаюсь всего этого избежать - наше метаядро (создано в процессе работы над предыдущим проектом) под такие исторические структуры пока не заточено, а использовать его хотелось бы.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844345
Westtrd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А фамилия - то в модели может с течением времени изменяться :)
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844427
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hamanuВот и хочется знать, насколько этот второй вариант "распространен". На самом деле, в приведенном варианте подсознательно ощущаются скрытые проблемы, которые могут проявиться, но пока их все сложно выявить.
Появляется больше возможных комбинаций. Например медкарта от 15-го сслылается на запись от 07-го, хотя есть более свежая запись от 10-го. Нужно это или нет - Вам виднее. hamanu Правильно заметили, но с гражданством кстати здесь принята упрощенная модель, то есть Вид гражданства (росс., иностр., двойн...) плюс Страна в случае наличие граджанства иностранного государства.Что за вид двойное? Количество иностранных гражданств вроде не ограничено. hamanu


Последнее. В логической модели с суррогатными ключами крайне важно указать альтернативные бизнес-ключи.


Оно понятно. Или Вы имеете в виду цветом в ErWin ?Нет, ErWin может показывать альтернативные ключи как и первичные у атрибута в скобках.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844511
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WesttrdА фамилия - то в модели может с течением времени изменяться :)

И не только фамилия
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844528
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последнее. В логической модели с суррогатными ключами крайне важно указать альтернативные бизнес-ключи.


Оно понятно. Или Вы имеете в виду цветом в ErWin ?[/quot]Нет, ErWin может показывать альтернативные ключи как и первичные у атрибута в скобках.[/quot]

Действительно, они пока не заданы.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33844984
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> история изменения метаданных "заложена но потом отложена"

Есть два основных подхода к реализации истории изменений: 1. основанный на данных и 2. основанный на метаданных. Они вообще ничем не похожи, кроме созвучного названия. Если Вы говорите, что сейчас планируется реализовать 1., то переход к 2. потребует полного переписывания кода.

Принципиальная разница между этими подходами в том, что в 1. структура данных предполагается неизменной (точнее не так: однажды описанные сущности неизменны; никто не мешает добавлять описания новых сущностей), в 2. таких требований нет. Если аналитик Вашего проекта полагает, что описываемые сущности неизменны, - это его решение. ;) Я бы воздержался от таких допущений.

> С "видеть ТЗ" сейчас проблематично

ОК, тогда остаются исключительно практические соображения: количество дополнительных данных, соответствие схеме ограничения доступа, скорость обработки истории изменений и пр., т. е. тестирование приложения с двумя разными вариантами реализации структуры данных с тестовым набором данных.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33845362
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> история изменения метаданных "заложена но потом отложена"

Есть два основных подхода к реализации истории изменений: 1. основанный на данных и 2. основанный на метаданных. Они вообще ничем не похожи, кроме созвучного названия. Если Вы говорите, что сейчас планируется реализовать 1., то переход к 2. потребует полного переписывания кода.

Принципиальная разница между этими подходами в том, что в 1. структура данных предполагается неизменной (точнее не так: однажды описанные сущности неизменны; никто не мешает добавлять описания новых сущностей), в 2. таких требований нет. Если аналитик Вашего проекта полагает, что описываемые сущности неизменны, - это его решение. ;) Я бы воздержался от таких допущений.

> С "видеть ТЗ" сейчас проблематично

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

Аналитик действительно считает структуру данных (тех, для которых хочет обеспечить историчность) неизменной ввиду ее неизменности в течение скольких-то там десятков лет. Другое дело, что наше ядро метаданных заточено под обработку как раз изменяющихся сущностей. Мы хотели бы его использовать, но для хранения полноценной истории действительно надо бы расширить его механизм с учетом вышесказанного. Это не очень просто.

А основные проблемы приведенного в модели подхода видятся мне в области физической реализации (это может быть невысокая производительность на больших объемах), а также в невысоком уровне гибкости/вариативности в результате жесткого внедрения исторической подсхемы в модель, в некой неавтономности исторического механизма.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33845581
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Аналитик действительно считает

Мне очень не хочется Вас расстраивать, но скорее всего аналитик ошибается.

> Это не очень просто.

Я знаю. ;) Здесь на самом деле две проблемы: 1. собственно метамодель (очень хочется иметь стандартную, причем, такую, которая бы поддерживала не только реляционные модели), 2. ее реализация (на самом деле, это принципиально важный выбор; реализация метамодели внешними средствами более проста, но при этом более сложен контроль за реляционной структурой данных, - даже не сам по себе, а в общем контексте (политика доступа, мультиязычность и пр.); т. е. есть еще как минимум один уровень метаданных, специфичных для приложения.

> А основные проблемы

Imho один вариант - тестировать. Для Ваших задач, для Вашей истории изменений, для Ваших объемов данных. С точки зрения реализации ни у одного из предложенных решений imho преимуществ нет.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847298
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А все же, у этой самой Персоны могут ли быть действительно неизменяемые атрибуты ?
Например у нас предполагается при смене пола заводить другую Персону. Поэтому в частности Пол считается неизменным. Насколько это правильно ?
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847443
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Нельзя дважды войти в одну и ту же реку"
"Чем больше все меняется, тем больше остается неизменным"
выберите правильный вариант :)

Все зависит от Вашего приложения. Смена пола влечет утрату имущественных прав? повышение в должности? расторжение брака?
Что для вас важно?

ИМХО можно считать тем же человеком. Если считать другим, все равно нужно старого и нового связать и в некоторых случаях по этой связи углубляться в историю.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847520
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR"Нельзя дважды войти в одну и ту же реку"
"Чем больше все меняется, тем больше остается неизменным"
выберите правильный вариант :)

Все зависит от Вашего приложения. Смена пола влечет утрату имущественных прав? повышение в должности? расторжение брака?
Что для вас важно?

ИМХО можно считать тем же человеком. Если считать другим, все равно нужно старого и нового связать и в некоторых случаях по этой связи углубляться в историю.

Мне сложно представить реальную ситуацию, когда бы смена пола требовала создания новой персоны. Повышение в должности этого ИМХО не требует (приведено как быстрый пример, понимаю). А вот какое-нибудь членство в мужских клубах о котором персона со сменой пола хотела бы забыть - может быть. Впрочем и здесь соответствующие связи в таблицах при смене пола можно просто удалить ...

Я бы подошел более прагматично - если после смены пола мы можем свести в одной комнате и поставить рядом две персоны - которые "до" и "после" - то да, нам таки удалось создать вторую персону (и запись в БД).
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847604
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hamanu ModelRИМХО можно считать тем же человеком.
Я бы подошел более прагматично - если после смены пола мы можем свести в одной комнате и поставить рядом две персоны - которые "до" и "после" - то да, нам таки удалось создать вторую персону (и запись в БД).Да, хороший критерий. В пределе, Персона может не содержать ни одного (кроме ИД) атрибута. Все в истории.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847801
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> А все же, у этой самой Персоны могут ли быть действительно неизменяемые
> атрибуты ?

Спросите у Вашего аналитика. ;)

> Например у нас предполагается при смене пола

ОК, давайте чуть подробнее о том, что есть смена пола и почему при этом новых персон не появляется. ;)

Я не знаю, что Вы проектируете, но предположу: под полом Вы подразумеваете просто запись в документе, удостоверяющем личность (паспорте). Что есть пол в его естественном смысле? Совокупность признаков, характеризующих определенного представителя определенного биологического вида. Смена пола предполагает изменение очень незначительной части этих признаков. Собственно, откуда взяться новой персоне? ;)
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33847844
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hamanu
Я бы подошел более прагматично - если после смены пола мы можем свести в одной комнате и поставить рядом две персоны - которые "до" и "после" - то да, нам таки удалось создать вторую персону (и запись в БД).
Я бы подошел еще более прагматично, если в системе нужен отчет "Когда и как часто данное лицо меняло пол" то конечно необходимо данный атрибут записывать в историю.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33848272
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EstetsЯ бы подошел еще более прагматично, если в системе нужен отчет "Когда и как часто данное лицо меняло пол" то конечно необходимо данный атрибут записывать в историю.А если не нужен?
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33850005
hamanu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621>
Я не знаю, что Вы проектируете, но предположу: под полом Вы подразумеваете просто запись в документе, удостоверяющем личность (паспорте). Что есть пол в его естественном смысле? Совокупность признаков, характеризующих определенного представителя определенного биологического вида. Смена пола предполагает изменение очень незначительной части этих признаков. Собственно, откуда взяться новой персоне? ;)

Медицинская система. Пол - с одной стороны простая характеристика человека, или запись в медкарте. Но есть таблицы с границами нормы параметров при обследованиях по возрастнополовым группам. Отчеты также могут учитывать возрастнополовые группы.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33851297
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Медицинская система.

Интересно. Надеюсь, что-нибудь локальное, не национального масштаба? ;)

> Пол - с одной стороны простая характеристика человека, или запись в медкарте.

Эта карта имеет стандартную форму?

> Но есть таблицы с границами нормы параметров при обследованиях по
> возрастнополовым группам.

Это интересно.

Вероятно, для любого человека можно выделить некий естественный идентификатор личности (типа генетического набора или что-то в этом роде). Регистрировать его нет необходимости, важно отметить, что он существует. Операция по смене пола (как и любое другое хирургическое вмешательство) imho не подразумевает изменение этого естественного идентификатора. Однако, некоторые признаки (например, гормональный фон и зависящие от него) будут меняться.

Я не видел технического задания, но если правильно понял задачу, то сделал бы примерно так:

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

Вообще говоря, по-видимому, не только состояние репродуктивной функции может влиять на значения биологических параметров, - ничто не мешает описать другие признаки.

Хронология изменений - для всех сущностей. Ссылки на стандарты и нормативные документы - для всех сущностей.

Мог что-то упустить, но в первом приближении где-то так. Основная идея - выделить группы разных идентификаторов и построить соответствующие функциональные зависимости. Подойдет?
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33852226
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чуть подробнее о других параметрах. Можно вообще не рассматривать репродуктивную функцию отдельно, а выделить основные системы организма человека, связать их с МКБ10 и строить ограничения с учетом их (систем) состояния. Нужно только добавить список состояний (общий для всех систем) и параметров для каждой из систем.

Убивается два зайца: свободные ограничения + возможность связи с другими модулями системы (в т. ч. с назначениями и пр.).
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33853687
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR EstetsЯ бы подошел еще более прагматично, если в системе нужен отчет "Когда и как часто данное лицо меняло пол" то конечно необходимо данный атрибут записывать в историю.А если не нужен?
То не записывал бы. Лениво.
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33855672
guest12345
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не изменна дата и место рождения - собственно как правило так принятно идентифицировать людей во многих госучреждениях
...
Рейтинг: 0 / 0
История изменений и ErWin
    #33855782
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Не изменна дата и место рождения

В каких документах, кроме свидетельства о рождении, это отражено?

> собственно как правило так принятно

Кем принято? Примеры? Нормативные документы?

> идентифицировать людей во многих госучреждениях

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


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