powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как организовать работу со справочником процентных ставок?
5 сообщений из 5, страница 1 из 1
Как организовать работу со справочником процентных ставок?
    #39173654
Sasha87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть задача создать справочник процентных ставок (ПС):
*на определенную дату необходимо получить актуальную ПС.
*ПС указывается в рублях и в валюте (2-а варианта, последний используется для всех валют отличных от рублей).
*дата окончания может быть не указана - открытая ПС, действие не ограничено справа
*новая ПС должна закрывать открытую ПС (если такая есть)


Вопрос 1. Нормализованная таблица или нет?

Дата начала Дата окончания Валюта ПС
-----------------------------------------------------------
01.02.2014 01.03.2014 RUB 3,4
01.02.2014 01.03.2014 CUR 5,4

Дата начала Дата окончания ПС_руб ПС_вал
-----------------------------------------------------------
01.02.2014 01.03.2014 3,4 5,4

Плюсы и минусы денормализации:
+ Уменьшение кол-ва запросов (в данном случае в 2 раза)
+ Пользователю достаточно завести одну запись
- Если появится новая задача - вести ПС так же в другой валюте (например, USD) необходимо будет добавить колонку, однако есть полная уверенность, что колонок не будет больше 10.

Вопрос 2. Как правильно организовать работу со справочником, и при этом минимизировать кол-во ошибок пользователя? Нужно ли запрещать удаление в таком справочнике? Какие проверки нужно организовать (проверка пересечения периодов, разрыва периодов, ограничение/проверки начальной и конечной дат)? Пока рассматриваю/сравниваю 2-а варианта.

Общее
У пользователя есть возможность только добавлять записи.
При добавлении новой записи у текущей автоматически проставляется дата окончания = дата начала новой записи (если дата окончания не была заполнена).
При добавлении новой записи, если есть пересечение периода с существующими - показывается предупреждение.

Вариант 1. Записи могут иметь пересечения периодов.
Если две записи имеют пересечение, то при выборке актуальной будет считаться запись заведенная последней.
Для исправления ошибки достаточно завести новую запись.

+ простая логика реализации справочника
- периоды могут иметь пересечения (что вроде как не правильно? - на одну дату м/б несколько записей)
-/+ если пользователь заведет ПС за большой период, то перекроет все записи, но не удалит их

Вариант 2. Записи после сохранения не имеют пересечений периодов.
Для исправления ошибки достаточно завести новую запись. При этом если есть пересечения с существующими записями, они автоматически удаляются или обновляются (если новая запись полностью перекрывает старую - запись удаляется, если перекрывает конец периода - обновляется дата начала, если перекрывает начало периода - обновляется дата начала, если полностью включается в старую - старая запись удаляется и дополнительно создаются две новые)

- сложная логика реализации справочника
+ периоды не имеют пересечения (что вроде как правильно? - на одну дату всегда одна запись)
- если пользователь заведет ПС за большой период, то удалит все записи

Спасибо!
...
Рейтинг: 0 / 0
Как организовать работу со справочником процентных ставок?
    #39173780
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как организовать работу со справочником процентных ставок?
    #39174213
474
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasha87,

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

fromDate Currency Rate
----------------------------
01.01.2016 RUB 1.5
16.01.2016 RUB 1.6
18.02.2016 RUB 1.7

Получается что с 01.01 по 15.01 включительно была ставка 1.5, далее с 16.01 по 17.02 включительно была ставка 1.6, а с 18.02 и по бесконечность (пока не появится другая запись) ставка 1.7.

Ограничение схемы - нельзя явно завести дату окончания ставки в будущем, если еще неизвестно какая ставка будет после.
...
Рейтинг: 0 / 0
Как организовать работу со справочником процентных ставок?
    #39174303
Сабж не стоит выеденного гроша.
Если не предусматривается прорех в %-ставках, достаточно одного поля с датой. Одного, Карл ! :)

Вычислять простейшим запросом (в функции).
T-SQL:

SELECT top 1 percent
from....
WHERE perc_date <= @date_to
order by perc_date desc
...
Рейтинг: 0 / 0
Как организовать работу со справочником процентных ставок?
    #39174578
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
постоянный мембер,

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


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