|
|
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
doofy, Не далее как сегодня приходит заявка, надо поменять название организации в справочнике организаций. Для старого названия устанавливаю признак логического удаления (запись не удаляется, но в списках выбора уже не отображается). Создаю запись с новым названием. Это не самое правильное решение, но программа не моя, а условиям задачи удовлетворяет. Более правильное решение с датами Вам писали выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 11:02 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
MUSYAKA, Вообщем как то так и делалось раньше, когда можно было сказать заказчику "делайте так" Но пользователю плевать на это, им нужно так как они просят не сделаешь ты сделают другие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 16:53 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
JDS, Неплохая мысль, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 16:54 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Всем спасибо! Хорошие советы. Буду пробовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 16:55 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
JDSdoofyЕсть, предположим, табличка "Документ", и много справочников. Эта табличка содержит ссылки на справочники. И вот если какой то из них будет изменен, то старые данные на которые ссылался этот "Документ" будут потеряны(ведь у нас там только ссылка а данные в справочники поменялись)... Как же сделать так, чтобы эти данные никуда не пропадали при изменении справочников. Я для себя вижу два варианта: 1) Сказать пользователю, что мол нельзя так делать и надо создавать новый справочник 2) Дублировать поля справочников в "Документе" и при создании "Документа" копировать просто инф. из справочников. Может чота не понял, но по-моему все классически просто: в таком случае (при изменении справочника) делается не прямой апдейт записей, а текущая запись становится архивной (например проставляется дата архивации или поле-признак), и добавляется новая запись, т.о. все записи документов будут ссылаться на прежние данные, а для новых документов выводим только текущие актуальные записи справочника. Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 17:01 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинJDSпропущено... <>. Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :) Код: sql 1. или ваше наколенное поделие не умеет частичных индексив ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 17:34 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
эттаКот Матроскинпропущено... Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :) Код: sql 1. или ваше наколенное поделие не умеет частичных индексив ? При чем тут мое "наколенное поделие", старина? ТС ничего про свой сервер не писал - может и не поддерживать. Не говоря уж про то что переносимое решение при прочих равных лучше, нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 17:43 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинэттапропущено... Код: sql 1. или ваше наколенное поделие не умеет частичных индексив ? При чем тут мое "наколенное поделие", старина? ТС ничего про свой сервер не писал - может и не поддерживать. Не говоря уж про то что переносимое решение при прочих равных лучше, нет?как бы очевидно обратное "переносимое решение при прочих равных" -- хуже -- как и всякая погоня за универсальностью в ущерб производительности. но не расстраивайтесь, старина, даже в оракл частичные индексы эмулируются. возможно и в вашем любимом поделии -- найдётся решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 17:50 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
эттаКот Матроскинпропущено... При чем тут мое "наколенное поделие", старина? ТС ничего про свой сервер не писал - может и не поддерживать. Не говоря уж про то что переносимое решение при прочих равных лучше, нет?как бы очевидно обратное "переносимое решение при прочих равных -- хуже -- как и всякая погоня за универсальностью в ущерб производительности. . *facepalm* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 17:57 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинэттапропущено... как бы очевидно обратное "переносимое решение при прочих равных -- хуже -- как и всякая погоня за универсальностью в ущерб производительности. . *facepalm* не в коня корм переносимое == отказавшееся от оптимальных частных решений при "прочих равных" (т.е. в сферическом вакууме) -- такой отказ -- всегда хуже так что можешь хоть весь фейс себе своротить , пальмом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2015, 18:04 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинНе говоря уж про то что переносимое решение при прочих равных лучше, нет? В своё время на этот счёт была хорошая фраза. Не буду переводить обратно на английский, скажу так: "Говорить о том, что Java лучше, поскольку подходит для любой ОС - примерно то же самое, что говорить, что анальный секс лучше, поскольку подходит для любого пола". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 15:30 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
softwarer... пропущено "Говорить о том, что Java лучше, поскольку подходит для любой ОС - примерно то же самое, что говорить, что анальный секс лучше, поскольку подходит для любого пола". Может быть все-таки оральный? Анальный для любого пола подойдет вряд ли. Во всяком случае без дополнительных приспособлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 15:45 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Pulsar_p, ну софтварер же теоретик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 15:57 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
а может и эгоист (не в обиду, уж больно пошлую фигню сказал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 15:58 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Pulsar_pАнальный для любого пола подойдет вряд ли. Взгляд на этот вопрос - это любопытный психологический момент (однако, к тематике форума имеющий отношение только через привычку некоторых мемберов делать всё через задницу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 16:08 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Ну это в Европе нынче модный тренд. Слава Богу, не у нас! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2015, 16:26 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
JDSМожет чота не понял, но по-моему все классически просто: в таком случае (при изменении справочника) делается не прямой апдейт записей, а текущая запись становится архивной (например проставляется дата архивации или поле-признак), и добавляется новая запись, т.о. все записи документов будут ссылаться на прежние данные, а для новых документов выводим только текущие актуальные записи справочника. Плохое решение! Например, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. Усложняются выборки и связи в отчетах и т.д. Второй пример, сотрудница вышла замуж и сменила ФИО. Заводить нового сотрудника не верно! Как учитывать в расчетах прежние начисления? поэтому, только механизмы учитывающие периодические изменения! выше структуру приводил! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 01:45 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Уважаемый авторПлохое решение! .... поэтому, только механизмы учитывающие периодические изменения! Вообще-то, JDS привёл один из вариантов "механизма учитывающего периодические изменения" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 02:28 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Уважаемый автор Плохое решение! Например, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. Усложняются выборки и связи в отчетах и т.д. Второй пример, сотрудница вышла замуж и сменила ФИО. Заводить нового сотрудника не верно! Как учитывать в расчетах прежние начисления? поэтому, только механизмы учитывающие периодические изменения! выше структуру приводил! 1. все верно, приведен самый простой вариант, чтобы достичь цели, о которых говорите, никто не мешает: а) завести отдельную таблицу истории б) по-прежнему обходиться одной таблицей с добавлением parent_id в) другие варианты (историю хранить в отдельном поле текущей же записи типа вложенная таблица, xml и т.п.) 2. в то же время: Уважаемый авторвведите таблицу "история изменений" - id - id записи ваших таблиц - имя поля - старое значение - новое значение - дата, время изменения Именно такой вариант приемлем, если в целом данные хранятся в базе развернутые "вертикально" (имя поля - значение), таких систем мало встречал, как и систем с таким механизмом историчности. Если же данные хранятся "горизонтально" (таблицы не из двух полей :), то для поддержания историчности типа "имя поля-старое значение-новое значение" придется довольно капитально перепиливать систему, практически все отчеты, с вероятностью 99%, придется переползать переползать на динамический скл, что совсем не делает систему внутри удобочитаемой, да и по быстродействию просядем немного. А так да, отдельная табличка - вполне нормально, не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 09:44 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Уважаемый авторвведите таблицу "история изменений" - id - id записи ваших таблиц - имя поля - старое значение - новое значение - дата, время изменения Да не. Все-таки: имя поля+старое знач.+новое знач.... Представляете, как будет строиться и отрабатывать запрос, чтобы достать все поля документа? Не секрет, что бывают документы и с овер сотней полей, понятно, что не все они будут с историей, но тем не менее, для каждого надо будет отдельно доставать его значение? В общем смотря какая конечная цель и текущая структура данных, но имхо, в основном оперируют целыми записями (единственный контраргумент, кот. может быть в этом случае - место на диске, если архивные записи плодятся в диких количествах )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 09:57 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Уважаемый авторНапример, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. У Ну документ выписанный год назад не должен при сегодняшнем просмотре на него ОТЛИЧАТСЯ, от своего состояния годичной давности. Так что в нем как раз и должно быть старое наименование!!!! p.s. SCD2 - все уже давно придумано за нас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 11:24 |
|
||
|
Дублирование информации в таблицах
|
|||
|---|---|---|---|
|
#18+
Ivan DurakНу документ выписанный год назад не должен при сегодняшнем просмотре на него ОТЛИЧАТСЯ, от своего состояния годичной давности. Так что в нем как раз и должно быть старое наименование! Там речь не о документе, а о взаиморасчетах - т.е. в отчете мы должны условно подбить баланс по одной организации, хотя у нее уже типа две записи, поэтому речь о том, чтобы основная запись клиента всегда была одна, но с историей изменения, в документах отображать исторические данные, но иметь сущность, которая бы отражала организацию в целом для удобства тех же взаиморасчетов ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2015, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39063437&tid=1540471]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 268ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...