|
|
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Существует некое ООО "РУСИНВЕСТСТРОЙ", директор Пупкин Петр Петрович, его заместитель Гогидзе Гоги Вахович. Хранится в БД допустим таблица: org_tbl Код: plaintext 1. 2. 3. НО! Как же быть с ранее веденными данными? Получается во всех таблицах где будет хранится id_org этого инвестстроя название поменяется тоже? Как можно обеспечить хранение и старой и новой информации? Читал про КЛАДР, там в общероссийском классификаторе эта проблема приемлемо не решена получается? Неужели какой то разработанной методики? мой подход пока такой: id_org_classifier_tbl Код: plaintext 1. 2. id_org_tbl Код: plaintext 1. 2. 3. То есть инвест строю в таблице id_org_tbl будут соответствовать 2 записи, но у недействующей флаг acts будет false. Одинаковыми у них будут id_org_class, подцепляемые из таблицы id_org_classifier_tbl. А поле acts будет использоваться для всяких выпадающих списков. Плюсы такого подходы для меня в том что название организации будет отображаться с сохранением истории, а для учета и подсчета будет использоваться id_org_class_id, которое будет сохраняться для разных наименований. как то так. Но может есть что то более правильное ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 14:35 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Есть более сложное - слияние и поглощение организаций, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 14:55 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например. и-и-иии? существует ли какой то общий подход к этой проблеме? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 15:19 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Vasssoid Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например. и-и-иии? существует ли какой то общий подход к этой проблеме? Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют. Типа понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 15:35 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
gardenman Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют. Типа понял? не понял. на человека статистику заказов, контрактов, проектов делать в течение времени не надо. а тут понимаешь надо: 1) при создании отчетов учитывать что под разными названиями могут иметься в виду одни и те же сущности 2) при печати документов, справок за определенный период надо учитывать что на тот момент название было другим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 15:56 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
gardenman , можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 16:15 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
gardenman Vasssoid Программист-ЛюбительЕсть более сложное - слияние и поглощение организаций, например. и-и-иии? существует ли какой то общий подход к этой проблеме? Примерно также как у людей с паспортами, когда девушка замуж выходит и берет чужую фамилию. Пофиг как ты на мониторе в гриде ее обзавешь. А паспорт как был так и будет на прежнюю фамилию пока не поменяют. Типа понял? Это простое переименование. Я писал про более сложный случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 16:58 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 17:45 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
первое что пришло в голову (не судите строго) мож так... (дерево в одной таблице, можно и без дерева тогда две таблицы) таблица Enterprise поле ID поле ID_InheritedFrom (или Master_ID) потупому... поле NAME поле BeginDate поле EndDate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 18:55 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Я бы предложил бы по другому. Оставить старую табличку org_tbl в неприкосновенности, добавив только статус параллельно ей вести табличку переименований (слияний, дроблений). Ну и, соответственно, ввести операцию "смена кастомера" например, когда все задолженности с ООО "РУСИНВЕСТСТРОЙ" необходимо перевести на ООО "ИНВЕСТСТРОЙ-М". Таким образом переименование происходит следующим образом: 1. Создаём запись о ООО "ИНВЕСТСТРОЙ-М". 2. Делаем ООО "РУСИНВЕСТСТРОЙ" неактивным 3. Делаем запись о том, что первая является наследником второй. Основание - "переименование", "поглощение", "покупка долгов", "ошибка операциониста" и т.п. 4. Переводим задолженность. 5. Работаем с новой компанией. 6. В отчётах можно анализировать дату и писать сноску "ранее известный как Принц" и т.п. Пункты 2-4 можно объединить в одну операцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 19:49 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
MGRЯ бы предложил бы по другому. Оставить старую табличку org_tbl в неприкосновенности, добавив только статус параллельно ей вести табличку переименований (слияний, дроблений). Ну и, соответственно, ввести операцию "смена кастомера" например, когда все задолженности с ООО "РУСИНВЕСТСТРОЙ" необходимо перевести на ООО "ИНВЕСТСТРОЙ-М". Таким образом переименование происходит следующим образом: 1. Создаём запись о ООО "ИНВЕСТСТРОЙ-М". 2. Делаем ООО "РУСИНВЕСТСТРОЙ" неактивным 3. Делаем запись о том, что первая является наследником второй. Основание - "переименование", "поглощение", "покупка долгов", "ошибка операциониста" и т.п. 4. Переводим задолженность. 5. Работаем с новой компанией. 6. В отчётах можно анализировать дату и писать сноску "ранее известный как Принц" и т.п. Пункты 2-4 можно объединить в одну операцию. хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 20:24 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
ODIN. хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент... Дело в том, что в системах, с которыми я работал баланс кастомера всегда хранится накопительно. Ну, в некоторых разрезах, конечно. Таким образом перевод задолженности - всего лишь проапдейтить несколько строк в табличке балансов. А насчёт документов - тут хозяин бврин. Бывает, что нужна любая проводка, хоть по забалансовым счетам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 20:27 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
ODIN. хорошая мысль. Только вопрос по пункту 4. что значит переводим задолженность? это значит групповая обработка массива данных? если так, может изловчиться как нибудь чтобы ничего нового не рождать в документах... а заставить смотреть на другую контору... типовой запрос правда будет (и должен тогда) всегда учитывать этот момент... как вам тогда вариант с неким классификатором организации? Например если перейти на уровень отделов, то могут быть: отдел кадров, бухгалтерия, ИТ отдел. Хранить в таблицах значения идентификатора названия и идентификатора класса подразделения. Точнее видится, что можно хранить только идентификатор названия, по которому будет цепляться идентификатор подразделения. Что то насчет плюсов/минусов мыслей нет. Зы самый главный вывод получается- каждый решает проблему по своему, причем довольно различными способами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2008, 23:29 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Вероятно самым простым решением будет создание периодического справочника для реквизитов, которые будут изменяться во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 09:01 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название? Сохраняю в таблице истории изменения ключевых атрибутов организаций (не только переименования). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 09:23 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель Сохраняю в таблице истории изменения ключевых атрибутов организаций (не только переименования). можешь описать структуры таблиц и то как сохраняется история изменения ключевых атрибутов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 13:10 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Структура самая тривиальная iCustomerHistoryID PK СчетчикdtCustomerHistoryFrom Дата начала действия данныхdtCustomerHistoryTo Дата конца действия данныхiCustomerID FK Код организации sCustomerName Краткое названиеsCustomerReportName Название для отчетовsCustomerFullName Полное названиеiCustomerParentID FK Код родительской орг-ииiCountryCode FK Код страныiCustomerFilialLevel FK Уровень в ОАО... другие важные поляsUserNameInsert аудирующие поля (одинаковые для всех таблиц)sUserNameUpdatedtDateInsertdtDateUpdate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 13:53 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель спасибо! пошел изучать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 14:19 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель , получается по твоей таблице поле iCustomerID необходимо для различным статистических отчетов? То есть если было РУССТРОЙИНВЕСТ (iCustomerHistoryID=2, iCustomerID=1, iCustomParentID=Null) и оно становится СТРОЙИНВЕСТ-М, то добавляется новая запись (iCustomerHistoryID=3, iCustomerID=1 (совпадающий c iCustomerID РУССТРОЙИНВЕСТа), iCustomParentID=2 (То есть iCustomParentID РУССТРОЙИНВЕСТа)). Так или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 14:29 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название? Вопрос: где может понадобиться старое имя человека? Ответ: В старом договоре, который был заключен в то время, когда старое имя было валидным. (Чтобы при повторной печати то же самое напечаталось что было до того как) Вопрос: Откуда в договоре берется имя человека? Ответ: имя при печати договора берется из конкретного паспорта. (или другого документа) А у документов есть сроки действия. Намек понял? Код: plaintext 1. 2. 3. 4. Аналогично и организации. Меняется устав - иногда меняется и название организации. При этом куча инфы остается: номера счетов, договора и прочая хренотень.... Понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 17:30 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
gardenman Vasssoid Программист-Любитель , согласен, бывают и сложнее варианты, а как ты решаешь вариант с переименованием, когда нужно хранить и старое название? Вопрос: где может понадобиться старое имя человека? Ответ: В старом договоре, который был заключен в то время, когда старое имя было валидным. (Чтобы при повторной печати то же самое напечаталось что было до того как) Вопрос: Откуда в договоре берется имя человека? Ответ: имя при печати договора берется из конкретного паспорта. (или другого документа) А у документов есть сроки действия. Намек понял? Код: plaintext 1. 2. 3. 4. Аналогично и организации. Меняется устав - иногда меняется и название организации. При этом куча инфы остается: номера счетов, договора и прочая хренотень.... Понятно? намек понят Ж) кстати в учебнике по РСУБД для подобных случаев (когда необходимо хранить историю изменений) применяется некая реализация сущностей как классов-наследников вроде как то так http://]http://www.citforum.ru/database/articles/moq.shtml ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2008, 11:04 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Пришла в голову следующая мысль. Например организация с различными должностями. Директор, Зам директора, Бухгалтер и так далее. Сотрудник Иванов Иван Иванович, Петров Петр Петрович и т.д. Хранение информации об изменяющихся наименованиях аналогично задаче о хранении информации об изменении должностей сотрудников. В общем случае получается что данная ситуация идентична связи много-много между сущностями (одна и та же должность может быть занята с течением времени разными сотрудниками, один и тот же сотрудник может занимать разные должности с течением времени; одна и та же компания может входить в состав различных холдингов с течением времени, один и тот же холдинг может включать в себя различные компании). => можно применить стандартный подход реализации связи многие-к-многим таблица Должности Код: plaintext 1. 2. 3. таблица Сотрудники Код: plaintext 1. 2. 3. таблица СотрудникиДолжности Код: plaintext 1. 2. 3. Аналогично можно сделать для организаций. Но тут вопрос. Какой способ хранения данных о сотруднике принявшем, выполнившем заказ предпочтительнее? Есть вариант хранить в БД в этих случах идентификатор записи в таблице СотрудникиДолжности. В этом случае: + хранится 1 поле - если произойдет какой либо сбой и записи в таблице СотрудникиДолжности будут утеряны, то восстановить что же значил идентификатор 152 не получится Другой вариант, хранить сотрудник_id, должность_id - хранится будет два поля + большая устойчивость к сбоям Может есть что то еще? Как решаете этот момент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2008, 15:32 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
Учтите вот что... В организации есть контактные лица и они действительно занимают какие-то должности. Но эти должности - пофиг. В документах (договорах) может поставить подпись любой из сотрудников организации если у него есть на это право. Такое право дает доверенность которая действует как правил с... и по... (обычно год). Это право называется основанием. директор и гл. Бух. не используют доверенности т.к. действуют на основании УСТАВА организации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 00:05 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
gardenmanдиректор и гл. Бух. не используют доверенности т.к. действуют на основании УСТАВА организации. Это не всегда верно, так что всегда надо уточнять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2008, 12:45 |
|
||
|
Хранение и обработка объектов с изменяющимися наименованиями
|
|||
|---|---|---|---|
|
#18+
!ап пришла в голову мысль о следующем решении. Каждый объект (в случае структуры организаций с территориальным и департаментальным делением) можно представить в виде вектора со следующими координатами: Объект(Организация, Департамент, Территориальное местоположение, Уровень, Родительский объект, Наименование) Суть в том что набор координат: (Организация, Департамент, Территориальное местоположение, Уровень) в ряде случаев однозначно идентифицирует так скажем тип объекта. Например (Лукойл, ИТ, г. Самара, Отдел, филиал Лукойл в г. Самара) определяет однозначно отдел ИТ обеспечения филиала Лукойл в г. Самара. Наименование же может изменяться, но сам объект остается тем же. Для реализации этого решения необходима таблица tblObjects Код: plaintext 1. 2. 3. 4. 5. 6. 7. tblObjectNames Код: plaintext 1. 2. 3. Для хранения же реквзитов наименования в договорах, заказ и прочее указывать два FK - iObjectID - для составления статистических отчетов и iObjectNameID (который будет указывать на наименование, действовавшее на момент внесения данных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2008, 12:29 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=100&tid=1543715]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 364ms |

| 0 / 0 |
