powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Адекватность данных во времени.......
60 сообщений из 60, показаны все 3 страниц
Адекватность данных во времени.......
    #35828650
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не я первый, не я последний видимо задаю этот вопрос.
Хотелось бы узнать "классические решения" подобных задач.
Организовать базу данных, отображающую текущее состояние дел легко.
Но как только встает вопрос о том, что бы документ напечатанный 2 года назад и сегодня был бы одинаков то простая структура сразу сильно усложняется, и работа с этой структурой соответственно.
Вот простой пример штатного расписания ( чисто теоретический, без подробностей )

tDept - таблица отделов - это дерево (DeptID = ParentID)

tPosition - список должностей

tStaff - таблица "рабочих мест":
DeptID - в каком отделе,
PositionID - какой должности,
SQty - сколько рабочих мест

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

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

Я пока решаю подобные вопросы добавляя 2 поля типда DateTime: BeginDate, EndDate. т.е. Время валидности данной записи, но тогда использование таких таблиц ( тем более связанных друг с другом ) сильно усложняется........ может кто подскажет другие варианты решений подобных задач?

Заранее благодарен.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829018
Hey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по сути требуется ведение истории. Обычно она хранится в отдельном месте.

Тут скорее вопрос в другом, вы уверены, что вам нужно знать, где жил кассир 2 года назад ?
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829233
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_aЯ пока решаю подобные вопросы добавляя 2 поля типда DateTime: BeginDate, EndDate. т.е. Время валидности данной записи, но тогда использование таких таблиц ( тем более связанных друг с другом ) сильно усложняется........ может кто подскажет другие варианты решений подобных задач?Кардинально другого - никто не предложит. Присто потому что так и решают эту задачу.

Oracle для historical view поступает почти так же.
1) Основная таблица - обычная таблица.
2) К каждой таблице для которой включена история - создается теневая таблица с диапазоном дат, которые определяют значения полей записи в определенный момент времени.

При указании даты на которую надо получить данные - Oracle сам решает какие данные откуда взять.
А с обычной таблицей можно работать как с текущими данными.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829248
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
karapetyan_aЯ пока решаю подобные вопросы добавляя 2 поля типда DateTime: BeginDate, EndDate. т.е. Время валидности данной записи, но тогда использование таких таблиц ( тем более связанных друг с другом ) сильно усложняется........ может кто подскажет другие варианты решений подобных задач?
Ну это просто. А вот изменение самой структуры таблицы во времени как отслеживать ?
Я использую EAV с историей.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829258
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heyвы уверены, что вам нужно знать, где жил кассир 2 года назад ?

Позволю себе пояснить за автора, поскольку вопрос интересен и для меня. Дело в том, что существуют системы, где выдвигается требование "повторяемости отчетов". То есть, если есть отчетная форма, возвращаясь к примеру, "Штатное расписание на указанную дату" с параметром - дата составления, то запросив СЕЙЧАС отчет на "01.01.1999", мы должны получить В ТОЧНОСТИ тот же отчет, что был получен на эту дату в 1999 году, несмотря на все последовавшие реорганизации и переезды кассира.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829291
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_aЯ пока решаю подобные вопросы добавляя 2 поля типда DateTime: BeginDate, EndDate

Любопытно, как Вы решаете такой вопрос:

1. Если есть таблица должностей, tPosition (PosID PK, PosName), и мы добавим сюда BeginDate, EndDate, то каким станет первичный ключ, и соответственно внешний ключ из tStaff ?

2. Если первичным ключом станет PosID + BeginDate, и соответственно внешним ключом Staff.PosID + Staff.BeginDate, то это сработает лишь в том случае, если дата возникновения рабочего места совпадает с датой возникновения должности. А как быть, есть должность "охранник" добавили давно, а в конкретный отдел рабочее место охранника ввели позже?
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829792
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
heyпо сути требуется ведение истории. Обычно она хранится в отдельном месте.

Тут скорее вопрос в другом, вы уверены, что вам нужно знать, где жил кассир 2 года назад ?

где жил, конечно не важно...... а вот какую должность занимал, какой оклад был и т.д вот это вот важно
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829802
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Oracle для historical view поступает почти так же.
1) Основная таблица - обычная таблица.
2) К каждой таблице для которой включена история - создается теневая таблица с диапазоном дат, которые определяют значения полей записи в определенный момент времени.

При указании даты на которую надо получить данные - Oracle сам решает какие данные откуда взять.
А с обычной таблицей можно работать как с текущими данными.

