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

Есть, предположим, табличка "Документ", и много справочников. Эта табличка содержит ссылки на справочники.
И вот если какой то из них будет изменен, то старые данные на которые ссылался этот "Документ" будут потеряны(ведь у нас там только ссылка а данные в справочники поменялись)...
Как же сделать так, чтобы эти данные никуда не пропадали при изменении справочников.

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

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

Уверен есть способы много лучше!
Подскажите как быть. Литературой, советом, чем угодно!
Заранее спасибо
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061537
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погугли "периодические реквизиты".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061548
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

Как по вашему чем отличается справочник от документа?.. Ответив на этот вопрос сможете понять что у вас не так. Если наугад то неправильная организация, а не структура БД. Хотя это только догадка а не факт.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061551
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой Бобр,

нормальная догадка, не то что догадки товарисча до тебя
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061591
doofy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

авторКак по вашему чем отличается справочник от документа?
Чем по-вашему?

авторОтветив на этот вопрос сможете понять что у вас не так.
Судя по всему вы знаете? К чему загадки? Можете сказать что не так чего уж там...

авторнеправильная организация, а не структура БД.
Ну так я не отрицаю, речь как раз о том, что я не знаю как правильно, да и вообще каких-то методик де-факто или что-то в этом роде.

В качестве примера могут быть такие таблички:
Документ - Заказы
Справочник - Книги
Изменилось название у книги(так вот захотели) вот и все дела, и в "старом" заказе уже не та книга, что была когда-то.
Это конечно не моя база, но для примера сгодится думаю.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061593
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

Сибиряков Вам дал вполне практичный совет (правда имхо именно такие слова в гугле быдут выдавать много 1С-а, что не добавит ясности)

Если кратко - у элемента справочника вводятся периоды актуальности.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061595
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofyИзменилось название у книги(так вот захотели)
Хренасе у вас хотелки... А весь напечатанный тираж отозвали чтобы поменять обложку?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061599
doofy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
авторХренасе у вас хотелки... А весь напечатанный тираж отозвали чтобы поменять обложку?..
"хотелки" не мои)
Так и знал, что будут привязываться к конкретному примеру. Нельзя ли абстрагироваться от него? Ну или взять за данность - такая вот "хотелка"... это же не точь в точь как оно есть, не нравятся книги возьмите что-нибудь другое "Клиенты", например, человек, который сменил фамилию, так будет проще?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061604
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofyDimitry Sibiryakov,
авторХренасе у вас хотелки... А весь напечатанный тираж отозвали чтобы поменять обложку?..
"хотелки" не мои)
Так и знал, что будут привязываться к конкретному примеру. Нельзя ли абстрагироваться от него? Ну или взять за данность - такая вот "хотелка"... это же не точь в точь как оно есть, не нравятся книги возьмите что-нибудь другое "Клиенты", например, человек, который сменил фамилию, так будет проще?
да пофиг, пусть хоть пол сменит, тебе то какое дело? ты ж не обязан следить за его жизнью?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061607
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или все ж обязан может?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061609
doofy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Ваша правда! ) Пускай меняет)) Не обязан ему ничем.
Но ведь задачу то надо как то решить

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

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

или более рассширенный вариант - 2 таблицы
- собственно справочник с неизменными элементами
- история изменений элементов с периодом актуальности
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061639
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

"Вам шашечки или ехать?" (с) не мое но в тему.
Я то знаю чем отличается. Но проблема ведь не у меня. Если думаете что вам тут начнут разжевывать теорию - очень ошибаетесь. За теорией обращайтесь к учителям. Тут только могут послать в правильном направлении. Поэтому если хотите посыла - выкладывайте что у вас и как. По другому думаю никак.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061653
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

наоборот, номер 2 --полный бред.
надо делать 1.

к тому же не парься так сильно, 90% справочников никогда не меняется.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061744
Уважаемый автор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,

введите таблицу "история изменений"
- id
- id записи ваших таблиц
- имя поля
- старое значение
- новое значение
- дата, время изменения

