Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Задача - заказчик хочет видеть версии записей всех основных таблиц. Скажем есть справочник товаров - первичный ключ артикул. Нужно иметь артикул и версия - все варианты этого артикула с указанием кто корректировал плюс все поля. Получается задача - все первичные ключи меняются на старые первичный ключ плюс версия. Внешние ключи теперь ссылаются на первичный ключ плюс версия и так далее. Нет ли методик построения таких схем данных? Спасибо, Михаил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2005, 17:10 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
авторНужно иметь артикул и версия - все варианты этого артикула с указанием кто корректировал плюс все поляДля решения этой задачи не нужно менять первичные ключи. При изменении строки сохраняй старый вариант в таблице истории (версии). Текущая версия - это из самого справочника. P.S. Артикул, к которому имеет доступ пользователь - очень плохой кандидат на первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2005, 17:33 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Привет всем! Артикул был выбран для примера! Примущества и недостатки суррогатных лючей известны. Содавать ещё архивную таблицу в которой всё равно придётся держать внешние ключи( на что - на то на архив мастера то на его архив?) Это только не решение! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2005, 19:46 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
http://www.rsdn.ru/article/db/dbhistory.xml вот интересная статья... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 08:31 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Если тебе не хватает внешних ключей, я могу поделиться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 10:20 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Привет всем! За ссылки спасибо! Но должно быть простое решение. Давайте порассуждаем. В структуре бызы есть справочники и документы (всем понятно что это такое). В связанных справочниках хранятся ссылки на значения из других справочников. В документах сами значения. Пример - если в справ. товаров есть поле валюта, то в этом поле хранится значение внешнего ключа на спр. валют. Если произошло изменние названия валюты с "USD" на "Баксы" то при показе полбзователю строки товаров появятся баксы вместо usd. И это для справочников правильно. Для документа важно как называлась валюта в момент заполнения. Если мы в первичный ключ внесём номер версии, то в документе будет хранится ссылка на ключ спр. товаров (товар+версия) и всех справочников на которые он ссылается! Вроде не плохо получается! Почему этим никто не воспользуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 10:36 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Михаил Если мы в МБ> первичный ключ внесём номер версии, то в документе будет хранится МБ> ссылка на ключ спр. товаров (товар+версия) и всех справочников на МБ> которые он ссылается! Вроде не плохо получается! Почему этим никто не МБ> воспользуется? На мой взгляд протоколирование лучше иметь как отдельную состовляющую, а не внедрять в рабочие структуры, хотя бы из соображений быстродействия. -- Dik76 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 10:45 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Заводить архивную таблицу плохо и вот почему. Позиция документа должна содержать данные из справочника на момент оформления документа. То есть если эта позиция в справочнике была отредактирована, то ссылаться документ должен на старое значение. Если эти значения хранить в отдельной таблиице то построение внешних ключей не возможно - его (внешний ключ)нельзя "перекидыввать" с таблица на таблицу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 11:42 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Михаил То есть если эта позиция в справочнике была отредактирована, то ссылаться МБ> документ должен на старое значение. А как различать было сделано исправление ошибки оператора или произошло изменение данных? -- Dik76 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 11:58 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Это хороший вопрос! Получется что в предлагаемом случае надо оператору руками (находясь в твердой памяти..) надо откорректировать и все документы где этот справочник юзался! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 12:35 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Михаил МБ> Это хороший вопрос! Получется что в предлагаемом случае надо оператору МБ> руками (находясь в твердой памяти..) надо откорректировать и все МБ> документы где этот справочник юзался! Вот поэтому я и говорю о разделении. Весь аудит изменений хранить в отдельной структуре, а для актуальных данных предусмотреть изменение характеристик с указанием даты изменения. Есть правда еще один вариант... хранить сформированный до изменения документ со всеми старыми реквизитами, но это только мысли... -- Dik76 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 12:49 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Михаил БорПочему этим никто не воспользуется?Поэтому: авторА как различать было сделано исправление ошибки оператора или произошло изменение данных? -- Dik76 Запись <с 15го числа для Id=14 название ="баксы" > также может редактироваться, - ой т.е. "мегабаксы" . В свое время Snodgrass один из организаторов центра темпоральных БД ввел для темпоральных данных поняти двух осей времени - назовем их предметной и административной. Предметная отражает события внешнего мира, а административная отвечает на вопрос кто и когда сказал мяу. Предметную ось естественно отрабатывать в приложении. Например в документе ссылка на валюту Id=14. В одних отчетах требуется показывать наименование валюты на дату документа, в других на дату изменения статуса документа, в третьих на дату начала периода отчета и т.д. Поэтому в документе не делают еще одно поле дата валюты, а используют одну из уже имеющихся дат для динамической связи запросами с историей наименований валюты. Административную можно логами, или полями в справочниках, в простейшем случае <с 15го числа для Id=14 название ="баксы", последним правил USER 25числа > Очень важно понять, с какой осью вы в том или ином случае имеете дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 13:12 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
> А как различать было сделано исправление ошибки оператора или произошло > изменение данных? Легко. > В свое время Snodgrass ввел для темпоральных данных поняти двух осей > времени - назовем их предметной и административной. А почему две? Осей может быть столько, сколько используется внешних источников. Например, те же валюты. Ввели евро. Изменения в официальном классификаторе валют (логично пользоваться им, поскольку это официальный легко доступный документ) появились позже инструкции ЦБ, которая, в свою очередь, появилась позже документов ЕвроЦБ (или как там он называется?). Вопрос: какую дату в каких случаях считать датой начала обращения евро? Фишка в том, чтобы при регистрации данных или регистрации изменений однозначно идентифицировать источник данных. Это серьезная проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 14:27 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
guest_20040621> А как различать было сделано исправление ошибки оператора или произошло > изменение данных? Легко.Спросить quot guest_20040621 :) guest_20040621 > В свое время Snodgrass ввел для темпоральных данных поняти двух осей > времени - назовем их предметной и административной. А почему две? Осей может быть столько, сколько используется внешних источников. Например, те же валюты. Ввели евро. Изменения в официальном классификаторе валют (логично пользоваться им, поскольку это официальный легко доступный документ) появились позже инструкции ЦБ, которая, в свою очередь, появилась позже документов ЕвроЦБ (или как там он называется?). Вопрос: какую дату в каких случаях считать датой начала обращения евро? Фишка в том, чтобы при регистрации данных или регистрации изменений однозначно идентифицировать источник данных. Это серьезная проблема. Накручивать можно много, в результате поля типа Дата могут составлять 90% полей. На упомянутом сайте полно статей по теме. Ваш пример интересен, можно пофантазировать: СправочникВалют( Код, ДатаАктуальностиДанных, Наименование, ДатаНачалаОбращения, Основание, ДатаОбновления, КтоОбновил ) UNIQUE (Код, ДатаАктуальностиДанных) <приказом ... вступившим в силу с. 01-01. установлено, что обращение разрешено с 15-02.> А затем <письмом ... , вступившим в силу с. 01-05. установлено, что обращение разрешено с 10-02.> Товарищей, привлеченных к ответственности за нарушение приказа в период с 10-02 по 15-02 отпустить, но милиционеров, их арестовавших не наказывать. Несомненно, обе даты нам нужны в прикладном смысле и находятся на прикладной оси. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 17:48 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
Сорри, читать Товарищей, привлеченных в период с 01-01по 01-05 к ответственности за нарушение приказа в период с 10-02 по 15-02 отпустить, но милиционеров, их арестовавших не наказывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 17:53 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
> Спросить guest_20040621 ;) Ну так ведь из контекста понятно, что следует ввести сущность "тип изменения". Или bool поле. Всего и нужно - различать пару типов. > Накручивать можно много, в результате поля типа Дата могут составлять > 90% полей. Понятно, что регистрировать можно все, что угодно. Хочу отметить, что важно понимать: у каждого изменения есть источник. Был очередной тред о суррогратных ключах (если не путаю), там я пробовал рассказать о гранторах и пр., - на самом деле, близкие темы. > На упомянутом сайте полно статей по теме. За ссылку спасибо. На первый взгляд, очень интересно. > Ваш пример интересен, можно пофантазировать В Вашем примере Вы не сможете описывать другие валюты так же, как и евро. Т. е. чтобы структура была корректной, необходимы дополнительные сущности, которые принадлежали бы предметной области. О чем, собственно, и речь. > Несомненно, обе даты нам нужны в прикладном смысле и находятся на > прикладной оси. Конечно. Но в одном случае (ВЭД) дата создания будет одной, в другом (наличные) - другой, в третьем (банковские счета; если помните, их можно было открывать, когда наличного евро еще не было) - третьей. Сущность - одна (валюта), а вот регистрировать ее обращение для разных предметных областей придется по разному. Так что одной оси - маловато. И фиксированного количества дат - тоже. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2005, 18:36 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
guest_20040621 >> Спросить guest_20040621 g> g> ;) Ну так ведь из контекста понятно, что следует ввести сущность "тип g> изменения". Или bool поле. Всего и нужно - различать пару типов. У себя я так и сделал, но гарантии, что тип указан правильно нет поскольку присутствует человеческий фактор. -- Dik76 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 09:23 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
> но гарантии, что тип указан правильно нет поскольку присутствует > человеческий фактор Это уже вопрос не к структуре данных, а к информационной политике предприятия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 15:07 |
|
||
|
Версионные данные. Как?
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Несомненно, обе даты нам нужны в прикладном смысле и находятся на > прикладной оси. Конечно. Но в одном случае (ВЭД) дата создания будет одной, в другом (наличные) - другой, в третьем (банковские счета; если помните, их можно было открывать, когда наличного евро еще не было) - третьей. Сущность - одна (валюта), а вот регистрировать ее обращение для разных предметных областей придется по разному. Так что одной оси - маловато. И фиксированного количества дат - тоже. ;)Возможно я чего-то не понимаю в валютных делах, но эти даты - разные показатели (то ли атрибуты сущности Валюта, то ли экземпляры сущности СобытиеВалюты - разворачивать их по горизонтали или вертикали -отдельный вопрос). ДатаВЭД ведь не отменяет ДатуНаличных? Аналогично для документа дата регистрации не отменяет дату составления. Вот если однажды ДатаВЭД для Евро меняется, то это темпоральные данные. Находясь на данной точке темпоральной оси система должна выдать единственное значение любого показателя. Все предшествующие отменены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2005, 16:30 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33296113&tid=1545646]: |
0ms |
get settings: |
4ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 377ms |

| 0 / 0 |