У нас как раз Oracle, не мобли бы вы поподробнее объяснить ( на примере простейшей таблицы )
что за historical view ? ( ну или послать меня к первоисточнику:) )
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35829816
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisherheyвы уверены, что вам нужно знать, где жил кассир 2 года назад ?

Позволю себе пояснить за автора, поскольку вопрос интересен и для меня. Дело в том, что существуют системы, где выдвигается требование "повторяемости отчетов". То есть, если есть отчетная форма, возвращаясь к примеру, "Штатное расписание на указанную дату" с параметром - дата составления, то запросив СЕЙЧАС отчет на "01.01.1999", мы должны получить В ТОЧНОСТИ тот же отчет, что был получен на эту дату в 1999 году, несмотря на все последовавшие реорганизации и переезды кассира.

Абсолютно верно. спасибо.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35830290
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_aУ нас как раз Oracle, не мобли бы вы поподробнее объяснить ( на примере простейшей таблицы )
что за historical view ? ( ну или послать меня к первоисточнику:) ) Flashback Data Archive (Oracle Total Recall) .
Появился в версии 11g
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35830355
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Flashback Data Archive (Oracle Total Recall) .
Появился в версии 11g

Спасибо, посмотрю. ( хотя у нас 10-я версия оракла )
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35830594
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модkarapetyan_aЯ пока решаю подобные вопросы добавляя 2 поля типда DateTime: BeginDate, EndDate. т.е. Время валидности данной записи, но тогда использование таких таблиц ( тем более связанных друг с другом ) сильно усложняется........ может кто подскажет другие варианты решений подобных задач?
Ну это просто. А вот изменение самой структуры таблицы во времени как отслеживать ?
Я использую EAV с историей.

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

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

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

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

Наконец "повторяемость" результатов расчёта иногда трактуют неверно. В ряде случаев это означает только то, что на одних и тех же данных, должны получаться одни и те же результаты (тогда и вся эта канитель ни к чему). Если вам нужно просто получить старый отчёт, независимо от того, что БД могла поменяться, то сразу сохраните его в виде файла и не мучайте БД.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35830872
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Присто потому что так и решают эту задачу.

Кто "так и решает"? Обкуренные китайские первоклассники-второгодники? Расскажите, как с этим набором атрибутов Вы намерены реализовать [псевдо]транзакционность изменений и дерево версий (даже простое, не трогая структуру данных)?

> Oracle

Тупят, как это часто бывает.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831303
Фотография nexoma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
флэшбэк не потянет "года 2 назад". а применение стартдаты и конецдаты нормальная практика. транзакционность в пл/скл блоке-коде выделяешь. завел нового человечка, старые данные получили значение конецдаты по текущему времени, а новый человек получил стартдату (прим. конецдата обычно имеет значение будущего времени для корректности select).

кто стартдата конецдата
инженер1 01.01.2000 31.12.2001
новый 01.01.2002 01.01.2100

select
данные
from
таблица
where
id=идентификатор
and
sysdate /*или нужная старая дата*/ between startdate and enddate
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831660
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще один гуру по имени nexoma? Наверное, тоже ораклоид?

> транзакционность в пл/скл блоке-коде выделяешь

В течение месяца сто юзеров в пятидесяти филиалах активно редактировали одни и те же данные сложной структуры, причем, логически связанные данные менялись в течение всей недели произвольным образом (у юзеров разные приоритеты и разная производительность). Через месяц выяснилось, что половина изменений была сделана неправильно. Расскажите, пожалуйста, какая транзакционность в каком коде поможет Вам откатить неправильные изменения?
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831719
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня на старой работе стояла база oracle 10g. Вопрос с историей решался так. Ключ состоял из айдишника и версии записи и было поле last - признак последней версии. При редактировании какой-либо записи, last присваивали 0, выставляли дату удаления, и создавали новую, у которой last=1, версия на 1 больше и дата создания sysdate. Таким образом можно было вытащить данные за любой промежуток времени, просмотреть хронологию изменения договора и вообще чего угодно.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831725
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Ключ состоял из айдишника и версии записи

Криво. Зачем версию тащить в ключ?

> можно было вытащить данные за любой промежуток времени

Этого не достаточно. Нужно иметь возможность получать актуальные данные на любой момент времени. Скажем, если DM прекратила существование 01.01.2002, а оператор отразил эти изменения только через три недели, ни в одной связи с 01.01.2002 DM участвовать не должна.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831772
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Ключ состоял из айдишника и версии записи

