Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Как организовать работу со справочником процентных ставок? / 5 сообщений из 5, страница 1 из 1
17.02.2016, 23:59
    #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
18.02.2016, 09:32
    #39173780
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать работу со справочником процентных ставок?
...
Рейтинг: 0 / 0
18.02.2016, 14:19
    #39174213
474
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
18.02.2016, 15:02
    #39174303
Как организовать работу со справочником процентных ставок?
Сабж не стоит выеденного гроша.
Если не предусматривается прорех в %-ставках, достаточно одного поля с датой. Одного, Карл ! :)

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

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

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


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