powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / полная декомпозиция для истории изменений
25 сообщений из 58, страница 2 из 3
полная декомпозиция для истории изменений
    #34043417
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторзадача впринципе обозначена была в первом сообщении...
авторучетные системы.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34043576
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник mcureenab Роман ДынникЛюди, вариант объект-атрибут-значение это не реляционная структура!

...

Что то я не совсем понял, какую структуру вы имели ввиду? Объект-атрибут-значение или полную декомпозицию? это не одно и тоже...

С реляционной точки зрения одно и тоже. В случае "Объект-атрибут-значение" количество атрибутов прикладной области не фиксировано структурой БД. Т.е. атрибутами являются колонки "объект", "атрибут", "значение". Просто ещё один уровень абстракции добавлен, не путём декомпозиции модели, а переходом на метамодель.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34043589
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю рассмотреть конкретную таблицу из прикладной области и операции над ней и её историей. Тогда и станет ясно насколько идея состоятеьна.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045059
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabПредлагаю рассмотреть конкретную таблицу из прикладной области и операции над ней и её историей. Тогда и станет ясно насколько идея состоятеьна.
Ок, так и поступим. Ниже основная диаграмма, с сильно упрощенным куском предметной области (для примера).
красным - связи реализующие наследование (1-1)
синим - связи (1-n)

желтым - иерархия представляющая в БД BO-сотрудник для которого будем строить историю.
фиолетовым - вспомогательная таблица развертывающая связь n-n вмежду сотрудником и налогом в две связи 1-n и также являющаяся частью BO-сотрудник.
Для упрощения примем что нужна история для атрибутов:
-должность сотрудника
-налоги сотрудника (исторический список)
исходная диаграмма:
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045064
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если историю хранить в полностью декомпозированном виде, то получается примерно следующее.
Диаграмма истории:
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045129
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман, это неправильный подход к решению задачи.
Не нужны таблицы "истории".
Нужна таблица с полями "начало срока действия", "конец срока действия" для шт. должностей, для периодов, в которые полагались выплаты. Никаких специальных таблиц, вы погрязните в написании всяких триггеров и "бизнес-логики", там, где это совсем не нужно.

Для налогов и других начислений нужна таблица
авторПериод начислений (месяц)
Налог
Сумма
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045137
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сформулируйте-таки четко для себя зачем вы хотите "историю", и вы сами поймете, что никаких супер-финтов делать не надо.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045168
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНикаких специальных таблиц, вы погрязните в написании всяких триггеров и "бизнес-логики",
Триггеров мы не используем, 80% хп-CRUD-слоя бизнес-логики генерится автоматом по модели.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045187
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calm
Для налогов и других начислений нужна таблица

Период начислений (месяц)
Налог
Сумма
это уже результат расчета в виде журнала.
сами же начисления, которые вы имеете ввиду должны инициироваться исходя из установленных свойств у сотрудника.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045218
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может налоги у сотрудника не совсем понятный пример...
скажем могла бы потребоваться история списка центров затрат/подразделений с разнесением всех начислений по процентам.
Для сущности "налог" нужна история баз (какие начисления входят в налоговую базу).
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045225
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторсами же начисления, которые вы имеете ввиду должны инициироваться исходя из установленных свойств у сотрудника.

Совершенно верно, и каждое из этих свойств имеет конкретное значение в определенном промежутке времени. Так в ведите в свои таблицы понятия промежутка времени и будет вам "история".

Запрос свойств "на позавчера" не должен ничем отличаться от запроса свойств "на текущий момент". Кроме указания периода времени (расчетного месяца к примеру)


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

Пожалуйста.
Делаем таблицу видов оплат и таблицу налогов (на самом деле налоги можно рассматривать как частный случай вида оплаты).
В таблицу отношения многие-ко-многим добавьте поля "дата с.." и "дата по..".
Поверьте, многое упростится :)

Как бы не менялось формирование баз налогов, это можнжо будет посмотреть на любой момент времени.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045250
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalmСформулируйте-таки четко для себя зачем вы хотите "историю", и вы сами поймете, что никаких супер-финтов делать не надо.
Формулирую:
Хочу историю для того чтобы, к примеру:
1. правильно производить расчет налогов если налоговые базы меняются задним числом
2. правильно автоматом начислять/доначислять/сторнировать оклад если оклад меняется задним числом или центр затрат сотрудника меняется с середины месяца.
3. хочу иметь возможность хранить 2-х уровневую историю (история истории) - опять таки нужна для расчетов.