Криво. Зачем версию тащить в ключ?

> можно было вытащить данные за любой промежуток времени

Этого не достаточно. Нужно иметь возможность получать актуальные данные на любой момент времени. Скажем, если DM прекратила существование 01.01.2002, а оператор отразил эти изменения только через три недели, ни в одной связи с 01.01.2002 DM участвовать не должна. 1. Если не тащить версию, то первичный ключ может быть одинаковым у 40 записей. Вторая составляющая как раз чтобы разные версии одной и той же записи имели уникальный ключ. 2. Такой ситуации быть не может, потому что из приложения при редактировании вызываются хранимые процедуры, которые автоматически гасят текущую версию и создают новую. Поэтому на конкретный момент времени база - точная копия той, что была когда-то. И чисто практически могу сказать, что никогда не было ситуации чтобы я не мог извлеч нужные мне данные.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831891
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Если не тащить версию, то первичный ключ может быть одинаковым у 40 записей.

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

> Такой ситуации быть не может

Дорого куплю телепатический модуль от Вашей софтинки.

> на конкретный момент времени база - точная копия той, что была когда-то

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

> не было ситуации чтобы я не мог извлеч нужные мне данные

Значит, просто не было сложных задач.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35831943
karapetyan_a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher
1. Если есть таблица должностей, tPosition (PosID PK, PosName), и мы добавим сюда BeginDate, EndDate, то каким станет первичный ключ, и соответственно внешний ключ из tStaff ?

Первичным ключом станет PosID + BeginDate.
А внешнего ключа в таблице tStaff не будет.
т.е. в смысле "ограничения" (FK constraint) не будет.
Будет "смысловой" внешний ключ. наши даты определяют время "жизни" (валидности) конкретной строки. В связанной таблице тоже существует пара дат(нач. конец). Так вот "логический" внешний ключ определяет, что время жизни "дочерней" записи не может выходить за рамки времени жизни "родительской" записи. Вот эта логика и должна "гарантироваться" триггерами.
Вот в этом то и сложность, прежде чем изменить какую-либо запись надо будет проверять много других таблиц.... ведь от таблицы tStaff потом будут зависеть tEmployee........
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35832154
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Если не тащить версию, то первичный ключ может быть одинаковым у 40 записей.

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

> Такой ситуации быть не может

Дорого куплю телепатический модуль от Вашей софтинки.

> на конкретный момент времени база - точная копия той, что была когда-то

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

> не было ситуации чтобы я не мог извлеч нужные мне данные

Значит, просто не было сложных задач. Про первичный ключ я имею ввиду (1,1) (1,2), где первое поле собственно сам ключ, а второе - версия. Если убрать версию, то из чего тогда будет состоять ключ? Насчет актуальности не выехал, приведи пример, пожалуйста. А задачи решались очень сложные. Вся информация из базы хранилась на бумаге в архивах в 3 зданиях. Несколько десятков миллиардов томов. Для составления отчетов держали целый отдел SQL программеров.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35832610
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Если убрать версию, то из чего тогда будет состоять ключ?

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

> Насчет актуальности не выехал

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

> Несколько десятков миллиардов томов.

Простите за столь категоричную оценку, но ничего глупее не могу себе представить. Базы данных и существуют как альтернатива данным на бумаге.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35832735
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
daunito Вся информация из базы хранилась на бумаге в архивах в 3 зданиях. Несколько десятков миллиардов томов. Миллиардов? Вы ошибаетесь на несколько (немало) порядков, имхо.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35833555
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab,
1. Исправление ошибок вообще не проблема.
2. Самое сложное - изменение именно структуры данных когда меняется n-арность отношений (был атом стал список). Программа должна поддерживать как новую так и старую струтктуру.
3. Хранилище проблему не решает - ведь его стр-ра тоже может меняться во времени - тут скорее проблема только усугубляется.
4. Хранить готовые отчеты конечно можно, но нужен-то новый отчет на старых данных.
Такое впечатление, что необходим инструмент встроенный в СУБД, который будет хранить версии БД вместе с версиями софта.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35833693
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод
2. Самое сложное - изменение именно структуры данных когда меняется n-арность отношений (был атом стал список). Программа должна поддерживать как новую так и старую струтктуру.


А что здесь сложного? Прежний атом остается, список добавляется, прежний програмный код остается, новый добавляется, и указывается, с какого периода его задействовать.

Было:

ID NAME PHONE_NUM1ИВАНОВ12-34-56

