|
|
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Вот пытаюсь создать базу данных. Условие такое - Создание (АРМ) оператора пункта обмена валюты для автоматизации процедур оперативного учета и анализа. Имеются несколько сущностей у меня: Код: plaintext 1. 2. 3. 4. 5. как понимаю валюта, это любые ден. знаки не включаю рубли, т е иностранне деньги, поэтому РУБЛИ не фигурируют в валюте, это раз. вопросов с оператором, клиентом, типом операции, валютой нет. Довольно все просто. Основные проблемы возникли при проектировании БД, когда стал работать с учетом и курсом. ПО заданию нужно будет провести такую операцию как: Код: plaintext 1. 2. 3. первичный ключ в таблице Учета операций и связал их отношением 1 : 1, Access по другому не смог. Это можно увидеть на приложенном рисунке(схема базы данных в Аксес 2003). вот допустим у меня имеется запись в таблице Курс: Код: plaintext 1. чтобы внести данные в таблицы учета я должен набрать дату 01.01.2009 и выбрать валюту именно доллар, чтобы запись была добавлена иначе возникает ошибка на ограничение ссылочности. не понимаю, что значит поле "Текущий курс" в таблице Учета, и поле "Сумма" будет вычисляемой? помогите правильно спроектировать БД, чтобы можно было успешно проводить операции учета? также интересует правильно ли я понял эту предметку и все логично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 15:36:07 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Создать БД по валютепомогите правильно спроектировать БД, чтобы можно было успешно проводить операции учета? также интересует правильно ли я понял эту предметку и все логично? 1. Правильный курс валюты устанавливается не за единицу, а за некоторое количество, например: 12.3902 RUR за 1000 BYR 2. Возможно, нужно делать несколько курсов в зависимости от суммы? 3. Возможно, нужно делать кросс-курсы, типа евро-доллар? 4. Курсы устанавливаются на какой-то период, а не "текущие" Хотя для простого случая и ваша схема подойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 16:22:35 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Меня несколько смущает связь один к одному между таблиц Course и Operation. По-моему, там напрашивается связь один ко многим. Ведь операций в один день может быть несколько. И в таблице учёта операций нет необходимости в поле для хранения текущего курса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 16:38:14 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
...а меня смущает само наличие связи. :) Курс -- периодические сведения, операции -- фактография. Между такими вещами связь может быть только через календарь. Реальный календарь. Физической связи такого типа в БД не предусмотрено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 19:58:52 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Q...а меня смущает само наличие связи. :) Курс -- периодические сведения, операции -- фактография. Между такими вещами связь может быть только через календарь. Реальный календарь. Физической связи такого типа в БД не предусмотрено.Не надо смущаться :) Вот тынц , где обсуждалось хранение периодических сведений. Здесь недалеко :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 20:09:05 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Denis V.Меня несколько смущает связь один к одному между таблиц Course и Operation. По-моему, там напрашивается связь один ко многим. Ведь операций в один день может быть несколько. Таблица клиентов тоже не нужна. И данные о клиенте несколько избыточны - Фамилия, Имя, Отчество, Дата рождения, Пол, Социальное положение, Адрес, Телефон, Паспортные данные А со связью один к одному автор наверное просто опечатался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 20:33:00 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Q...а меня смущает само наличие связи... Физической связи такого типа в БД не предусмотрено. Соглашусь. Сразу уцепился только за тип связи ;-) alexeyvg 1. Правильный курс валюты устанавливается не за единицу, а за некоторое количество, например: 12.3902 RUR за 1000 BYR 4. Курсы устанавливаются на какой-то период, а не "текущие" 1 - ну, это простая математика, которая схему данных не сильно поменяет, если автор захочет, чтобы в таблице был правильный курс, а не пересчитанный на единицу национальной валюты. 4 - да, на счёт таблицы Текущие курсы - это название не отражает того, что в ней находится. А в таблице находится динамика изменения курсов. Период между изменениями курсов - это и есть тот самый период, на который устанавливается курс. Т.е. выражение "курс, установленный на выходные", можно понимать так, что курс установлен в пятницу, а в следующий раз изменение курса можно ожидать не раньше понедельника ;-) Таким образом, при расчёте суммы операции надо будет определить в какой промежуток смены курсов попадает дата операции и брать действующий в этот период курс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 21:59:37 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Denis V.4 - да, на счёт таблицы Текущие курсы - это название не отражает того, что в ней находится. Да, дату я и не заметил :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2009, 23:31:25 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
господа, предлагаю разобраться во всем этом: автор1. Правильный курс валюты устанавливается не за единицу, а за некоторое количество, например: 12.3902 RUR за 1000 BYR 2. Возможно, нужно делать несколько курсов в зависимости от суммы? 3. Возможно, нужно делать кросс-курсы, типа евро-доллар? 4. Курсы устанавливаются на какой-то период, а не "текущие" это все не принципиально как думаю авторИ в таблице учёта операций нет необходимости в поле для хранения текущего курса. а текущий курс, это вообще что может быть: по ЦБРФ или по учреждению? кстати тоже думал что лишнее, а почему объяснить не могу. авторКурс -- периодические сведения, операции -- фактография. Между такими вещами связь может быть только через календарь. Реальный календарь. Физической связи такого типа в БД не предусмотрено. календарь не потребуется, на этом этапе точно. авторТаблица клиентов тоже не нужна. И данные о клиенте несколько избыточны - Фамилия, Имя, Отчество, Дата рождения, Пол, Социальное положение, Адрес, Телефон, Паспортные данные это почему же? а кто проводит операции: покупка / продужа с иностранной валютой? клиенты ведь. и почему данные избыточны по клиентам? не понимаю автор4 - да, на счёт таблицы Текущие курсы - это название не отражает того, что в ней находится. А в таблице находится динамика изменения курсов. Период между изменениями курсов - это и есть тот самый период, на который устанавливается курс. Т.е. выражение "курс, установленный на выходные", можно понимать так, что курс установлен в пятницу, а в следующий раз изменение курса можно ожидать не раньше понедельника ;-) Таким образом, при расчёте суммы операции надо будет определить в какой промежуток смены курсов попадает дата операции и брать действующий в этот период курс. не очень понимаю, почему не отражает? Начинается новый день, указывается валюта и ее расценки по ЦБРФ и учреждению. Если производится продажа покупка за какой то день (получается можно только по текущий) то берутся данные из этой таблицы теперь по поводу связей 1 : 1 между таблицей "Курс" и "Учет движения". Аксесс создает только такой вариант, 1 : М при составном ключе не получается получить. что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 18:34:55 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
убрать вообще эту связь. Убрать этот IDCourse -- зачем он нужен? Курсом валюты Х считать последний установленный курс Х с датой/временем <= текущая дата/время. Записывать при регистрации операции отдельно дату/время курса и его значение. --- Некоторые обменники уже вспомнили практику 98го и меняют курсы ЧАЩЕ чем 1 раз в сутки. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 19:05:48 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Создать БД по валютеавторТаблица клиентов тоже не нужна. И данные о клиенте несколько избыточны - Фамилия, Имя, Отчество, Дата рождения, Пол, Социальное положение, Адрес, Телефон, Паспортные данные это почему же? а кто проводит операции: покупка / продужа с иностранной валютой? клиенты ведь. и почему данные избыточны по клиентам? не понимаюТаблица не нужна, потому что оператор не будет выбирать (искать) клиентов из списка. Достаточно записывать атрибуты клиента в операции. Почему избыточны - ну зачем записывать Пол, Социальное положение, Телефон клиента??? Это какой закон или инструкция цб требует? Создать БД по валютекстати тоже думал что лишнее, а почему объяснить не могу.потому что есть ссылка на курс, при котором делалась операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 19:09:18 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
А физику вспомнить желания ни у кого не возникало? Точка движется по плоскости - две координаты: время и курс. Или должно быть в объеме? Можно точки рисовать разного цвета - чтобы отличать валюты, так сказать, - получается объем :) Все в двух таблицах: точки и валюты. Что то еще требуется от курса валют? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 20:37:25 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
авторТаблица не нужна, потому что оператор не будет выбирать (искать) клиентов из списка. Достаточно записывать атрибуты клиента в операции. Почему избыточны - ну зачем записывать Пол, Социальное положение, Телефон клиента??? Это какой закон или инструкция цб требует? совсем не обязательно. что оператор не будет выбирать что либо из справочника, поэтому таблица "Клиент" останется, тем более по ТЗ должна быть. авторпотому что есть ссылка на курс, при котором делалась операция. а какой курс считается текущим: по ЦБРФ или по учреждению? авторУбрать этот IDCourse -- зачем он нужен? согласен, теперь он не нужен, только место занимает лишнее и не функционален. а может все таки пригодится для чего либо? аналогично из таблицы "Operation" можно убрать IDoperation? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 01:42:17 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
вроде потихоньку начинаю понимать. Переделал немного структуру БД (прил. файл). С таблицами: "Client", "Operator", "typeOperation", "Currency" все понятно, это просто справочники по большому счету. С таблицей "Course" тоже более менее понятно, т е вбиваем данные за какое то число (думая что оно является текущим), указывая все курсы (по ЦБРФ и по учреждению). Первичный ключ таблицы "Course" составной (состоит из двух полей: даты и валюты (валюта - подставное поле из таблицы "Currency") ). Таблица "Operation" имеет ключевое поле и двойную связь с таблицей "Course", причем поле Operation.IDCurrency является подставным из таблицы Currency. Хотел поле DateAndTimeOperation подставить из таблицы "Course", но оказалось, что подобные поля Access 2003 запрещает подставлять, пришлось просто написать тип Даты - времени. Как понимаю поле Summa должно вводиться клиентом, т е эта та сумма в РУБЛЯХ, на которую клиент совершает продажу / покупку (например покупка Долларов на сумму в 1340 рублей или продажа евро на сумму 45 000 рублей). Т е получается когда заносится нужная запись в таблицу "Operation", нужно указать одновременно дату и валюту, принадлежащие какой либо записи в таблице "Course" иначе будет нарушение целостности. Все бы ничего, но уж больно непонятно, какие данные вбивать, т е нужно помнить наизусть записи таблицы "Course", чтобы провести операцию. Неудобно. Как можно побороть эту проблему или и так все нормально??? спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 02:20:58 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Создать БД по валюте, думается, что действия оператора при обращении клиента будут следующие (указаны основные): - указать тип валюты - указать тип операции (покупка, продажа) - указать сумму в валюте Дата и время операции - автоматически подставляется текущее (вот это слово!). Сумма в рублях, которую нужно получить с клиента или выдать клиенту в зависимости от типа операции считает система, опираясь на таблицу, в которой ведётся запись изменения курсов валют. Вот. Теперь попробуйте на основе этих действий пересмотреть связи в Вашей схеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 09:55:37 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
авторСоздать БД по валюте, думается, что действия оператора при обращении клиента будут следующие (указаны основные): - указать тип валюты - указать тип операции (покупка, продажа) - указать сумму в валюте Дата и время операции - автоматически подставляется текущее (вот это слово!). Сумма в рублях, которую нужно получить с клиента или выдать клиенту в зависимости от типа операции считает система, опираясь на таблицу, в которой ведётся запись изменения курсов валют. Вот. Теперь попробуйте на основе этих действий пересмотреть связи в Вашей схеме. т е как понимаю, нужно подставлять в поле Operation.dateAndTimeOperation текущую дату (например используя функцию now() )и это поле вообще можно сделать readOnly. Ведь не может физически человек провести операцию за вчерашний день (задним числом не учитывать), только за текущий? авторСумма в рублях, которую нужно получить с клиента или выдать клиенту в зависимости от типа операции считает система, опираясь на таблицу, в которой ведётся запись изменения курсов валют. про сумму не понял, что вы имеете ввиду. Я понимаю что сумма должна пересчитываться, но как? Я предлагал указывать сумму операции в рублях (например покупка евро на 5000 рублей), но в этом случае что нужно пересчитывать? непонятно. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 13:10:04 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
и еще такой вопрос: зачем столько курсов: по ЦБРФ и по учреждению? как понимаю все операции должны отталкиваться от курса установленным учреждением, а информация курса от ЦБРФ чисто для общего сопоставления чтоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2009, 13:11:44 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Как бывший работник Банка могу сказать что для курсов тебе вполне подойдет вот такая табла Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. В тип будет писаться продажа или покупка курс ММВБ СБРФ. в ISO будет писаться RUS LAT USD EUR и т.д datefrom и dateto дата начала действия и окончания действия. IsCurrenty можно использовать пи отборе текушего курса, но я бы отбирал все те где datefrom is null при заведении нового курса дата начала проставлять а дату окончания непроставлять. В общем есть что долби в личку или в асю на delphi есть что то подобное сейчас хочу сделать для PHP + ORACLE самые продукты для банка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2009, 16:41:40 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Создать БД по валютеи еще такой вопрос: зачем столько курсов: по ЦБРФ и по учреждению? как понимаю все операции должны отталкиваться от курса установленным учреждением, а информация курса от ЦБРФ чисто для общего сопоставления чтоли? Все операции должны отталкиваться от ЦБФР или ММВБ. все таки они тебе диктуют курс а не ты им. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2009, 16:43:01 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Данные о клиенте нужны. Но не кто операцию проводит, а с кем операция проводится. В банках при покупри свыше 500 $ или не помню в разных по разному надо заполнять ФИО и Паспорт Клиента. А если надо хранить кро заполнял то это можешь в общей таблице операция сделать поле usesr и понятно будет под кем заходили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2009, 16:47:05 |
|
||
|
спроектировать БД для учета валюты
|
|||
|---|---|---|---|
|
#18+
Создать БД по валюте как понимаю все операции должны отталкиваться от курса установленным учреждением, а информация курса от ЦБРФ Учреждения устанавливают курс согласно ЦБРФ или еще чего... А операции должны отталкиваться от того что к тебе (вам) пришел клиент общая таблица должна быть примерно след вида. Тип операции (покупка, продажа, (тип ссылка) конверсия(меняю баксы на еврики)), (тип ссылка) Дата операции, тип валюты 1 (от клиента), (тип дата время). Обрати внимание что время тоже за день может меняться курс несколько раз сумма валюты, (тип сумма) сумма эквивалента в нац валюте (вот для этого и надо курсы и все), (тип сумма) тип валюты 2 (для клиента), (тип ссылка) сумма валюты, сумма в эквивалента в нац валюте (в нашем случае в рублях), (тип сумма) кто сделал операцию, (users) клиент (ссылка) если клиент постоянный то проще выбрать из справочника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2009, 16:57:49 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35767979&tid=1543477]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
210ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 582ms |

| 0 / 0 |
