powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение и обработка объектов с изменяющимися наименованиями
25 сообщений из 42, страница 1 из 2
Хранение и обработка объектов с изменяющимися наименованиями
    #35323367
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Существует некое ООО "РУСИНВЕСТСТРОЙ", директор Пупкин Петр Петрович, его заместитель Гогидзе Гоги Вахович.
Хранится в БД допустим таблица:
org_tbl
Код: plaintext
1.
2.
3.
id_org  org_name
 1         ООО "РУСИНВЕСТСТРОЙ"
 2         ООО "НЕФТЬ"
Предположим изменяется название РУСИНВЕСТСТРОЯ на ИНВЕСТСТРОЙ-М. Пох, меняем поле org_name на ООО "ИНВЕСТСТРОЙ".
НО! Как же быть с ранее веденными данными? Получается во всех таблицах где будет хранится id_org этого инвестстроя название поменяется тоже? Как можно обеспечить хранение и старой и новой информации?
Читал про КЛАДР, там в общероссийском классификаторе эта проблема приемлемо не решена получается?
Неужели какой то разработанной методики?
мой подход пока такой:
id_org_classifier_tbl
Код: plaintext
1.
2.
id_org_class id_org_class_name id_org_class_descr
 1             Фирма Гоги         Это гогиевская фирма

id_org_tbl
Код: plaintext
1.
2.
3.
id_org id_org_class id_org_name               acts
 1          1            ООО "РУСИНВЕСТСТРОЙ"     нет
 2          1            ООО "ИНВЕСТСТРОЙ-М"      да

То есть инвест строю в таблице id_org_tbl будут соответствовать 2 записи, но у недействующей флаг acts будет false. Одинаковыми у них будут id_org_class, подцепляемые из таблицы id_org_classifier_tbl. А поле acts будет использоваться для всяких выпадающих списков.

Плюсы такого подходы для меня в том что название организации будет отображаться с сохранением истории, а для учета и подсчета будет использоваться id_org_class_id, которое будет сохраняться для разных наименований.
как то так.
Но может есть что то более правильное ?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323438
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть более сложное - слияние и поглощение организаций, например.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323532
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например.
и-и-иии? существует ли какой то общий подход к этой проблеме?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323608
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasssoid Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например.
и-и-иии? существует ли какой то общий подход к этой проблеме?

Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют.
Типа понял?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323696
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman
Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют.
Типа понял?
не понял. на человека статистику заказов, контрактов, проектов делать в течение времени не надо. а тут понимаешь надо:
1) при создании отчетов учитывать что под разными названиями могут иметься в виду одни и те же сущности
2) при печати документов, справок за определенный период надо учитывать что на тот момент название было другим
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323799
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman , можно поподробнее?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35323952
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenman Vasssoid Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например.
и-и-иии? существует ли какой то общий подход к этой проблеме?

Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют.
Типа понял?
Это простое переименование. Я писал про более сложный случай.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324136
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324333
ODIN.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первое что пришло в голову (не судите строго) мож так... (дерево в одной таблице, можно и без дерева тогда две таблицы)

таблица Enterprise
поле ID
поле ID_InheritedFrom (или Master_ID) потупому...
поле NAME
поле BeginDate
поле EndDate
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324435
MGR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы предложил бы по другому.
Оставить старую табличку org_tbl в неприкосновенности, добавив только статус
параллельно ей вести табличку переименований (слияний, дроблений).
Ну и, соответственно, ввести операцию "смена кастомера" например, когда все задолженности с ООО "РУСИНВЕСТСТРОЙ" необходимо перевести на ООО "ИНВЕСТСТРОЙ-М".

Таким образом переименование происходит следующим образом:
1. Создаём запись о ООО "ИНВЕСТСТРОЙ-М".
2. Делаем ООО "РУСИНВЕСТСТРОЙ" неактивным
3. Делаем запись о том, что первая является наследником второй. Основание - "переименование", "поглощение", "покупка долгов", "ошибка операциониста" и т.п.
4. Переводим задолженность.
5. Работаем с новой компанией.
6. В отчётах можно анализировать дату и писать сноску "ранее известный как Принц" и т.п.

Пункты 2-4 можно объединить в одну операцию.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324487
ODIN.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MGRЯ бы предложил бы по другому.
Оставить старую табличку org_tbl в неприкосновенности, добавив только статус
параллельно ей вести табличку переименований (слияний, дроблений).
Ну и, соответственно, ввести операцию "смена кастомера" например, когда все задолженности с ООО "РУСИНВЕСТСТРОЙ" необходимо перевести на ООО "ИНВЕСТСТРОЙ-М".