Отчет форма Ф-1: SELECT NAME, PHONE_NUM FROM T1

С 01.01.2009 стало:

ID NAME PHONE_NUM1ИВАНОВ12-34-56

ID PHONE_NUM_NEW112-34-56165-43-21

Отчет форма Ф-1:

IF date > 01.01.2009 // границы нововведений структуры можно отмечать в специальных классах-селекторах, или опять же завести времязависимую таблицу с перечнем алгоритмов (классов, методов) и сроками их актуальности, и сделать селектор на ее основе...
THEN SELECT NAME, PHONE_NUM_NEW FROM T1, T2... новый текст
ELSE прежний (inherited, CASE - по вкусу)
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35834681
daunito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Если убрать версию, то из чего тогда будет состоять ключ?

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

> Насчет актуальности не выехал

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

> Несколько десятков миллиардов томов.

Простите за столь категоричную оценку, но ничего глупее не могу себе представить. Базы данных и существуют как альтернатива данным на бумаге.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35834934
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Крайне содержательное сообщение, daunito, спасибо.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35834992
_Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне эта кажущаяся простота задачи от заказчика чем-то напоминает задачу:
"Давай во всех сущностях добавим колонку "Удалено", чтобы не удалять их, а ПОМЕЧАТЬ на удаление".
...
Валидность данных во времени, да ещё и валидность-историчность структуры данных - усложняют задачу в разы.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35835098
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Валидность данных во времени, да ещё и валидность-историчность структуры данных - усложняют
> задачу в разы.

Ничего радикально сложного в задаче нет. Важна изначально правильная постановка задачи и четкое формулирование граничных условий. Желательно также избегать каши понятий: версионность - гораздо более гибкий механизм, чтобы использовать ее только как генератор ключей.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35862646
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык какой же все-таки окончательный вердикт-то будет? Окончательной таблетки: как организовать унифицированное/масштабируемое хранение истории атрибутов любой сущности Х? я - не увидел. Все очень бурно началось, и скоропостижно на пол-дороге скончалось. Впрочем, как и сдесь ...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35862708
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_SoftДык какой же все-таки окончательный вердикт-то будет?
Могу только повторить: EAV с историей + метаописание с историей полностью решает проблему
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35863051
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
обратитесь в раздел olap, там специалисты сразу должны увидеть паттерн
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35863443
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
prompt
обратитесь в раздел olap

Если я правильно понимаю, то у меня OLTP -приложение...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35864399
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftДык какой же все-таки окончательный вердикт-то будет? Окончательной таблетки: как организовать унифицированное/масштабируемое хранение истории атрибутов любой сущности Х? я - не увидел. Все очень бурно началось, и скоропостижно на пол-дороге скончалось. Впрочем, как и сдесь ...
_________________
"Helo, word!" - 17 errors 56 warningsОкончательного вердикта не будет.
Есть несколько вариантов:
1) во все таблицы вставить две даты, все запросы строить по принципу "данные на указанную дату".
2) К каждой таблице, для которой нужна история - создать "теневую таблицу", в которой хранить старые данные + диапазон действия значения.
В обычной работе - использовать текущую таблицу, для истории - использовать обе.

3) Если у вас Oracle 11g - используйте Total Recall. Он будет сохранять всю историю автоматом.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35864704
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хранение старых фактов - прерогатива olap технологии, хотя физически они могут храниться в oltp базе.Все-таки это редко использеумая функция - посмотреть данные на прошлую дату, в основном применяемая в отчетах.Одним из обязательных измерений в OLAP считается дата регистрации факта, по-моему, то что Вам надо
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865000
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptХранение старых фактов - прерогатива olap технологии, хотя физически они могут храниться в oltp базе.Все-таки это редко использеумая функция - посмотреть данные на прошлую дату, в основном применяемая в отчетах.Одним из обязательных измерений в OLAP считается дата регистрации факта, по-моему, то что Вам надоOLAP и история - вещи разные
(Объем продаж по квартально/помесячно <> напечатать проведенную платежку с реквизитами годичной давности).
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865101
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если в olap данных сохранен факт проведения оплаты с соответствующими реквизитами, то на его основе можно выдать как информацию по 1 транзакции, так и консолидированную, например сумму проведенную для данного клиента за месяц.Разве не так? Дело ведь в гранулярности факта.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865629
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
Окончательного вердикта не будет

/me думает: это - радует

Bely
1) во все таблицы вставить две даты, все запросы строить по принципу "данные на указанную дату".