при этом хочу определенным ролям запретить на уровне слоя хп менять историю определенных атрибутов.
и как приятный дополнительный эфект получить протоколирование действий пользователей.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045275
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор Так в ведите в свои таблицы понятия промежутка времени и будет вам "история".
То о чем вы говорите, это вариант хранения истории в той же таблице.
На форуме неоднократно обсуждалось и имеет много негативных последствий.
Как одно из самых неприятных - отказ от ссылочной целостности на уровне БД.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045306
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТо о чем вы говорите, это вариант хранения истории в той же таблице.
На форуме неоднократно обсуждалось и имеет много негативных последствий.
У этого способа есть отличное достоинство - он позволяет без осложнений расчитывать ЗП.

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


авторпри этом хочу определенным ролям запретить на уровне слоя хп менять историю определенных атрибутов.
И этому нет припятсвий!

авторхочу иметь возможность хранить 2-х уровневую историю (история истории) - опять таки нужна для расчетов.

История ради истории, "потому что нужно".
Вы как будто в плену какой-то парадигмы и не хотети видеть иного.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045331
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalmО чем вы говорите?? Зачем, какой отказ???
давайте с простого:
какие записи и в какой таблице будут если должность сотрудника
с 01.01.2006 по 31.01.2006 инженер
с 01.02.2006 по 31.12.2007 ведущий инженер
?
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045381
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calm
История ради истории, "потому что нужно".
Вы как будто в плену какой-то парадигмы и не хотети видеть иного.
Да нет... во многих системах существует понятия рабочей даты и учетной даты + еще текущей даты.
Для чего это нужно:
допустим сегодня 01.03.2006
в истории оклада для сотрудника установлено что
01.01.2006 - 31.01.2006 оклад 100р.
01.02.2006 - 28.02.2006 оклад 200р.
теперь 01.03.2006 обнаруживается что 01.01.2006 - 31.01.2006 оклад должен быть 150, а не 100, но расчеты уже завершены.
Будете считать оклады с начала года как налоги? А если не оклады, а куча других начислений? Ручным сторнированием - сколько записей засторнировать придется?
Вот Garya - как одно из возможных решений ввел для этого понятие осей времени.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045383
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Calm]
У этого способа есть отличное достоинство - он позволяет без осложнений расчитывать ЗП.
[quot]
поверьте мне что я отлично знаю и вполне ощутил на себе "достоинства" этого способа...
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045409
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкакие записи и в какой таблице будут если должность сотрудника
с 01.01.2006 по 31.01.2006 инженер
с 01.02.2006 по 31.12.2007 ведущий инженер

Незнаком с конкретно вашей реализации, так что будем терпимы друг к другу :)
Если говорим просто о названии шт. должности, то это можно поместить в таблицу
Сотрудник_К_ШтДолжности. Причем именно так, как вы нарисовали.
автор

допустим сегодня 01.03.2006
в истории оклада для сотрудника установлено что
01.01.2006 - 31.01.2006 оклад 100р.
01.02.2006 - 28.02.2006 оклад 200р.
теперь 01.03.2006 обнаруживается что 01.01.2006 - 31.01.2006 оклад должен быть 150, а не 100, но расчеты уже завершены.
Будете считать оклады с начала года как налоги?

Да, буду, пересчитывать с месяца, за который произошло изменение.
При расчете ЗП изменения задним числом вносятся часто.

сколько записей засторнировать придется?
Какую проблему я не вижу?
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045416
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, недописал предыдущий пост
авторколько записей засторнировать придется?

Какую проблему я не вижу?
Сколько надо, столько прога и просторнирует.

С уважением.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045436
Фотография Calm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторповерьте мне что я отлично знаю и вполне ощутил на себе "достоинства" этого способа...
я тоже :)
Только без кавычек. Может дело в том, как их готовить? :)

Давайте обсудим, в чем недостатки? В раздутости таблиц? Но для ЗП нужны данные за предыдущие периоды, это факт.

И о какой утрате ссылочной целостности вы упоминали?
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045444
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calm
Да, буду, пересчитывать с месяца, за который произошло изменение.
При расчете ЗП изменения задним числом вносятся часто.

Как вы узнаете что произошло изменение и с какого месяца нужно пересчитать если у вас только 2-е даты С и ПО?
Как это понять, если в данной ситуации вы просто меняете строку
01.01.2006 - 31.01.2006 оклад 100р.
на строку
01.01.2006 - 31.01.2006 оклад 150р.
Тут нужно как то понять когда это изменение прошло. Для этого и существуют два понятие - учетной и рабочей даты. Вот как раз рабочая дата и нужна еще в этой истории чтобы определить с какого месяца пересчитать все нужно. иначе придется пересчитывать с начала года.
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045450
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Calm
Может дело в том, как их готовить

может..., я повором не был :)
...
Рейтинг: 0 / 0
полная декомпозиция для истории изменений
    #34045453
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CalmДавайте обсудим, в чем недостатки? В раздутости таблиц? Но для ЗП нужны данные за предыдущие периоды, это факт.

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


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