powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дублирование информации в таблицах
22 сообщений из 47, страница 2 из 2
Дублирование информации в таблицах
    #39062919
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

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

Неплохая мысль, спасибо!
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063348
doofy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
Хорошие советы. Буду пробовать
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063361
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSdoofyЕсть, предположим, табличка "Документ", и много справочников. Эта табличка содержит ссылки на справочники.
И вот если какой то из них будет изменен, то старые данные на которые ссылался этот "Документ" будут потеряны(ведь у нас там только ссылка а данные в справочники поменялись)...
Как же сделать так, чтобы эти данные никуда не пропадали при изменении справочников.

Я для себя вижу два варианта:
1) Сказать пользователю, что мол нельзя так делать и надо создавать новый справочник
2) Дублировать поля справочников в "Документе" и при создании "Документа" копировать просто инф. из справочников.

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

Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :)
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063414
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот МатроскинJDSпропущено...


<>.

Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :)
Код: sql
1.
CREATE UNIQUE INDEX ON ......  (name) WHERE NOT arch;


или ваше наколенное поделие не умеет частичных индексив ?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063437
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаКот Матроскинпропущено...


Ограничения уникальности на название элемента справочника будет особенно удобно реализовывать :)
Код: sql
1.
CREATE UNIQUE INDEX ON ......  (name) WHERE NOT arch;


или ваше наколенное поделие не умеет частичных индексив ?

При чем тут мое "наколенное поделие", старина? ТС ничего про свой сервер не писал - может и не поддерживать.
Не говоря уж про то что переносимое решение при прочих равных лучше, нет?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063450
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскинэттапропущено...

Код: sql
1.
CREATE UNIQUE INDEX ON ......  (name) WHERE NOT arch;


или ваше наколенное поделие не умеет частичных индексив ?

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

"переносимое решение при прочих равных" -- хуже

-- как и всякая погоня за универсальностью в ущерб производительности.

но не расстраивайтесь, старина, даже в оракл частичные индексы эмулируются. возможно и в вашем любимом поделии -- найдётся решение.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063460
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаКот Матроскинпропущено...


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

"переносимое решение при прочих равных -- хуже

-- как и всякая погоня за универсальностью в ущерб производительности. .

*facepalm*
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39063467
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскинэттапропущено...
как бы очевидно обратное

"переносимое решение при прочих равных -- хуже

-- как и всякая погоня за универсальностью в ущерб производительности. .

*facepalm*
не в коня корм

переносимое == отказавшееся от оптимальных частных решений

при "прочих равных" (т.е. в сферическом вакууме) -- такой отказ -- всегда хуже

так что можешь хоть весь фейс себе своротить
, пальмом
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064302
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинНе говоря уж про то что переносимое решение при прочих равных лучше, нет?
В своё время на этот счёт была хорошая фраза. Не буду переводить обратно на английский, скажу так: "Говорить о том, что Java лучше, поскольку подходит для любой ОС - примерно то же самое, что говорить, что анальный секс лучше, поскольку подходит для любого пола".
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064323
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer... пропущено
"Говорить о том, что Java лучше, поскольку подходит для любой ОС - примерно то же самое, что говорить, что анальный секс лучше, поскольку подходит для любого пола".
Может быть все-таки оральный? Анальный для любого пола подойдет вряд ли. Во всяком случае без дополнительных приспособлений.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064342
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

ну софтварер же теоретик
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064343
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а может и эгоист (не в обиду, уж больно пошлую фигню сказал)
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064361
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pАнальный для любого пола подойдет вряд ли.
Взгляд на этот вопрос - это любопытный психологический момент (однако, к тематике форума имеющий отношение только через привычку некоторых мемберов делать всё через задницу)
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064380
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это в Европе нынче модный тренд.
Слава Богу, не у нас!
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064768
Уважаемый автор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JDSМожет чота не понял, но по-моему все классически просто: в таком случае (при изменении справочника) делается не прямой апдейт записей, а текущая запись становится архивной (например проставляется дата архивации или поле-признак), и добавляется новая запись, т.о. все записи документов будут ссылаться на прежние данные, а для новых документов выводим только текущие актуальные записи справочника.