Это уже обмусолилось... Практически со всех сторон. IMHO, камнем преткновения при таком подходе является интерпретация граничных значений.
Bely
2) К каждой таблице, для которой нужна история - создать "теневую таблицу", в которой хранить старые данные + диапазон действия значения.
В обычной работе - использовать текущую таблицу, для истории - использовать обе.

Ну... В историографии нуждаются не только данные, как таковые, но и НСИ, которая меняется очень часто на протяжении жизненного цикла того же договора. Так что при таком подходе добавляется еще одна головная боль: как различить "где играем, где не играем, а где рыбу заворачивали"?
Bely
3) Если у вас Oracle 11g

Не... Мы - попроще (Sybase ASE, FB)
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865664
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftНу... В историографии нуждаются не только данные, как таковые, но и НСИ, которая меняется очень часто на протяжении жизненного цикла того же договора.Who is этот НСИ? (Неадекватный Системный Изменяльщик? :))
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865698
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н ормативно С правочная И нформация
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865744
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft Н ормативно С правочная И нформацияЕсли у вас НЕ МЕНЯЕТСЯ структура БД, то это лечится так же.
Включается история не только на данные, но и на справочники.
программа должна просто уметь доставать нужные данные и из справочников (на определенную дату).
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35865867
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> программа должна просто уметь доставать нужные данные и из справочников (на определенную дату)

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

Г-н _мод уже сказал все, что можно сказать по теме. Любые другие варианты реализации, включая оракловые приблуды, - поделки обкуренных китайских первоклассников-второгодников. Обсуждать имеет смысл достаточно узкие вещи: критерии выбора метамодели, набор атрибутов, совместное использование версий и истории и пр.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35866111
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621
Г-н _мод уже сказал все, что можно сказать по теме

guest_20040621
EAV с историей + метаописание с историей полностью решает проблему

Это?
guest_20040621
Любые другие варианты реализации, включая оракловые приблуды, - поделки обкуренных китайских первоклассников-второгодников

/me думает: суров...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35866441
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Г-н _мод уже сказал все, что можно сказать по теме

Причем, все сказанное обсуждалось не раз и не два, легко найдете поиском.

> суров...

При чем здесь "суров"? Тема возникает регулярно. И регулярно одни и те же люди дают одни и те же ответы. Причем, и неправильные ответы дают тоже регулярно и тоже одни и те же люди. Вас бы не задолбало читать ахинею?

Абстрагируйтесь от задачи. Просто словами сформулируйте то, что хотите получить. Легко увидите, что, в противовес фактологическим базам данных, Вы формулируете требования к регистрации процессов. Разница в проектировании заключается в том, что в каждый момент времени Вы хотите иметь актуальную суперпозицию состояний процессов. Причем, заранее не всегда известно, какому именно процессу сопоставлена сущность. Процесс в данном случае - это не соответствие нотации или правилам, а наличие факта изменяемости сущности во времени. Теперь посмотрите на это с другой стороны: для работы с такими изменяющимися сущностями Вы имеете метамодель SQL-2003 (конкретные особенности или модель зависят от СУБД). Просто внешне, без детального анализа, попробуйте оценить, как в этой метамодели реализовать приведенные выше требования к сущностям? Легко увидите, что никак. По счастью, многие СУБД имеют расширенную метамодель (Oracle уже назывался), но даже и эта расширенная метамодель ничто иное, как костыли для SQL-2003. Какой вывод из сказанного? У Вас есть два варианта решения задачи: либо реализовать соответствующую темпоральную модель (причем, понимая, какие ограничения несет эта реализация), либо использовать комбинацию метамодель + модель (о чем г-н _мод и пишет). Все, никаких других вариантов в принципе нет.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35866897
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptесли в olap данных сохранен факт проведения оплаты с соответствующими реквизитами, то на его основе можно выдать как информацию по 1 транзакции, так и консолидированную, например сумму проведенную для данного клиента за месяц.Разве не так? Дело ведь в гранулярности факта.
+1
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35867566
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
karapetyan_aНе я первый, не я последний видимо задаю этот вопрос.
Почитайте в книге «Проектирование баз данных» (Дейв Энсор, Йен Стивенсон)
раздел, касающийся работы с временнЫми данными (temporal data)
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35867599
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы определиться с принципом структурирования временных данных, прежде всего нужно знать сценарии их использования
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35867621
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Почитайте в книге «Проектирование баз данных» (Дейв Энсор, Йен Стивенсон) раздел, касающийся работы с временнЫми данными (temporal data)

