|
|
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
dma_caviarShr, А где код, который обновляет вторую дату? Желательно с контолем на пересечение.Запросов на выборку больше чем один раз написанный код на модификацию. dma_caviarкурсы как правило юзаются в виде скалярной функции, типа ПолучитьКурсНаДатуКогда такой атрибут (курс) один - да. Когда их несколько - уже сложнее. Ну, и в целом к функциям в sql у меня есть некоторая подозрительность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2015, 13:27 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
ShrНу, и в целом к функциям в sql у меня есть некоторая подозрительность. А, понятно, вопросов больше нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2015, 13:32 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы! Уточню: 1) Конвертация "приделывается" к уже существующей ДБ. Поэтому простота не очень-то прокатывает. 2) Курсы буду хранить на каждый день 3) TimeSeries - таблица из начальной ДБ, поэтому убирать ее никуда не нужно будем использовать ее для привязки 3) По поводу того, что выносить Rate в отдельную таблицу не стоит, пожалуй, соглашусь. Зачем я это сделала? ну например, чтобы не хранить пустые значения (на самом-то деле, я поэкспериментировала с нормализацией) 4) Конвертация происходит через связку CountryTime. Т.е в базе собрана некоторая статистика по странам и денежные значения нужно уметь конвертировать в любую валюту. 5) Хранить курсы я буду не в евро, а в нац.валюте (т.е стоимость 1евро в нац. валюте) 6) Курсы будем хранить на каждый день 7) Конвертация проста: пусть нужно предоставить отчет в доллара на определенную дату: a)находится курс USD/EUR на заданную дату б)выбираются курсы CUR/EUR на заданную дату в)делим USD/EUR на CUR/EUR и получаем нужные курсы нац. валют в USD ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2015, 23:57 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
и дополнительный вопрос по поводу функций: почему к функциям относитесь с недоверием? :) у нас в базе кстати тоже функций мало (в основном мои :D), а ведь оч. удобная вещь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 00:06 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
и еще вопрос, допустим я все-таки выношу Rate в отдельную таблицу (как в схеме) rtID в таблице Rate будет foreign key по отношению к rtID в таблице TimeCurrency? правильно или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 00:19 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblabи еще вопрос, допустим я все-таки выношу Rate в отдельную таблицу (как в схеме) rtID в таблице Rate будет foreign key по отношению к rtID в таблице TimeCurrency? правильно или нет? неправильно, форейн будет в таблице которая на рэйт ссылается. Но реально есть уже бест практисы по реализации курсов валют давным давно, ни в одной из них нету никакой отдельной таблицы для самого курса! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 09:46 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
dma_caviarShrНу, и в целом к функциям в sql у меня есть некоторая подозрительность. А, понятно, вопросов больше нет) перегрузка запроса функциями - лучший способ запутать оптимизатор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 09:47 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Ivan Durakdma_caviarпропущено... А, понятно, вопросов больше нет) перегрузка запроса функциями - лучший способ запутать оптимизатор Никакой перегрузки тут нет, простейшая функция с минимальной стоимостью (лично у меня показывает 0.009). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 10:01 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
dma_caviarу меня показывает 0.009). Ой, не туда посмотрел, 0.003 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 10:04 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblab, Еще раз - всего 2 таблицы решают вашу задачу. Это если вы все озвучили правильно. В противном случае схема может расширяться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 12:26 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Злой Бобр, нормализация базы как раз и используется, для того чтобы была возможность сравнительно легко расшириться в будущем. вопрос про ключи это теоретический вопрос, возникший по ходу разбора полетов отдельную тему заводить не хотелось Рассмотрим часть таблицы с вынесением курсов в отдельную таблицу теперь нужно обеспечить целостность БД ключ rtID в таблице TimeCurrency будет первичным ключом (эта таблица собственно и используется для генерации ключей) что происходит с таблицей Rate? я бы ставила Foreign Key + Unique Constraint на rtID в таблице Rate. прокомментируйте пожалуйста (и не говорите, что нет смысла выносить курсы в отдельную таблицу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2015, 22:42 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblabключ rtID в таблице TimeCurrency будет первичным ключом а смысл??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 00:49 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblab, Мне, как и всем тут, абсолютно всеравно как вы реализуете свою задачу. Мы лишь можем подсказать как лучше, что б потом не переделывать кучу таблиц. Для начала расшифруйте что у вас в какой таблице. Я примерно догадываюсь, но опыт подсказывает что все может быть. И уточню еще раз - вам необходимо хранение курсов валют? Или курсов в разрезе поставщиков? Ну или еще что ... Если речь именно о денежном курсе валют - 2 таблицы решают все. В противном случае нужно подробно знать что и как. После обеда гляну и подскажу что и как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 03:29 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, смысл в том, что я хочу разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 09:10 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblabключ rtID в таблице TimeCurrency будет первичным ключом (эта таблица собственно и используется для генерации ключей) что происходит с таблицей Rate? я бы ставила Foreign Key + Unique Constraint на rtID в таблице Rate. А что, Ваша СУБД не умеет делать одно и то же поле primary key и foreign key? Ну тогда делайте так, как Вы написали. Понимаете, непонятен смысл Вашей таблицы Rate - чего Вы хотите добиться при помощи нее? поэтому сложно советовать, как ее правильно сделать. если у Вас отношение 1:0..1 - каков бизнес-смысл записи в TimeCurrency, которой не соответствует запись в rate? Злой БобрЕсли речь именно о денежном курсе валют - 2 таблицы решают все. Нет, конечно - как минимум еще могут понадобиться виды курсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 09:52 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblabIvan Durak, смысл в том, что я хочу разобраться ну щаззз. кто холчет разобраться пишет. "подскажите как" А вы пишете - "я уже все решила, напишите мне что это правильно. Только не пишите что это непрвильно." А на вопросы "нафига вот эта лишняя хрень?" отвечаете что-то невразумительное типа "на самом-то деле, я поэкспериментировала с нормализацией". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2015, 10:28 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
1) как правильно заметил Злой Бобр, решение никого не интересует, поэтому я просто учла критику и возможные трудности и более-менее определилась со схемой, спасибо 2) но возникли новые вопросы по ключам и я беру начальную схему как пример и спрашиваю, как лучше сделать ключи в таблице Rate в начальной схеме рассматриваю варианты а) Foreign Key + Primary Key б) Foreign Key + Unique посоветуйте таблицы: Currency: содержит список валют (добавленная) TimeSeries: содержит список временных рядов (часть ДБ к которой добавим конвертер) TimeCurrency: таблица-отношение, используется для генерации ключей (добавленная) Rate: таблица значений курсов, вынесена, чтобы не хранить пустых значений курсов (добавленная) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 00:15 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, умеет, я сразу не подумала :) в TimeCurrency я генерирую ключи по Identity на 10 лет вперед возможно в TimeCurrency такая схема себя не оправдывает, но в случае CountryTime такая схема очень даже удобно, многие статистические показатели зависят от времени-страны и их нужно связывать между собой, поэтому я генерирую ключи в отдельной таблице в таблице Rate я держу имеющиеся ненулевые курсы если коротко, то TimeCurrency используется for consistency ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 00:28 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblabв TimeCurrency я генерирую ключи по Identity на 10 лет вперед возможно в TimeCurrency такая схема себя не оправдывает, но в случае CountryTime такая схема очень даже удобно, многие статистические показатели зависят от времени-страны и их нужно связывать между собой, поэтому я генерирую ключи в отдельной таблице в таблице Rate я держу имеющиеся ненулевые курсы если коротко, то TimeCurrency используется for consistency Схема странная, но назвать явно неправильной ее нельзя - никаких особых проблем кроме усложнения логики она не несет, так что если Вам нравится - почему нет. Float - не очень хороший тип для денежных значений, лучше использовать что-то типа money. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 08:54 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Злой Бобр Спасибо за помощь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2015, 12:48 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
mini.weblab, когда работал в компании с международным бизнесом и требовались курсы разнообразных валют, даже тех, которые котируются 1 раз в месяц, то сделал таблицу фактов, в которой курс по отношению к рублю каждой валюты на каждую дату и за период за 10 лет. Никаких коэффициентов, всё максимально подготовлено. Навесил покрывающий индекс. Один раз прогрузил курсы, далее они никогда не меняются, далее только подгружай ежедневно. Даже пересчитывал и загружал курсы по устаревшим валютам - драхма, немецкая марка и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2015, 00:43 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
авторхочу добавить в базу данных конвертацию валюты: 1) все курсы будем хранить по отношению к евро 2) и пересчитывать в любую выбранную валюту 3) схема такая: В базу данных нельзя добавить конвертацию валют, можно только добавить информацию об объекте реального мира-сущности(или проще говоря таблицу), потому что назначение базы данных-хранить информацию. Конвертация-это операция, или функция, на вход которой должно подаваться значение, а на выходе получать пересчитанный денежный курс нужной страны. Вы некорректно ставите задачу, отсюда проблемы с самого начала. Что за база данных, она существует? Тогда надо посмотреть схему, или вы собираетесь добавлять отдельно новую структуру от всей базы данных? Вся реляционная теория строится на сущностях и связей между ними, хотите добавить новую сущность Ее надо написать на человекопонятном языке, тогда ваши мысли будут понятны не только вам, и людям желающим вам помочь, а разработчикам который достанется ваш продукт после вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 01:00 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
Добрый вечер. Есть одна.. Задачка, так скажем. В последнее время не приходят свежие мысли в голову по поводу ее решения... Существует (пока что в вакууме) сервис.. :) По выкупу и пересылке товаров. Который принимает от клиентов рубли , меняет рубли на доллары , на которые в свою очередь выкупаются товары . Процесс в упрощенном виде выглядит так: - клиент добавил в корзину товаров на 100$; - этот же клиент пополняет свой рублевый счет на 10 000 рублей, которые затем меняются по некоему внутреннему курсу на доллары (пусть в данном примере это будет 100 рублей за 1 доллар для удобства); - клиент получает на баланс [долларового счета] 100$; - клиент оплачивает товары в кабинете, - оператор-сотрудник, получив "заказ" клиента, проводит фактическую оплату. - денежка списывается со счета, в свойствах товаров фиксируем курс покупки (чтобы клиент знал, по какому курсу были выкуплены те или иные товары или сколько рублей он потратил на ту или иную вещь), проблем никаких не возникает. Но если вдруг (а такое, к сожалению, бывает) по какому-то из товаров выкуп осуществить не удается (например, товар кончился у поставщика уже после оплаты сделки), проблемный товар удаляется и не принимает участие в подсчете баланса клиента. Допустим, в примере выше оператор смог оплатить 5 товаров на сумму 70$, а шестой товар на сумму 30$ решили отменить. Клиент говорит, что пока не собирается ничего покупать на освободившуюся сумму в 30 долларов. Пусть она полежит на счете. ... Через неделю клиент решает купить вещь за 300 долларов. На счете у клиента осталось 30$ из предыдущего заказа. Курс теперь составляет не 100, а 90 р\доллар, клиент пополняет счет на (90руб\$ * 270$) = 24 300 рублей, которые меняются на доллары и приходят на долларовый счет клиента в личном кабинете. Теперь баланс клиента составляет ровно 300 долларов. Вопрос: как следует подойти к решению вопроса об указании курса данной сделки? Что должно быть вписано в поле "курс"? В данной сделке 30$ менялись по курсу 100 р\$ и 270 по курсу 90 р\$. Думаю, какие-то решения существуют на этот счет.. Догадки о том, как должно быть (или во всяком случае как НЕ должно быть) :). Как в таком случае определяется принадлежность транзакции тому или иному товару?.. Одна транзакция на обмен валюты может послужить основанием для выкупа 10 разных товаров, ровно как и несколько транзакций (с разными курсами обмена) могут обеспечить выкуп лишь одного товара. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 20:28 |
|
||
|
конвертация валют
|
|||
|---|---|---|---|
|
#18+
atrsameuser, Я думаю, проблема из-за того, что курс не должен быть атрибутом сущности "сделка" - Ваш пример это адекватно показывает. Т.е. есть операция "конвертация" - у нее есть курс, и есть операция "сделка" - она происходит уже в целевой валюте, и курса у нее нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.04.2016, 21:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39037244&tid=1540331]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 280ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...