Плохое решение!
Например, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. Усложняются выборки и связи в отчетах и т.д.
Второй пример, сотрудница вышла замуж и сменила ФИО. Заводить нового сотрудника не верно! Как учитывать в расчетах прежние начисления?

поэтому, только механизмы учитывающие периодические изменения!

выше структуру приводил!
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064771
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый авторПлохое решение!
....
поэтому, только механизмы учитывающие периодические изменения!
Вообще-то, JDS привёл один из вариантов "механизма учитывающего периодические изменения" :)
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064881
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый автор Плохое решение!
Например, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. Усложняются выборки и связи в отчетах и т.д.
Второй пример, сотрудница вышла замуж и сменила ФИО. Заводить нового сотрудника не верно! Как учитывать в расчетах прежние начисления?

поэтому, только механизмы учитывающие периодические изменения!
выше структуру приводил!

1. все верно, приведен самый простой вариант, чтобы достичь цели, о которых говорите, никто не мешает:
а) завести отдельную таблицу истории
б) по-прежнему обходиться одной таблицей с добавлением parent_id
в) другие варианты (историю хранить в отдельном поле текущей же записи типа вложенная таблица, xml и т.п.)

2. в то же время:
Уважаемый авторвведите таблицу "история изменений"
- id
- id записи ваших таблиц
- имя поля
- старое значение
- новое значение
- дата, время изменения
Именно такой вариант приемлем, если в целом данные хранятся в базе развернутые "вертикально" (имя поля - значение), таких систем мало встречал, как и систем с таким механизмом историчности. Если же данные хранятся "горизонтально" (таблицы не из двух полей :), то для поддержания историчности типа "имя поля-старое значение-новое значение" придется довольно капитально перепиливать систему, практически все отчеты, с вероятностью 99%, придется переползать переползать на динамический скл, что совсем не делает систему внутри удобочитаемой, да и по быстродействию просядем немного.
А так да, отдельная табличка - вполне нормально, не спорю.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064894
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый авторвведите таблицу "история изменений"
- id
- id записи ваших таблиц
- имя поля
- старое значение
- новое значение
- дата, время изменения

Да не. Все-таки: имя поля+старое знач.+новое знач....
Представляете, как будет строиться и отрабатывать запрос, чтобы достать все поля документа?
Не секрет, что бывают документы и с овер сотней полей, понятно, что не все они будут с историей, но тем не менее, для каждого надо будет отдельно доставать его значение?
В общем смотря какая конечная цель и текущая структура данных, но имхо, в основном оперируют целыми записями (единственный контраргумент, кот. может быть в этом случае - место на диске, если архивные записи плодятся в диких количествах ))
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064992
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый авторНапример, клиент поменял название юридическое, а взаиморасчеты надо строить фактически по клиенту. У
Ну документ выписанный год назад не должен при сегодняшнем просмотре на него ОТЛИЧАТСЯ, от своего состояния годичной давности. Так что в нем как раз и должно быть старое наименование!!!!

p.s. SCD2 - все уже давно придумано за нас
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39064998
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan DurakНу документ выписанный год назад не должен при сегодняшнем просмотре на него ОТЛИЧАТСЯ, от своего состояния годичной давности. Так что в нем как раз и должно быть старое наименование!
Там речь не о документе, а о взаиморасчетах - т.е. в отчете мы должны условно подбить баланс по одной организации, хотя у нее уже типа две записи, поэтому речь о том, чтобы основная запись клиента всегда была одна, но с историей изменения, в документах отображать исторические данные, но иметь сущность, которая бы отражала организацию в целом для удобства тех же взаиморасчетов )
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Дублирование информации в таблицах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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