Дык, насколько видно - это в контексте Оракла и его конкретных заточек. А если другая СУБД ?
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35867686
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft
SQL*Plus
Почитайте в книге «Проектирование баз данных» (Дейв Энсор, Йен Стивенсон) раздел, касающийся работы с временнЫми данными (temporal data)

Дык, насколько видно - это в контексте Оракла и его конкретных заточек. А если другая СУБД ?Там излагается общий подход, который можно применить не только с использованием Oracle.
Почитайте.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868199
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptесли в olap данных сохранен факт проведения оплаты с соответствующими реквизитами, то на его основе можно выдать как информацию по 1 транзакции, так и консолидированную, например сумму проведенную для данного клиента за месяц.Разве не так? Дело ведь в гранулярности факта. Почитайте.

авторВ-третьих, убедитесь в том, что внешние ключи в таблице фактов представляют собой правильные СУРРОГАТНЫЕ КЛЮЧИ. Другими словами, они должны иметь не тип даты/времени SQL, а быть бессмысленными целыми числами. Сопротивляйтесь любому искушению вложить какой-либо смысл или порядок сортировки в эти ключи!Про какую дату мы тогда говорим в OLAP?

Я понимаю, что можно вставить дату в таблицу фактов, но это больше глупость, чем реальность.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868326
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Bely
У меня нет сомнения в том, что дата, какую бы она роль не играла, должны быть представлена в факте ТОЛЬКО посредством ссылки на размерность ДАТА. Когда писалось о реализации факта в данной задаче, имелась ввиду содержательная часть факта без уточнения деталей реализации.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868500
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
Там излагается общий подход, который можно применить не только с использованием Oracle.
Почитайте.

Глава 7. "Обработка временных данных" ? Дык все ж это уже озвучено. Ничего нового лично для себя я там не подчерпнул.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868503
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptTo Bely
У меня нет сомнения в том, что дата, какую бы она роль не играла, должны быть представлена в факте ТОЛЬКО посредством ссылки на размерность ДАТА. Когда писалось о реализации факта в данной задаче, имелась ввиду содержательная часть факта без уточнения деталей реализации.А я говорю о том, что вы путаете задачи.
Да, в обоих задачах есть понятие "срез по времени".
Но это будут разные задачи и им требуются РАЗНЫЕ механизмы реализации.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868509
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftГлава 7. "Обработка временных данных" ? Дык все ж это уже озвучено. Ничего нового лично для себя я там не подчерпнул.А вы думаете, что придете на форум, зададите вопрос, и вам сразу придумают супер прорыв в технологиях?
Я об этом писал в 3 посте.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868521
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Bely:
Укажите, пожалуйста, место в вопросе, которое однозначно отвергает решение через OLAP-методику.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868529
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bely
А вы думаете, что придете на форум, зададите вопрос, и вам сразу придумают супер прорыв в технологиях?

Да не... Просто проверялось насколько то, что мы придумали согласуется с общепринятыми/общеприменяемыми подходами. Лисапет, конечно, не изобрели, но, как оказалось, шли в правильном направлении. Что и требовалось доказать.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868539
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptTo Bely:
Укажите, пожалуйста, место в вопросе, которое однозначно отвергает решение через OLAP-методику.авторtDept - таблица отделов - это дерево (DeptID = ParentID)хоть вот это.
Дерево крайне плохо согласуется со STAR схемой.

Да и цели у задач разные, что самое главное.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35868552
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Bely: Дерево может быть трансформировано в star схему. У OLAP цель - зарегистрировать исторический факт. Она противоречит цели этой задачи?
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35869139
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
promptTo Bely: Дерево может быть трансформировано в star схему. У OLAP цель - зарегистрировать исторический факт. Она противоречит цели этой задачи?цель OLAP - проведение многомерного анализа.
Регистрацией факта (транзакции) занимается OLTP.

Цель задачи - получить состояние системы на любую указанную дату.
...
Рейтинг: 0 / 0
Адекватность данных во времени.......
    #35869376
prompt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в olap есть понятие - Transaction-level fact tables (The DataWarehouse Toolkit, page 134). Они как раз и помогут решить поставленную здесь задачу. Там же описаны цели OLAP/DW - дать пользователю такую информацию и в таком представлении, чтоб он/она могли принять решение в отношении бизнеса.
...
Рейтинг: 0 / 0
60 сообщений из 60, показаны все 3 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Адекватность данных во времени.......
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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