Таким образом переименование происходит следующим образом:
1. Создаём запись о ООО "ИНВЕСТСТРОЙ-М".
2. Делаем ООО "РУСИНВЕСТСТРОЙ" неактивным
3. Делаем запись о том, что первая является наследником второй. Основание - "переименование", "поглощение", "покупка долгов", "ошибка операциониста" и т.п.
4. Переводим задолженность.
5. Работаем с новой компанией.
6. В отчётах можно анализировать дату и писать сноску "ранее известный как Принц" и т.п.

Пункты 2-4 можно объединить в одну операцию.

хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент...
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324489
MGR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ODIN.
хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент...

Дело в том, что в системах, с которыми я работал баланс кастомера всегда хранится накопительно. Ну, в некоторых разрезах, конечно. Таким образом перевод задолженности - всего лишь проапдейтить несколько строк в табличке балансов.
А насчёт документов - тут хозяин бврин. Бывает, что нужна любая проводка, хоть по забалансовым счетам.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35324701
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ODIN.
хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент...
как вам тогда вариант с неким классификатором организации? Например если перейти на уровень отделов, то могут быть: отдел кадров, бухгалтерия, ИТ отдел. Хранить в таблицах значения идентификатора названия и идентификатора класса подразделения. Точнее видится, что можно хранить только идентификатор названия, по которому будет цепляться идентификатор подразделения.
Что то насчет плюсов/минусов мыслей нет.

Зы самый главный вывод получается- каждый решает проблему по своему, причем довольно различными способами?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35325023
Прапорщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вероятно самым простым решением будет создание периодического справочника для реквизитов, которые будут изменяться во времени.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35325067
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название?
Сохраняю в таблице истории изменения ключевых атрибутов организаций (не только переименования).
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35325806
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель
Сохраняю в таблице истории изменения ключевых атрибутов организаций (не только переименования).
можешь описать структуры таблиц и то как сохраняется история изменения ключевых атрибутов?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35325970
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура самая тривиальная

iCustomerHistoryID PK СчетчикdtCustomerHistoryFrom Дата начала действия данныхdtCustomerHistoryTo Дата конца действия данныхiCustomerID FK Код организации sCustomerName Краткое названиеsCustomerReportName Название для отчетовsCustomerFullName Полное названиеiCustomerParentID FK Код родительской орг-ииiCountryCode FK Код страныiCustomerFilialLevel FK Уровень в ОАО... другие важные поляsUserNameInsert аудирующие поля (одинаковые для всех таблиц)sUserNameUpdatedtDateInsertdtDateUpdate
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35326101
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель спасибо! пошел изучать
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35326150
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель , получается по твоей таблице поле iCustomerID необходимо для различным статистических отчетов?
То есть если было РУССТРОЙИНВЕСТ (iCustomerHistoryID=2, iCustomerID=1, iCustomParentID=Null) и оно становится СТРОЙИНВЕСТ-М, то добавляется новая запись (iCustomerHistoryID=3, iCustomerID=1 (совпадающий c iCustomerID РУССТРОЙИНВЕСТа), iCustomParentID=2 (То есть iCustomParentID РУССТРОЙИНВЕСТа)).
Так или нет?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35326887
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название?

Вопрос: где может понадобиться старое имя человека?
Ответ: В старом договоре, который был заключен в то время, когда старое имя было валидным.
(Чтобы при повторной печати то же самое напечаталось что было до того как)
Вопрос: Откуда в договоре берется имя человека?
Ответ: имя при печати договора берется из конкретного паспорта. (или другого документа)
А у документов есть сроки действия. Намек понял?

Код: plaintext
1.
2.
3.
4.
Документы людей---->люди
     ^
     |
Договора

Аналогично и организации. Меняется устав - иногда меняется и название организации. При этом куча инфы остается: номера счетов, договора и прочая хренотень.... Понятно?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35358660
Vassssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gardenman Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название?

Вопрос: где может понадобиться старое имя человека?
Ответ: В старом договоре, который был заключен в то время, когда старое имя было валидным.
(Чтобы при повторной печати то же самое напечаталось что было до того как)
Вопрос: Откуда в договоре берется имя человека?
Ответ: имя при печати договора берется из конкретного паспорта. (или другого документа)
А у документов есть сроки действия. Намек понял?

