|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторзадача впринципе обозначена была в первом сообщении... авторучетные системы. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 10:22 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Роман Дынник mcureenab Роман ДынникЛюди, вариант объект-атрибут-значение это не реляционная структура! ... Что то я не совсем понял, какую структуру вы имели ввиду? Объект-атрибут-значение или полную декомпозицию? это не одно и тоже... С реляционной точки зрения одно и тоже. В случае "Объект-атрибут-значение" количество атрибутов прикладной области не фиксировано структурой БД. Т.е. атрибутами являются колонки "объект", "атрибут", "значение". Просто ещё один уровень абстракции добавлен, не путём декомпозиции модели, а переходом на метамодель. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 11:01 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Предлагаю рассмотреть конкретную таблицу из прикладной области и операции над ней и её историей. Тогда и станет ясно насколько идея состоятеьна. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 11:04 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
mcureenabПредлагаю рассмотреть конкретную таблицу из прикладной области и операции над ней и её историей. Тогда и станет ясно насколько идея состоятеьна. Ок, так и поступим. Ниже основная диаграмма, с сильно упрощенным куском предметной области (для примера). красным - связи реализующие наследование (1-1) синим - связи (1-n) желтым - иерархия представляющая в БД BO-сотрудник для которого будем строить историю. фиолетовым - вспомогательная таблица развертывающая связь n-n вмежду сотрудником и налогом в две связи 1-n и также являющаяся частью BO-сотрудник. Для упрощения примем что нужна история для атрибутов: -должность сотрудника -налоги сотрудника (исторический список) исходная диаграмма: ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:03 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
если историю хранить в полностью декомпозированном виде, то получается примерно следующее. Диаграмма истории: ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:05 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Роман, это неправильный подход к решению задачи. Не нужны таблицы "истории". Нужна таблица с полями "начало срока действия", "конец срока действия" для шт. должностей, для периодов, в которые полагались выплаты. Никаких специальных таблиц, вы погрязните в написании всяких триггеров и "бизнес-логики", там, где это совсем не нужно. Для налогов и других начислений нужна таблица авторПериод начислений (месяц) Налог Сумма ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:29 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Сформулируйте-таки четко для себя зачем вы хотите "историю", и вы сами поймете, что никаких супер-финтов делать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:32 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторНикаких специальных таблиц, вы погрязните в написании всяких триггеров и "бизнес-логики", Триггеров мы не используем, 80% хп-CRUD-слоя бизнес-логики генерится автоматом по модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:39 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Calm Для налогов и других начислений нужна таблица Период начислений (месяц) Налог Сумма это уже результат расчета в виде журнала. сами же начисления, которые вы имеете ввиду должны инициироваться исходя из установленных свойств у сотрудника. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:43 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
может налоги у сотрудника не совсем понятный пример... скажем могла бы потребоваться история списка центров затрат/подразделений с разнесением всех начислений по процентам. Для сущности "налог" нужна история баз (какие начисления входят в налоговую базу). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:50 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторсами же начисления, которые вы имеете ввиду должны инициироваться исходя из установленных свойств у сотрудника. Совершенно верно, и каждое из этих свойств имеет конкретное значение в определенном промежутке времени. Так в ведите в свои таблицы понятия промежутка времени и будет вам "история". Запрос свойств "на позавчера" не должен ничем отличаться от запроса свойств "на текущий момент". Кроме указания периода времени (расчетного месяца к примеру) авторэто уже результат расчета в виде журнала Игрете словами. Журнал, не журнал, какая разница. Важно привязывать выплаты и удержания к периоду расчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:52 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторДля сущности "налог" нужна история баз (какие начисления входят в налоговую базу). Пожалуйста. Делаем таблицу видов оплат и таблицу налогов (на самом деле налоги можно рассматривать как частный случай вида оплаты). В таблицу отношения многие-ко-многим добавьте поля "дата с.." и "дата по..". Поверьте, многое упростится :) Как бы не менялось формирование баз налогов, это можнжо будет посмотреть на любой момент времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:56 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
CalmСформулируйте-таки четко для себя зачем вы хотите "историю", и вы сами поймете, что никаких супер-финтов делать не надо. Формулирую: Хочу историю для того чтобы, к примеру: 1. правильно производить расчет налогов если налоговые базы меняются задним числом 2. правильно автоматом начислять/доначислять/сторнировать оклад если оклад меняется задним числом или центр затрат сотрудника меняется с середины месяца. 3. хочу иметь возможность хранить 2-х уровневую историю (история истории) - опять таки нужна для расчетов. при этом хочу определенным ролям запретить на уровне слоя хп менять историю определенных атрибутов. и как приятный дополнительный эфект получить протоколирование действий пользователей. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 17:59 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
автор Так в ведите в свои таблицы понятия промежутка времени и будет вам "история". То о чем вы говорите, это вариант хранения истории в той же таблице. На форуме неоднократно обсуждалось и имеет много негативных последствий. Как одно из самых неприятных - отказ от ссылочной целостности на уровне БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:04 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторТо о чем вы говорите, это вариант хранения истории в той же таблице. На форуме неоднократно обсуждалось и имеет много негативных последствий. У этого способа есть отличное достоинство - он позволяет без осложнений расчитывать ЗП. авторКак одно из самых неприятных - отказ от ссылочной целостности на уровне БД. О чем вы говорите?? Зачем, какой отказ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:11 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
автор1. правильно производить расчет налогов если налоговые базы меняются задним числом 2. правильно автоматом начислять/доначислять/сторнировать оклад если оклад меняется задним числом или центр затрат сотрудника меняется с середины месяца. Вы хорошо видите проблемы расчета ЗП. Пожалуйста, вы это получите. авторпри этом хочу определенным ролям запретить на уровне слоя хп менять историю определенных атрибутов. И этому нет припятсвий! авторхочу иметь возможность хранить 2-х уровневую историю (история истории) - опять таки нужна для расчетов. История ради истории, "потому что нужно". Вы как будто в плену какой-то парадигмы и не хотети видеть иного. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:16 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
CalmО чем вы говорите?? Зачем, какой отказ??? давайте с простого: какие записи и в какой таблице будут если должность сотрудника с 01.01.2006 по 31.01.2006 инженер с 01.02.2006 по 31.12.2007 ведущий инженер ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:16 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
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 - как одно из возможных решений ввел для этого понятие осей времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:28 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
[quot Calm] У этого способа есть отличное достоинство - он позволяет без осложнений расчитывать ЗП. [quot] поверьте мне что я отлично знаю и вполне ощутил на себе "достоинства" этого способа... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:29 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторкакие записи и в какой таблице будут если должность сотрудника с 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, но расчеты уже завершены. Будете считать оклады с начала года как налоги? Да, буду, пересчитывать с месяца, за который произошло изменение. При расчете ЗП изменения задним числом вносятся часто. сколько записей засторнировать придется? Какую проблему я не вижу? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:36 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Извините, недописал предыдущий пост авторколько записей засторнировать придется? Какую проблему я не вижу? Сколько надо, столько прога и просторнирует. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:37 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
авторповерьте мне что я отлично знаю и вполне ощутил на себе "достоинства" этого способа... я тоже :) Только без кавычек. Может дело в том, как их готовить? :) Давайте обсудим, в чем недостатки? В раздутости таблиц? Но для ЗП нужны данные за предыдущие периоды, это факт. И о какой утрате ссылочной целостности вы упоминали? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:44 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Calm Да, буду, пересчитывать с месяца, за который произошло изменение. При расчете ЗП изменения задним числом вносятся часто. Как вы узнаете что произошло изменение и с какого месяца нужно пересчитать если у вас только 2-е даты С и ПО? Как это понять, если в данной ситуации вы просто меняете строку 01.01.2006 - 31.01.2006 оклад 100р. на строку 01.01.2006 - 31.01.2006 оклад 150р. Тут нужно как то понять когда это изменение прошло. Для этого и существуют два понятие - учетной и рабочей даты. Вот как раз рабочая дата и нужна еще в этой истории чтобы определить с какого месяца пересчитать все нужно. иначе придется пересчитывать с начала года. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:45 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
Calm Может дело в том, как их готовить может..., я повором не был :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:48 |
|
полная декомпозиция для истории изменений
|
|||
---|---|---|---|
#18+
CalmДавайте обсудим, в чем недостатки? В раздутости таблиц? Но для ЗП нужны данные за предыдущие периоды, это факт. Нужны. каждый вариант имеет право на существование. в одном случае - вертикальная раздутость, в другом - горизонтальная. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2006, 18:50 |
|
|
start [/forum/topic.php?fid=33&msg=34045331&tid=1549280]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 519ms |
0 / 0 |