периодические реквизиты не спасут от отслеживания изменений, например, наименование справочника.
изменения ссылки на справочник - решат, но не само изменение полей!
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061814
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть товар Велосипед трехколесный металлический
у енго есть ставка НДС = 10%
вдруг наш парламент решает, что нужно применить 18%
это просто вариант, сложнее:
этот велик возят из-за рубежа и разные таможни по-разному (ставки НДС) его растомаживают
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061841
Serguei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый авторвведите таблицу "история изменений"
- id
- id записи ваших таблиц
- имя поля
- старое значение
- новое значение
- дата, время изменения

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

Я бы сделал так: для каждой таблицы сделать историческую таблицу:
- id
- id записи ваших таблиц
- значение
- дата начала,
- дата окончания
-время изменения

Что Вы выиграете от того что это будет отдельная таблица? Запросы на получение нужного значения будут, очевидно, сложнее. Вероятность коллизии в данных - выше. Что будет проще?
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061898
Mikle83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofy,
для меня бы был основной вопрос такой: надо ли знать, что "Изделие #1" из справочника в определенный момент было переименована в "Изделие #2", а потом еще и в "Изделие №3".

Если да - заморачивайтесь с периодическими реквизитами, как вам и советовали выше. Вариантов как это сделать - тысячи, от доп таблиц до просто ссылок на родительскую запись при "клонировании" и использовании одной таблицы.
Если нет - делайте вместо редактирования - дублирование записи с новыми параметрами/реквизитами в справочнике и запретите редактирование справочников как таковое. Имхо самый простой вариант.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39061940
doofy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mikle83doofy,
для меня бы был основной вопрос такой: надо ли знать, что "Изделие #1" из справочника в определенный момент было переименована в "Изделие #2", а потом еще и в "Изделие №3".

хранить все не нужно
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39062452
MUSYAKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот у меня вопрос - сколько записей в справочнике, связанном с "документом" ? Наверное не одна (иначе это был бы не справочник), а если не одна то ссылка в Документе должна на быть на конкретную запись из справочника. Долее с правами доступа к этой записи : при попытке удалить - предупреждение: имеются связанные документы), при попытке редактировать - предупреждение о наличии связанных документов (при большом количестве пользователей функцию редактирования в таком случае вообще исключить нужно).
Другими словами - однажды созданные связи должны оставаться в первозданном виде, до тех пор пока не будут изменены из первоначальной точки создания ( т.е. в нашем случае только из Документа)
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39062794
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Злой БобрТут только могут послать в правильном направлении.
А могут и в не правильном) Вот такая суровая реальность))
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39062800
dma_caviar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofyDimitry Sibiryakov,
авторХренасе у вас хотелки... А весь напечатанный тираж отозвали чтобы поменять обложку?..
"хотелки" не мои)
Так и знал, что будут привязываться к конкретному примеру. Нельзя ли абстрагироваться от него? Ну или взять за данность - такая вот "хотелка"... это же не точь в точь как оно есть, не нравятся книги возьмите что-нибудь другое "Клиенты", например, человек, который сменил фамилию, так будет проще?
Тут лучше не абстрагироваться, а как раз наоборот, давайте конкретный пример. У каждого случая свое решение. Поменяли НДС? Храните НДС в заказе, а что в этом страшного. Клиент сменил ФИО? А зачем вам ФИО? Чтобы светить в списке заказов? Да и хрен с ним, пусть новое ФИО светится. Или для того чтобы какой-нибудь бланк заказа от заднего числа печатался с тем же ФИО, которое было на ту дату? Для печати я бы вообще хранил реквизиты в отдельной таблице. Т.е. при печати они сохраняются в этой таблице и печатаются из нее. Если это конечно критично в вашем случае. Или просто сохраняйте конкретный распечатанный документ (pdf).
У кредитного продукта поменялась ставка, а по старым кредитам ставка должна остаться прежней? Храните ставку в конкретном договоре клиента.
Ну и т.д. А в каких-то случаях, действительно, периодический справочник сгодится.
...
Рейтинг: 0 / 0
Дублирование информации в таблицах
    #39062883
JDS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doofyЕсть, предположим, табличка "Документ", и много справочников. Эта табличка содержит ссылки на справочники.
И вот если какой то из них будет изменен, то старые данные на которые ссылался этот "Документ" будут потеряны(ведь у нас там только ссылка а данные в справочники поменялись)...
Как же сделать так, чтобы эти данные никуда не пропадали при изменении справочников.

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

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


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