Код: plaintext
1.
2.
3.
4.
Документы людей---->люди
     ^
     |
Договора

Аналогично и организации. Меняется устав - иногда меняется и название организации. При этом куча инфы остается: номера счетов, договора и прочая хренотень.... Понятно?

намек понят Ж) кстати в учебнике по РСУБД для подобных случаев (когда необходимо хранить историю изменений) применяется некая реализация сущностей как классов-наследников вроде как то так http://]http://www.citforum.ru/database/articles/moq.shtml
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35367308
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пришла в голову следующая мысль. Например организация с различными должностями. Директор, Зам директора, Бухгалтер и так далее. Сотрудник Иванов Иван Иванович, Петров Петр Петрович и т.д. Хранение информации об изменяющихся наименованиях аналогично задаче о хранении информации об изменении должностей сотрудников.
В общем случае получается что данная ситуация идентична связи много-много между сущностями (одна и та же должность может быть занята с течением времени разными сотрудниками, один и тот же сотрудник может занимать разные должности с течением времени; одна и та же компания может входить в состав различных холдингов с течением времени, один и тот же холдинг может включать в себя различные компании).
=> можно применить стандартный подход реализации связи многие-к-многим

таблица Должности
Код: plaintext
1.
2.
3.
должность_id должность_наименование
 0              директор
 1              заместитель директора

таблица Сотрудники
Код: plaintext
1.
2.
3.
сотрудник_id сотрудник_ФИО
 0             Иванов Иван Иванович
 1             Петров Петр Петрович

таблица СотрудникиДолжности
Код: plaintext
1.
2.
3.
должность_id сотрудник_id назначен_дата снят_дата  СотрудникиДолжность_id
 0                    0        12 . 05 . 2007      14 . 05 . 2008      0 
 0                    1        14 . 05 . 2008                    1 

Аналогично можно сделать для организаций. Но тут вопрос.
Какой способ хранения данных о сотруднике принявшем, выполнившем заказ предпочтительнее?
Есть вариант хранить в БД в этих случах идентификатор записи в таблице СотрудникиДолжности. В этом случае:
+ хранится 1 поле
- если произойдет какой либо сбой и записи в таблице СотрудникиДолжности будут утеряны, то восстановить что же значил идентификатор 152 не получится

Другой вариант, хранить сотрудник_id, должность_id
- хранится будет два поля
+ большая устойчивость к сбоям

Может есть что то еще? Как решаете этот момент?
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35368320
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Учтите вот что...
В организации есть контактные лица и они действительно занимают какие-то должности.
Но эти должности - пофиг.
В документах (договорах) может поставить подпись любой из сотрудников организации если у него есть на это право. Такое право дает доверенность которая действует как правил с... и по... (обычно год). Это право называется основанием. директор и гл. Бух. не используют доверенности т.к. действуют на основании УСТАВА организации.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35369310
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gardenmanдиректор и гл. Бух. не используют доверенности т.к. действуют на основании УСТАВА организации.
Это не всегда верно, так что всегда надо уточнять.
...
Рейтинг: 0 / 0
Хранение и обработка объектов с изменяющимися наименованиями
    #35451795
Vasssoid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
!ап
пришла в голову мысль о следующем решении.

Каждый объект (в случае структуры организаций с территориальным и департаментальным делением) можно представить в виде вектора со следующими координатами:
Объект(Организация, Департамент, Территориальное местоположение, Уровень, Родительский объект, Наименование)
Суть в том что набор координат:
(Организация, Департамент, Территориальное местоположение, Уровень)
в ряде случаев однозначно идентифицирует так скажем тип объекта.

Например (Лукойл, ИТ, г. Самара, Отдел, филиал Лукойл в г. Самара) определяет однозначно отдел ИТ обеспечения филиала Лукойл в г. Самара. Наименование же может изменяться, но сам объект остается тем же.

Для реализации этого решения необходима таблица
tblObjects
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
iObjectID(PK)
iOrganisationID(FK)
iDepartmentID(FK)
iTerritoryID(FK)
iObjectLevelID(FK)
iParentObjectID
iObjectNameID(FK)
и соответственно таблица
tblObjectNames
Код: plaintext
1.
2.
3.
iObjectNameID(PK)
sObjectName
iObjectPreviousNameID
в этом случае привязку сотрудников делать к iObjectID. При изменении наименования iObjectID в таблицу tblObjectNames добавляется новая строчка с новым наименованием и ссылкой на предыдущее название.

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


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